1 00:00:00,000 --> 00:00:02,570 [Powered by Google Translate] [Week 9] 2 00:00:02,570 --> 00:00:04,740 [David J. Malan - Harvard University] 3 00:00:04,740 --> 00:00:07,170 [Ez CS50. - CS50.TV] 4 00:00:07,170 --> 00:00:12,350 Rendben van. Üdv újra. Ez CS50, és ez a kezdete hét 9. 5 00:00:12,350 --> 00:00:16,600 Ma különösen a következőkre irányul design, már nem összefüggésében C 6 00:00:16,600 --> 00:00:20,010 de a kontextusában PHP és egy kis SQL és egy kis JavaScript, 7 00:00:20,010 --> 00:00:23,730 különösen a vége felé mind Pset 7 és a végleges projekt. 8 00:00:23,730 --> 00:00:26,310 Valójában, ha ezen a ponton a projekt végső 9 00:00:26,310 --> 00:00:30,100 ahol feltehetően egy órával ezelőtt, vagy ha Ön legalább kezdett, hogy néhány gondolat 10 00:00:30,100 --> 00:00:33,730 a projekt végső és gondol szeretne együttműködni 1 vagy 2 osztálytársak, 11 00:00:33,730 --> 00:00:36,150 ha sikerül összekötő említett osztálytársakkal, 12 00:00:36,150 --> 00:00:40,570 bátran töltse ki a formanyomtatványt cs50.net/partners/form. 13 00:00:40,570 --> 00:00:42,880 Ez csak megkérdezi, hogy ki vagy, hogy milyen projekt gondolkodik, 14 00:00:42,880 --> 00:00:44,870 hol laksz csak logisztikai okokból. 15 00:00:44,870 --> 00:00:49,510 És akkor, ha azt szeretnénk, hogy tartsa a szemét a következő héten, vagy úgy a táblázatkezelő URL ott, 16 00:00:49,510 --> 00:00:53,520 akkor majd megjelenik egy csak olvasható változata a Google doc 17 00:00:53,520 --> 00:00:56,010 ahol vagyunk információ begyűjtésére. 18 00:00:56,010 --> 00:00:58,930 Tehát, ha szeretne dolgozni valakivel, minden eszközzel bátran, hogy elérje az embereket 19 00:00:58,930 --> 00:01:00,480 keresztül, hogy a mechanizmus. 20 00:01:00,480 --> 00:01:02,690 De a többség az emberek munkát egyedül. Ez teljesen rendben van. 21 00:01:02,690 --> 00:01:06,120 Tehát nem érzem, hogy ez bármilyen módon kötelező. 22 00:01:06,120 --> 00:01:09,680 Pénteken csak én és néhány a csapat itt, 23 00:01:09,680 --> 00:01:11,100 üres színház a legtöbb. 24 00:01:11,100 --> 00:01:14,600 Voltak 3 turisták ült ott, úgy, hogy egy kicsit kínos. 25 00:01:14,600 --> 00:01:18,970 Mi beszéltünk volt, adatbázisok és beszélgettünk Pset 7 egy kicsit. 26 00:01:18,970 --> 00:01:22,200 És ha nem történt meg elkapni, hogy a videó csak még, ez rendben van. 27 00:01:22,200 --> 00:01:26,770 Megpróbálom meghatározni azokat a kifejezéseket, hogy mi egyébként magától értetődőnek 28 00:01:26,770 --> 00:01:28,840 alapuló pénteki előadás. 29 00:01:28,840 --> 00:01:32,550 >> De ma megpróbálom rávenni, hogy a pont 30 00:01:32,550 --> 00:01:34,990 hogy nem csak, hogy képes ilyet Pset 7 31 00:01:34,990 --> 00:01:37,360 de tényleg megértését, mi történik a motorháztető alatt, 32 00:01:37,360 --> 00:01:41,910 különösen néhány olyan absztrakciók, hogy bevezetett a functions.php fájlban 33 00:01:41,910 --> 00:01:45,780 hogy életetek egy kicsit könnyebb, de úgy, hogy végül megértsék 34 00:01:45,780 --> 00:01:48,760 hogy amikor a képzés kerekek jön le néhány hét alatt még mindig életben 35 00:01:48,760 --> 00:01:53,750 a világban, és nem ez a cucc nélkül CS50 keret alatt van. 36 00:01:53,750 --> 00:01:57,500 Ez a $ _SESSION, azok számára, akik ismerik 37 00:01:57,500 --> 00:02:01,960 vagy aki már fogott a videó pénteken, mit SESSION tegyünk 38 00:02:01,960 --> 00:02:04,330 egy PHP-alapú webes alkalmazás? 39 00:02:04,330 --> 00:02:09,650 Ez egy szuperglobális változó, amely azt jelenti, hogy hasonló szellemben a GET és POST 40 00:02:09,650 --> 00:02:13,970 és néhány más, de mi ez a dolog hasznos? 41 00:02:13,970 --> 00:02:18,320 >> Milyen SESSION esetén alkalmazható? Igen. [Hallgató] bejelentkezés 42 00:02:18,320 --> 00:02:21,040 Tessék? [Hallgató] bejelentkezés bejelentkezés Valóban. 43 00:02:21,040 --> 00:02:25,100 A Pset 7 mi ezt SESSION szuperglobális megkönnyítése bejelentkezés 44 00:02:25,100 --> 00:02:28,600 És mi a szép ebben szuperglobális, hogy ez egy asszociatív tömb. 45 00:02:28,600 --> 00:02:33,190 Egy asszociatív tömb, visszahívás, csupán egy tömb, de amelynek indexei már nem kell számot 46 00:02:33,190 --> 00:02:37,670 mint a 012. Lehetnek számokat vagy lehetnek akár szálakat. 47 00:02:37,670 --> 00:02:44,890 És ha már lebukott Pset 7 mégis, akkor emlékszem, hogy tárolja a kulcsot nevű azonosító 48 00:02:44,890 --> 00:02:50,330 belsejében asszociatív tömb, amelynek értéke valami hasonló 123 - 49 00:02:50,330 --> 00:02:53,780 függetlenül a jelenleg bejelentkezett felhasználó azonosítója. 50 00:02:53,780 --> 00:02:59,470 A motiváció az, hogy még akkor is, ha a felhasználó által meglátogatott localhost 51 00:02:59,470 --> 00:03:02,720 vagy honlapom általában, és akkor már bejelentkezett, 52 00:03:02,720 --> 00:03:07,320 még akkor is, ha azok nem kattintson egy linkre, vagy térjen vissza a honlapomon 5 percig 53 00:03:07,320 --> 00:03:10,730 vagy akár egy órát, vagy akár egy nap, de elhagyja a böngésző ablak nyitva, 54 00:03:10,730 --> 00:03:14,370 ezen keresztül szuperglobális is emlékszem, hogy azokat bejelentkezett 55 00:03:14,370 --> 00:03:21,140 >> Más szavakkal, lehetővé teszi, hogy a hosszú távú tárolására kissé bármit szeretnék egy felhasználó. 56 00:03:21,140 --> 00:03:24,390 És azt lehet gondolni, hogy tényleg, mint a megtestesülése a bevásárló kosárba. 57 00:03:24,390 --> 00:03:27,740 Helyek, mint az Amazon nyilvánvalóan segítségével tegyük a dolgokat egy bevásárlókocsi, 58 00:03:27,740 --> 00:03:32,230 de a HTTP, a protokoll, hogy a hatáskörök az interneten, a hontalan 59 00:03:32,230 --> 00:03:34,230 abban az értelemben, hogy amikor meglátogat egy honlapot, 60 00:03:34,230 --> 00:03:37,290 a legtöbb nem rendelkezik valamilyen állandó hálózati kapcsolattal 61 00:03:37,290 --> 00:03:39,270 a böngésző és a szerver. 62 00:03:39,270 --> 00:03:42,190 Amint már letöltötte a HTML és a JPEG és a GIF-ek, meg minden, 63 00:03:42,190 --> 00:03:48,200 A kapcsolat megy el, és csak egy példányt a HTML és miegymás a szerverről. 64 00:03:48,200 --> 00:03:53,000 De ha a szerver akar emlékezni valamit rólad, 65 00:03:53,000 --> 00:03:57,580 a teher a szerver, hogy ténylegesen rögzíti ezt az információt. 66 00:03:57,580 --> 00:04:00,130 És így a programozó, aki ellenőrzése alatt a kiszolgáló 67 00:04:00,130 --> 00:04:04,400 nem tud a legtöbb, amit akarsz belsejében szuperglobális asszociatív tömb 68 00:04:04,400 --> 00:04:06,850 és ott lesz a következő alkalommal a felhasználó jön vissza, 69 00:04:06,850 --> 00:04:12,070 hogy ez percig, vagy akár nap múlva, hacsak nem zárja be a böngészőablakot, 70 00:04:12,070 --> 00:04:14,360 ekkor SESSION eltűnik. 71 00:04:14,360 --> 00:04:17,779 Szóval ez efemer tárolás, ez nem tartós, és ez azt jelentette, hogy menjen el 72 00:04:17,779 --> 00:04:22,360 amint a felhasználó bezárja a böngésző - nem csak, hogy a lapon, és gyakran az egész böngésző, 73 00:04:22,360 --> 00:04:24,930 ezáltal hatékonyan fakitermelés a felhasználó ki. 74 00:04:24,930 --> 00:04:28,000 Hogy van ez a dolog, amit ténylegesen végrehajtsák? 75 00:04:28,000 --> 00:04:31,360 Vessünk egy gyors pillantást egy egyszerű példát néztük pénteken. 76 00:04:31,360 --> 00:04:33,340 Azok számára ismeretlen volt olyan egyszerű, mint ez. 77 00:04:33,340 --> 00:04:35,910 Ez egy olyan weboldal, amelynek egyetlen célja az életben, hogy elmondja nekem 78 00:04:35,910 --> 00:04:38,000 hányszor jártam ezen az oldalon. 79 00:04:38,000 --> 00:04:41,670 Ez az első alkalom, hogy itt hétfőn jártam, tehát azt mondja 0 alkalommal. 80 00:04:41,670 --> 00:04:46,940 >> De ha elkezdek újratöltése ezen az oldalon, azt mondja 1 alkalommal, 2, 3, 4, 5, 81 00:04:46,940 --> 00:04:49,800 és ez végül csak tartani a számlálás fel, fel, fel, fel, fel 82 00:04:49,800 --> 00:04:53,130 Minden egyes alkalommal, amikor ténylegesen kattintson újratöltése rajta. 83 00:04:53,130 --> 00:04:58,830 Hogy ez a munka? Hadd menjek belül a fájl neve counter.php. 84 00:04:58,830 --> 00:05:02,490 A felső része ez az egész kék, megjegyzés, de az érdekes része itt van. 85 00:05:02,490 --> 00:05:06,670 On line 13 hívjuk ezt a funkciót session_start, 86 00:05:06,670 --> 00:05:09,600 és ez szó szerint csak annyit kell tennie, ha azt szeretné, hogy a hozzáférési 87 00:05:09,600 --> 00:05:13,610 Ennek a különleges szuperglobális $ _SESSION nevezett. 88 00:05:13,610 --> 00:05:17,430 Ez teszi minden lehetséges, és majd meglátjuk, egy pillanat, hogy ez minden lehetséges. 89 00:05:17,430 --> 00:05:20,350 Összhangban 16 értesítésben, hogy mit csinálok. 90 00:05:20,350 --> 00:05:25,960 Ha a kulcs, az úgynevezett számláló - más szóval, az index érték - "számláló" 91 00:05:25,960 --> 00:05:32,310 létezik belsejében nevű tömböt SESSION, akkor mit csinálok vele a sorral lejjebb? 92 00:05:32,310 --> 00:05:36,650 Mit 18. sor csinál? 93 00:05:36,650 --> 00:05:40,360 >> [Hallhatatlan diák válasza] Mi ez? [Hallgató] tárolása az értéket. Jó. 94 00:05:40,360 --> 00:05:45,800 Ez tárolja az értéket, ami a SESSION most egy új helyi ideiglenes változó, 95 00:05:45,800 --> 00:05:48,250 $ Számláló csupa kisbetűvel. 96 00:05:48,250 --> 00:05:50,770 Figyeljük meg, hogy a PHP már egy kicsit lusta itt. 97 00:05:50,770 --> 00:05:55,550 Figyeljük nincs semmilyen említést int vagy float vagy string vagy ilyesmi 98 00:05:55,550 --> 00:06:00,480 mert a PHP gyengén gépelt, ahol nem kell meghatározni a változó típusát, 99 00:06:00,480 --> 00:06:03,310 és ebben az esetben van, amit nem is kijelentette, hogy még. 100 00:06:03,310 --> 00:06:08,980 Én kimondó belül e kapcsos zárójelek és ellentétben a C, ez valójában rendben. 101 00:06:08,980 --> 00:06:13,800 Nem számít, milyen mélyen beágyazott a változó nyilatkozat PHP - 102 00:06:13,800 --> 00:06:16,650 belül kapcsos zárójel, belül kapcsos zárójel és hasonlók - 103 00:06:16,650 --> 00:06:21,230 akkor ebben a pillanatban időben léteznek a hátralévő a program, 104 00:06:21,230 --> 00:06:22,680 jobb vagy rosszabb. 105 00:06:22,680 --> 00:06:26,930 Így azonnal globálissá válik, amint meg azt csinálunk itt. 106 00:06:26,930 --> 00:06:31,620 >> Egyébként, ha nem találom, hogy van valami a SESSION szuperglobális, 107 00:06:31,620 --> 00:06:34,680 Én nyilvánvalóan inicializálás ezt a változót számláló 0-ra, 108 00:06:34,680 --> 00:06:37,580 ezzel csak feltételezve, hogy a felhasználó még soha nem volt itt korábban. 109 00:06:37,580 --> 00:06:40,030 És akkor ez a tanfolyam növelésével a számláló hogyan? 110 00:06:40,030 --> 00:06:44,480 Én frissítéséről érték van benne e asszociatív tömb 111 00:06:44,480 --> 00:06:49,530 azáltal, hogy egyenlő bármi ellen jelenleg + 1. 112 00:06:49,530 --> 00:06:53,520 Ha lapozzunk le ide, hogy a HTML az oldal, ez valóban nagyon egyszerű. 113 00:06:53,520 --> 00:06:58,920 Csak annyit, hogy a szervezetben az ezen az oldalon: "Ön felkereste ezt a webhelyet, így-és-ez alkalommal." 114 00:06:58,920 --> 00:07:00,350 És ez egy PHP konstrukció. 115 00:07:00,350 --> 00:07:06,080 Ha ezt: 00:07:12,600 Ez tényleg megfelel valami hasonló printf, amit láttam sokszor C, 117 00:07:12,600 --> 00:07:15,940 de mint Ön is tudja már a specifikáció Pset 7, 118 00:07:15,940 --> 00:07:20,160 print is függvénye, hogy csak kiírja valamit, valójában nem használható formában kódok, 119 00:07:20,160 --> 00:07:23,270 és akkor tulajdonképpen mondani echo is. 120 00:07:23,270 --> 00:07:27,460 Mindannyian alig észrevehetően eltérő bár a nettó hatás végső soron ugyanaz. 121 00:07:27,460 --> 00:07:31,270 Szóval ez a használat az egyenlőségjel csak egyfajta elegáns módja, hogy 122 00:07:31,270 --> 00:07:34,910 több tömören, mint egyébként képes. 123 00:07:34,910 --> 00:07:38,370 Szóval ez az egész oldalon nem. Ez kiírja a számláló értéke. 124 00:07:38,370 --> 00:07:40,550 Hogy ez az egész valójában történik? 125 00:07:40,550 --> 00:07:43,250 Talán emlékeznek egy hét múlva ezelőtt elkezdtem keresni a motorháztető alatt 126 00:07:43,250 --> 00:07:47,910 hogy milyen a weboldal működik használatával Inspector lapon. 127 00:07:47,910 --> 00:07:51,900 >> Chrome van ez mind a Mac verzió, a Windows verzió, és még a Linux változat, 128 00:07:51,900 --> 00:07:59,510 és a Firefox és az IE hasonló mechanizmusokat, amelyek által van ez a beépített debugger 129 00:07:59,510 --> 00:08:01,400 belül a böngészőt. 130 00:08:01,400 --> 00:08:03,040 Vessünk egy pillantást a következő. 131 00:08:03,040 --> 00:08:06,960 Van egy csomó tabok itt, és emlékeztetnek arra, hogy a bal oldali egyik Elements, 132 00:08:06,960 --> 00:08:10,700 és nem számít, mennyire godawful a HTML és JavaScript van egy oldal, 133 00:08:10,700 --> 00:08:15,710 Emlékeztetek arra, hogy az Elements fülön ténylegesen navigálni a HTML hierarchikusan 134 00:08:15,710 --> 00:08:17,050 és szép és szépen. 135 00:08:17,050 --> 00:08:19,370 Szóval, ha akarsz tanulni a honlapon, mint a Google vagy a Facebook 136 00:08:19,370 --> 00:08:22,370 vagy tényleg olyan website, rájönnek, hogy akkor valószínűleg jobb 137 00:08:22,370 --> 00:08:26,360 nézi a forráskódot ezzel szemben megtekinti a nyers forrás, 138 00:08:26,360 --> 00:08:29,580 amely lehet a rendetlenség, mint láttuk, különösen a Google honlapján. 139 00:08:29,580 --> 00:08:32,220 Szóval, ha ehelyett kattintson a Network fülre itt, 140 00:08:32,220 --> 00:08:34,830 lássuk, mi történik, amikor el erre az oldalra. 141 00:08:34,830 --> 00:08:38,669 Először is hadd törölje a cache. 142 00:08:38,669 --> 00:08:43,570 Fogok belemenni Beállítások Chrome, és aztán megy History 143 00:08:43,570 --> 00:08:46,420 majd az Összes törlése böngészési adatokat. 144 00:08:46,420 --> 00:08:48,170 Lehet használni ezt más célokra, [nevetés] 145 00:08:48,170 --> 00:08:51,990 de amikor a fejlődő honlapok, ez valóban hasznos - 146 00:08:51,990 --> 00:08:55,980 ha nevetsz tudod. [Nevetés] 147 00:08:55,980 --> 00:08:59,310 Ez tényleg nagyon hasznos lehet, ha a fejlődő honlapok, mert a valóság 148 00:08:59,310 --> 00:09:04,100 dolgok, mint a sütik és a dolgok, mint a tárolt HTML fájlok, JavaScript fájlok gyorsítótárban 149 00:09:04,100 --> 00:09:06,390 ténylegesen válhat egy nagy fejfájást, mert ha bármilyen okból 150 00:09:06,390 --> 00:09:11,500 A böngésző úgy dönt, hogy néhány cache fájlt, és mégis, amit tett módosításokat, hogy a fájl a szerveren 151 00:09:11,500 --> 00:09:14,670 de a böngésző nem igazán felismerte, hogy a fájl változott 152 00:09:14,670 --> 00:09:19,060 és ezért valójában nem újra letölteni akkor is, ha rákattint a Reload gombra, 153 00:09:19,060 --> 00:09:23,210 az egyik surefire módja csak győződjön meg róla, hogy a hiba nem az Ön kódot, 154 00:09:23,210 --> 00:09:26,480 ez a viselkedés a böngésző, hogy megy itt az Ön böngészőjében 155 00:09:26,480 --> 00:09:29,950 és csak törölje a teljes történetét, így nincs zavar. 156 00:09:29,950 --> 00:09:33,210 >> És ha igazán akar lenni paranoid, lépjen ki a böngésző, indítsa újra azt, 157 00:09:33,210 --> 00:09:35,660 majd győződjön meg arról, hogy minden megfelelően működik. 158 00:09:35,660 --> 00:09:38,820 Tehát röviden, a gyorsítótár ürítése jó, ha csinál fejlődését. 159 00:09:38,820 --> 00:09:40,690 Tehát itt van a Network fülre. 160 00:09:40,690 --> 00:09:46,020 Én korábban már járt a helyszínen 9-szer, de hadd menjen előre, és most kattintson a Reload. 161 00:09:46,020 --> 00:09:47,500 És én vissza 0-ra. 162 00:09:47,500 --> 00:09:52,100 Nézzük valóban látni, hogy van ez, hogy a SESSION szuperglobális hajtják végre. 163 00:09:52,100 --> 00:09:55,990 Megyek, hogy kattintson az 1 HTTP kérés, hogy történt, 164 00:09:55,990 --> 00:09:58,810 és ez a hibakereső ablakban nézzem belül ezt. 165 00:09:58,810 --> 00:10:01,970 Itt látom, csak a választ a szerver, ami nem érdekes. 166 00:10:01,970 --> 00:10:04,030 Láttam ezt a tetszőleges számú módon. 167 00:10:04,030 --> 00:10:06,350 De mi technikailag érdekes a fejléceket. 168 00:10:06,350 --> 00:10:11,770 Ha lapozzunk le ide, és elsősorban a kérés fejlécet, és kattintson view source, 169 00:10:11,770 --> 00:10:14,400 mit fogok látni, hogy szó szerint a HTTP-kérelem 170 00:10:14,400 --> 00:10:17,250 hogy csak ment a böngésző, hogy a szerver, 171 00:10:17,250 --> 00:10:21,400 GET, hogy az operatív szó, majd a / counter.php hogy a fájl nevét, 172 00:10:21,400 --> 00:10:25,670 HTTP/1.1 csak, hogy a változat, hogy az én HTTP böngésző segítségével. 173 00:10:25,670 --> 00:10:31,070 Ez a vonal itt egy kis emlékeztető a böngésző a szerver, mi a neve a szerver 174 00:10:31,070 --> 00:10:33,020 , hogy beszélni akar. 175 00:10:33,020 --> 00:10:38,200 És akkor a többi ezt néha érdekes, de nem lényeges most. 176 00:10:38,200 --> 00:10:40,090 >> Ez csak egyfajta kíváncsiság. 177 00:10:40,090 --> 00:10:43,530 Cryptic bár ez húr, bármikor a böngésző meglátogat egy weboldalt 178 00:10:43,530 --> 00:10:47,110 akkor tájékoztatja a szerver, amit Ön által használt böngésző 179 00:10:47,110 --> 00:10:50,040 és milyen operációs rendszert, amit használ, és milyen verziót cikke. 180 00:10:50,040 --> 00:10:52,650 Szóval, ha valaha is azon, hogyan weboldalak, mint a CNN és ​​miegymás 181 00:10:52,650 --> 00:10:56,860 tudom, mi a százalékok a Mac-felhasználók a weben, PC felhasználók számára, 182 00:10:56,860 --> 00:11:00,820 IE felhasználóknak, Chrome felhasználók és hasonlók, ez azért van, mert minden a mi böngésző 183 00:11:00,820 --> 00:11:04,300 azt mondják minden egyes weboldal odakint, amik vagyunk. 184 00:11:04,300 --> 00:11:07,410 Ez nem feltétlenül tartalmaz személyazonosításra alkalmas adatokat, 185 00:11:07,410 --> 00:11:13,060 de ez nem mond a szerver milyen IP-címe, és milyen böngészőt és operációs rendszer használ. 186 00:11:13,060 --> 00:11:14,720 Szóval, ez az, ahol ez az információ. 187 00:11:14,720 --> 00:11:19,960 De mi még érdekesebb most, amikor ezek a megbeszélések a válasz fejlécében. 188 00:11:19,960 --> 00:11:22,530 Hadd kattintson többet forrás mellett választ. 189 00:11:22,530 --> 00:11:24,590 Milyen érdekes, itt van egy pár dolgot. 190 00:11:24,590 --> 00:11:27,580 1, akkor jöttem vissza a status kód 200. 191 00:11:27,580 --> 00:11:29,840 Mi soha nem látni ezt a helyzetet kódot, mert azt jelenti, hogy minden rendben van. 192 00:11:29,840 --> 00:11:32,920 Ez azt jelenti, szó szerint rendben szemben valami mást. 193 00:11:32,920 --> 00:11:36,380 Mi több, néha látni, hogy ez rossz? [Hallgató] 404. 194 00:11:36,380 --> 00:11:39,860 404, a fájl nem található, 403 lehet, botladozó után már, 195 00:11:39,860 --> 00:11:43,660 ami tilos, ami azt jelenti, hogy elfelejtett chmod valamit, valószínűleg. 196 00:11:43,660 --> 00:11:45,190 És van egy csomó más. 197 00:11:45,190 --> 00:11:47,760 >> Itt lent, ez egy kicsit őrült. 198 00:11:47,760 --> 00:11:52,340 Én tényleg csak írtam ezt a fájlt, néhány perccel ezelőtt a beilleszteni gedit. 199 00:11:52,340 --> 00:11:57,100 Miért ezt az oldalt lejár 1981-ben, mielőtt valóban volt egy Web? 200 00:11:58,010 --> 00:12:00,730 Mi folyik ott? 201 00:12:00,730 --> 00:12:04,390 >> [Hallhatatlan diák válaszidő] Az időbélyeg. De miért? 202 00:12:06,110 --> 00:12:09,120 Ez kissé önkényes, de ez tényleg hasznos. 203 00:12:09,120 --> 00:12:15,500 Mi ez azt mondja, hogy a böngésző ez a PHP fájlt, amit csak kért már lejárt. 204 00:12:15,500 --> 00:12:18,580 Tény, hogy 30 évvel ezelőtt lejárt. 205 00:12:18,580 --> 00:12:20,260 De mit jelent ez valójában? 206 00:12:20,260 --> 00:12:22,500 Ez csak azt jelenti, a következő alkalommal, amikor a felhasználó meglátogatja ezt az oldalt, 207 00:12:22,500 --> 00:12:25,540 akár ismételt berakás vagy beírja az URL-t a címsorba, 208 00:12:25,540 --> 00:12:28,010 győződjön meg róla, menj és hozz egy új másolatát. 209 00:12:28,010 --> 00:12:30,840 Ez egyfajta példája cache busting, 210 00:12:30,840 --> 00:12:33,790 egy hülye szó, csak azt próbálja kedvét böngészők 211 00:12:33,790 --> 00:12:37,260 származó ténylegesen cache HTML, hogy a már küldött a kiszolgáló 212 00:12:37,260 --> 00:12:41,490 úgy, hogy nem véletlenül sújtotta reload majd látni ugyanazt a verzióját a fájlt. 213 00:12:41,490 --> 00:12:43,730 Te tényleg akarjuk, hogy a szerver küld egy új példányt. 214 00:12:43,730 --> 00:12:47,440 Így a tény, hogy 1981-es csak azt jelenti, hogy az, amit a készülék választja 215 00:12:47,440 --> 00:12:50,280 mint egy önkényes időpont a múltban. 216 00:12:50,280 --> 00:12:53,380 De az igazi szaftos vonal most ez. 217 00:12:53,380 --> 00:12:57,550 Még mielőtt 50 akkor valószínűleg halványan ismerős cookie-kat. 218 00:12:57,550 --> 00:13:01,820 Ahogy a most, különösen a kevésbé kényelmes, vagy a kettő között, 219 00:13:01,820 --> 00:13:04,120 ami egy cookie-t a megértést most 220 00:13:04,120 --> 00:13:06,980 noha vagyunk arról, hogy a megértés több technikai? 221 00:13:08,150 --> 00:13:10,070 Mi az a cookie? Igen. 222 00:13:10,070 --> 00:13:13,890 [Hallgató] Információk a felhasználó számára, mint ha már írva a felhasználói nevet, vagy valami. 223 00:13:13,890 --> 00:13:17,370 >> Jó. Ez az információ a felhasználó számára, függetlenül attól, hogy írtad a saját felhasználói nevét már. 224 00:13:17,370 --> 00:13:21,190 A cookie-k olyan módon, amellyel szerverrel tud emlékezni valamit a felhasználó. 225 00:13:21,190 --> 00:13:25,810 És mi a cookie valójában egy szöveges fájl, vagy valamilyen bájtok sorozata 226 00:13:25,810 --> 00:13:28,340 ez által ültetett a szerver belül Ön böngészőjében, 227 00:13:28,340 --> 00:13:31,960 és belül, hogy a fájl vagy azok közül bytes valamiféle azonosító. 228 00:13:31,960 --> 00:13:35,640 Talán ez a szó szoros értelmében a felhasználó nevét, de gyakrabban ez valami rejtélyes külsejű 229 00:13:35,640 --> 00:13:43,700 mint ez a dolog itt - bo8dal3ct és így tovább - ez igazán nagy alfanumerikus karakterlánc 230 00:13:43,700 --> 00:13:47,050 ez tényleg csak azt jelentette, hogy egy egyedi azonosítót az Ön számára. 231 00:13:47,050 --> 00:13:49,790 Vagy lehet gondolni rá, mint egyfajta virtuális kéz bélyegző. 232 00:13:49,790 --> 00:13:53,020 Ha megy valami klubban vagy egy vidámpark, hogy ne feledje, hogy amit ténylegesen kifizetett 233 00:13:53,020 --> 00:13:55,850 és ment be, raktak egy kis piros matrica a kezed valamilyen, 234 00:13:55,850 --> 00:13:59,270 és emlékezteti az emberek a pultnál, hogy a már kifizetett 235 00:13:59,270 --> 00:14:01,340 és akkor jön és megy, ahogy tetszik. 236 00:14:01,340 --> 00:14:04,250 A cookie-k egy kicsit hasonló szellemben erre. 237 00:14:04,250 --> 00:14:08,070 Amikor először jártam ezen a honlapon, mint én csináltam törlése után a cache, 238 00:14:08,070 --> 00:14:11,620 a web szerver, a készülék ebben az esetben, hogy egy bélyeg a kezem 239 00:14:11,620 --> 00:14:15,030 akinek a neve PHPSESSID, session ID, 240 00:14:15,030 --> 00:14:18,260 amelynek értéke a nagyon hosszú alfanumerikus karakterlánc. 241 00:14:18,260 --> 00:14:22,470 >> Szóval ez most valami emblazoned a kezem, hogy a következő alkalommal, amikor megüt újra 242 00:14:22,470 --> 00:14:25,230 vagy manuálisan látogasson el ezt az URL a böngészőben, 243 00:14:25,230 --> 00:14:29,230 a böngésző definíció szerint a HTTP fog bemutatni a pecsét 244 00:14:29,230 --> 00:14:31,940 újra és újra és újra. 245 00:14:31,940 --> 00:14:34,550 Így annak ellenére, hogy a kiszolgáló nem feltétlenül tudja, hogy ki vagyok, 246 00:14:34,550 --> 00:14:39,610 ők legalább tudják, hogy én vagyok az ugyanaz a felhasználó, vagy legalábbis, pontosabban az azonos böngészőt. 247 00:14:39,610 --> 00:14:45,660 És ez végül is hogyan SESSION szuperglobális végrehajtását. 248 00:14:45,660 --> 00:14:51,200 A szerver nem tudja, hogy ki vagy, ha újra egy honlapot a második vagy a harmadik alkalommal 249 00:14:51,200 --> 00:14:53,410 kivéve, ha ezt az pecsét. 250 00:14:53,410 --> 00:14:55,530 És amint bemutatja, hogy a kéz bélyeg, 251 00:14:55,530 --> 00:14:59,370 a web szerver lényegében bemegy egy kis adatbázis saját 252 00:14:59,370 --> 00:15:06,040 és ellenőrzéseket, oké, én most láttam a pecsét, a felhasználó bo8dal3ct és így tovább. 253 00:15:06,040 --> 00:15:09,850 Hadd lássam milyen információt a programozó tárolt 254 00:15:09,850 --> 00:15:12,380 belül a szuperglobális erről a felhasználót 255 00:15:12,380 --> 00:15:17,000 aztán hadd győződjön meg arról, hogy az adatok ismét belsejében SESSION szuperglobális 256 00:15:17,000 --> 00:15:19,830 annak érdekében, hogy a programozó újra elérheti, hogy az adatokat 257 00:15:19,830 --> 00:15:23,360 még ha úgy is meg néhány perc vagy óra. 258 00:15:23,360 --> 00:15:26,150 Más szóval, a cookie-kat, amely kapott egy rossz rap egy ideig 259 00:15:26,150 --> 00:15:29,990 mert a bizonytalanság a böngészők és azok valóban megsértik a magánélet és mindezt 260 00:15:29,990 --> 00:15:31,900 valójában nagyszerű segédprogramot, mert ezek nélkül 261 00:15:31,900 --> 00:15:36,110 akkor folyamatosan lehet bejelentkezni minden Facebook meglátogatott oldal 262 00:15:36,110 --> 00:15:40,680 vagy minden Gmail e-mailt olvasni, ha a böngésző nem volt valamilyen módon az emlékezés 263 00:15:40,680 --> 00:15:43,320 hogy a már hitelesített. 264 00:15:43,320 --> 00:15:46,640 >> Tehát ily módon cookie-kat küldeni oda-vissza az egész vezetéket. 265 00:15:46,640 --> 00:15:52,470 Másik érdekessége a cookie-kat, különösen itt, az, hogy ez teljesen kikerültek. 266 00:15:52,470 --> 00:15:54,930 Nincs titkosítás folyik itt egyáltalán, 267 00:15:54,930 --> 00:15:57,240 és valóban én vagyok a HTTP abban a pillanatban. 268 00:15:57,240 --> 00:16:00,890 Az egyik kedvencünk pillanatok CS50, amely jelenleg 2 évvel ezelőtt, 269 00:16:00,890 --> 00:16:04,750 volt, körülbelül abban az időben egy szerszám hívott Firesheep jött ki. 270 00:16:04,750 --> 00:16:08,320 Ez egy szabad szoftver, hogy történt egy biztonsági kutató 271 00:16:08,320 --> 00:16:13,250 mint egy ébresztő a közösség azt mondani, hogy mennyire atrociously végre 272 00:16:13,250 --> 00:16:17,900 egyes hitelesítési mechanizmusok a világhálón voltak. 273 00:16:17,900 --> 00:16:22,880 Így egy ideig, a Facebook már majdnem teljesen HTTP, HTTPS nincs. 274 00:16:22,880 --> 00:16:25,640 És akkor is, ha fogalma sincs, hogyan működik a crypto, S biztonságos 275 00:16:25,640 --> 00:16:27,950 így ez azt jelenti, hogy ez legalább néhány titkosítási szó. 276 00:16:27,950 --> 00:16:30,610 Facebook nem titkosítására használt felhasználói nevek és jelszavak, 277 00:16:30,610 --> 00:16:33,560 de amint néztél meg pokes vagy az üzeneteket, vagy a news feed, 278 00:16:33,560 --> 00:16:35,360 minden, amit nem titkosított. 279 00:16:35,360 --> 00:16:37,870 Így volt Gmail, amíg csak egy évvel vagy 2 napja. 280 00:16:37,870 --> 00:16:41,100 Minden alkalommal, amikor bejelentkezett, igen, ők használják a biztonságos titkosítás, 281 00:16:41,100 --> 00:16:44,300 de ezt követően nem. És miért lenne az? 282 00:16:44,300 --> 00:16:49,210 Miért nem csak használja kriptográfia minden alkalommal használati esetek, mint ez? 283 00:16:49,210 --> 00:16:53,700 Mi ez? Azt hiszem, hallottam valamit. [Hallgató] Speed. 284 00:16:53,700 --> 00:16:56,250 Speed, ugye? Vannak módszerek körül ez. 285 00:16:56,250 --> 00:16:59,610 De ha csak ilyen belegondolsz logikusan, ha titkosítani valamit, 286 00:16:59,610 --> 00:17:01,820 meg kell csinálni, legalább egy kicsit több munka. 287 00:17:01,820 --> 00:17:05,460 A Pset 2 Amikor végre Caesar vagy Vigenère sőt Crack, 288 00:17:05,460 --> 00:17:07,760 Csak nyomtatás egy string viszonylag egyszerű. 289 00:17:07,760 --> 00:17:12,040 Titkosítása, majd a nyomtatás egy string minimálisan igényel egy kicsit több munkával. 290 00:17:12,040 --> 00:17:14,520 >>  A szuper népszerű weboldalak, mint a Google és a Facebook, 291 00:17:14,520 --> 00:17:18,839 ha kell több munkát minden egyes felhasználó minden egyes weboldalt látogatnak, 292 00:17:18,839 --> 00:17:20,520 hogy csak úgy több CPU időt. 293 00:17:20,520 --> 00:17:22,920 És ha kell több CPU időt, akkor szükség lehet több kiszolgálót, 294 00:17:22,920 --> 00:17:24,270 ami azt jelenti, amire szüksége lehet több pénzt. 295 00:17:24,270 --> 00:17:27,579 És sok évig ez így tényleg nem volt a legjobb gyakorlatot. 296 00:17:27,579 --> 00:17:31,440 Az emberek SSL titkosítás csak akkor, ha szükséges. 297 00:17:31,440 --> 00:17:34,960 De kiderült, és ahogy ez a fickó a Firesheep készült szuper világos, 298 00:17:34,960 --> 00:17:37,920 amikor a srácok, akik jelenleg a Facebook most - 299 00:17:37,920 --> 00:17:39,880 Elfogyott a kíváncsiság, lássuk akkor fess fel. 300 00:17:39,880 --> 00:17:42,620 Ha a Facebook-on most néhány lapon, még ha ez nem előtérbe, 301 00:17:42,620 --> 00:17:46,610 Az Ön URL HTTP vagy HTTPS? 302 00:17:46,610 --> 00:17:50,560 [Több diák] S. S? [Nevetés] 303 00:17:50,560 --> 00:17:55,510 Oké. Bármely HTTP? Csak 1? Oké. 304 00:17:55,510 --> 00:17:58,940 Szóval mindannyian csapkod a fickó Facebook fiókot most. 305 00:17:58,940 --> 00:18:04,100 Az esetek többségében ez vált be van kapcsolva alapértelmezés szerint legalábbis bizonyos weboldalak. 306 00:18:04,100 --> 00:18:08,120 És a hosszú történet rövid, ha a web forgalom nincs titkosítva, 307 00:18:08,120 --> 00:18:12,960 nem csak a HTML megy oda-vissza az egész WiFis titkosított, 308 00:18:12,960 --> 00:18:16,760 úgyhogy ne dolgokat, mint a cookie-kat menjen vissza oda az egész légi 309 00:18:16,760 --> 00:18:18,940 anélkül, hogy bármilyen titkosítást. 310 00:18:18,940 --> 00:18:23,540 Tehát, ha csak egy kicsit a programozás értő, vagy egy kicsit Googling készségek 311 00:18:23,540 --> 00:18:27,410 találni ingyenes szoftver, amely működik ez, csak annyit kell tennie, hogy ülni Starbucks 312 00:18:27,410 --> 00:18:30,680 vagy üljön a repülőtéren, ahol az általánosan titkosítatlan WiFi 313 00:18:30,680 --> 00:18:36,070 és csak nézni a kulcsszavak, mint a Set-Cookie: vagy PHPSESSID 314 00:18:36,070 --> 00:18:39,300 mert ha megvan a műszaki hozzáértés, hogy csak nézni a WiFi 315 00:18:39,300 --> 00:18:43,010 az összes a bitek áramló levegő ezt a mintát, 316 00:18:43,010 --> 00:18:50,840 akkor majd azt mondják, hogy a srác PHPSESSID történetesen bo8dal és így tovább. 317 00:18:50,840 --> 00:18:53,890 És aztán újra, ha te elég technikailag hozzáértés, vagy a megfelelő eszközt, 318 00:18:53,890 --> 00:18:58,890 akkor majd csak állítanod a saját böngészőjében kezdeni bemutatására, hogy a pecsét 319 00:18:58,890 --> 00:19:05,030 A Facebook.com, és a Facebook csak megy azt feltételezni, hogy te vagy az a srác 320 00:19:05,030 --> 00:19:09,880 mert tudják, hogy nem az, akinek te vagy, hanem, hogy van ez az egyedülálló azonosítót. 321 00:19:09,880 --> 00:19:14,650 Tehát, ha lopni, hogy egyedi azonosítót, és azt bemutatja a web szerver, mint a saját, 322 00:19:14,650 --> 00:19:16,860 ők csak megy, hogy mutassa meg, hogy a személy hírcsatorna 323 00:19:16,860 --> 00:19:18,980 vagy az adott személy üzeneteket vagy pokes. 324 00:19:18,980 --> 00:19:23,190 >> És szeretném Google most hogyan aktiválhatja HTTPS for Facebook talán. 325 00:19:23,190 --> 00:19:25,150 De ez tényleg ilyen egyszerű. 326 00:19:25,150 --> 00:19:27,660 És így a Facebook és a Google-on és a hasonló ütött nagyon jó ebben, 327 00:19:27,660 --> 00:19:31,870 de tartsd szem ki annál minden meglátogatott webhelyek, amelyek nem használják a HTTP 328 00:19:31,870 --> 00:19:35,020 és valamilyen érzékeny információk rájuk, 329 00:19:35,020 --> 00:19:37,490 legyen az pénzügyi vagy személyi vagy a hasonlók. 330 00:19:37,490 --> 00:19:43,180 Ha nem használja ezt, akkor nagy valószínűséggel a cookie-kat, mint ez is nagyon könnyen lopott 331 00:19:43,180 --> 00:19:46,270 majd kovácsolt, és ez pontosan Firesheep tette. 332 00:19:46,270 --> 00:19:48,250 Nem kell, hogy programozó. 333 00:19:48,250 --> 00:19:51,680 Csak annyit kellett tennie, hogy rendelkezik internetkapcsolattal, töltse le ezt az ingyenes eszközt, 334 00:19:51,680 --> 00:19:56,490 és mit fog tenni a te bejelentkezel, és akkor ez megmutatja a Facebook nevek 335 00:19:56,490 --> 00:20:00,170 A mindenki Sanders, ebben a különleges bemutató, körül 336 00:20:00,170 --> 00:20:03,260 és csak annyit kellett tennem, hogy kattintson a nevüket és a szoftver automatikus a folyamat 337 00:20:03,260 --> 00:20:05,970 A szippantás, hogy a cookie-k, bemutatva, hogy a Facebook, mint a saját, 338 00:20:05,970 --> 00:20:07,990 és íme, te léptél be 339 00:20:07,990 --> 00:20:11,190 Szóval ez egy másik ilyen "ne tedd ezt" hivatalosan. 340 00:20:11,190 --> 00:20:14,660 Ha van saját otthoni hálózatot, és azt szeretnénk, hogy bütykölni, minden eszközzel, 341 00:20:14,660 --> 00:20:17,530 de észre ezt nem átlépni a vonalat egy egyetemi környezetben. 342 00:20:17,530 --> 00:20:20,030 >> De a cél itt az, tényleg hangsúlyozni nem, hogyan kell ezt csinálni 343 00:20:20,030 --> 00:20:22,320 de hogyan kell megvédeni ezeket a dolgokat. 344 00:20:22,320 --> 00:20:26,180 És a triviális megoldás van, annak ellenére, hogy maga is hibás, 345 00:20:26,180 --> 00:20:31,360 az, hogy valóban csökkenteni használatát a webhelyek nem használ HTTPS folyamatosan. 346 00:20:31,360 --> 00:20:34,520 Szóval oldalak, mint a Facebook és a Google egyre inkább jelölőnégyzetek 347 00:20:34,520 --> 00:20:36,200 ahol úgy döntenek, hogy ez a fajta dolog, 348 00:20:36,200 --> 00:20:40,000 és a bankok is volt ez évek hasonló okok miatt. 349 00:20:40,000 --> 00:20:43,580 Szóval egy kicsit a félelem faktor, ha tudunk. De ennyi dióhéjban. 350 00:20:43,580 --> 00:20:46,420 Így a szerver emlékszik, hogy ki vagy. 351 00:20:46,420 --> 00:20:50,760 És amint tudnak emlékezni, hogy ki vagy, akkor emlékszem semmire rólad 352 00:20:50,760 --> 00:20:56,140 hogy a programozó tárolt e különös szuperglobális $ _SESSION nevezett. 353 00:20:56,140 --> 00:20:59,750 És Pset 7 mi használjuk triviálisan csak emlékezni egy int, 354 00:20:59,750 --> 00:21:02,260 nevezetesen az egyedi azonosítója a felhasználó, aki bejelentkezett, 355 00:21:02,260 --> 00:21:05,880 annak érdekében, hogy tudjuk, hogy már ott korábban. 356 00:21:05,880 --> 00:21:12,450 Van még kérdése majd az üléseken vagy a cookie-k vagy hasonló? 357 00:21:12,450 --> 00:21:15,130 Firesheep nem működik olyan jól, már, 358 00:21:15,130 --> 00:21:18,310 és van, hogy a számítógépet egy speciális vegyes üzemmódban 359 00:21:18,310 --> 00:21:20,700 szóval tényleg figyel forgalom mellett magatoknak. 360 00:21:20,700 --> 00:21:23,940 Tehát, ha éppen le Firesheep, észre, ez nem annyira egyszerű 361 00:21:23,940 --> 00:21:26,850 mint valaha volt bizonyítani. 362 00:21:26,850 --> 00:21:29,070 Rendben van. És ne csináld a Sanders. Csináld otthon. 363 00:21:29,070 --> 00:21:30,890 Adatbázisok. 364 00:21:30,890 --> 00:21:33,580 Az egyik dolog, amit tett Pset 7 nagyon tudatosan 365 00:21:33,580 --> 00:21:37,780 volt, kapsz egy mintát adatbázis tábla felhasználók számára, hogy van néhány felhasználói azonosítók, 366 00:21:37,780 --> 00:21:41,020 néhány felhasználó nevét, és néhány titkosított jelszavakat benne. 367 00:21:41,020 --> 00:21:44,520 És látni fogod, ha még nem tette meg, akkor kell majd változtatni a táblázat egy kicsit. 368 00:21:44,520 --> 00:21:47,710 Fogsz kell adnod pár cache az egyes felhasználók, hogy a táblázatban, 369 00:21:47,710 --> 00:21:51,130 és te lesz, hogy újabb történelmet asztal, a portfóliók asztal, 370 00:21:51,130 --> 00:21:53,310 vagy talán nevezzük valami mást. 371 00:21:53,310 --> 00:21:56,740 De szempontjából gondolkodni, hogyan kell ezt csinálni, hadd megnyitni ezt az eszközt 372 00:21:56,740 --> 00:22:00,570 amire pénteken, de ha ismeretlen, a készülék jön egy eszközzel 373 00:22:00,570 --> 00:22:04,680 nevű phpMyAdmin amely véletlenül PHP-ben íródott, 374 00:22:04,680 --> 00:22:07,950 de a célja az életben, miután jelentkezzen be itt jharvard a bíbor, 375 00:22:07,950 --> 00:22:15,160 hogy adjon nekem egy felhasználóbarát módon megtekintésének és a változó az adatbázis. 376 00:22:15,160 --> 00:22:18,040 >> Az adatbázis futok be a készüléket hívják MySQL. 377 00:22:18,040 --> 00:22:23,420 Ez nagyon népszerű, és ez egy ingyenes, nyílt forráskódú adatbázis, ami csodálatosan könnyen kezelhető, 378 00:22:23,420 --> 00:22:25,620 különösen az első véget ér, mint ez. 379 00:22:25,620 --> 00:22:29,350 Mi ez az eszköz lehetővé teszi, hogy tegyek, például, nem piszkálni körül táblázatokat. 380 00:22:29,350 --> 00:22:30,890 Hadd menjek előre, és ezt. 381 00:22:30,890 --> 00:22:36,580 Pénteken hoztunk létre egy táblázatot nevű tanulóknak, hogy szuper volt egyszerű. 382 00:22:36,580 --> 00:22:41,680 Ez volt 3 oszlop - id, név és e-mail - és kézzel ki egy pár sort 383 00:22:41,680 --> 00:22:44,420 mint David és Mike ebben a konkrét példában. 384 00:22:44,420 --> 00:22:47,290 Nézzük ezt egy kicsit tovább, és tegyük fel, hogy szeretnénk emlékezni látna 385 00:22:47,290 --> 00:22:49,660 mint név és e-mail egy felhasználó. 386 00:22:49,660 --> 00:22:53,090 Hadd kattintson Structure ide a tetején. 387 00:22:53,090 --> 00:22:55,440 Továbbá, a Pset végigvezeti a szükséges lépéseket itt, 388 00:22:55,440 --> 00:22:58,150 úgyhogy ne aggódj, ha néhány ilyen egy kicsit gyors. 389 00:22:58,150 --> 00:22:59,690 Akkor fogok kattintson ide. 390 00:22:59,690 --> 00:23:02,270 Megyek hozzá néhány oszlopok száma után email 391 00:23:02,270 --> 00:23:04,130 mert azt akarom, hogy adjunk valamit, mint ház. 392 00:23:04,130 --> 00:23:06,640 Elfelejtettem felvenni egy diák házában. 393 00:23:06,640 --> 00:23:11,400 Hadd kattintson az Indítás gombra, és most már ebben a formában sajnos egy kicsit széles balról jobbra, 394 00:23:11,400 --> 00:23:13,710 de fogom hívni a nevét e téren ház, 395 00:23:13,710 --> 00:23:16,050 , majd az I. típusú most már választani. 396 00:23:16,050 --> 00:23:18,870 Szóval vessünk egy rövid beszélgetés, ami a különböző típusú MySQL 397 00:23:18,870 --> 00:23:24,590 mert mivel a PHP gyengén gépelt, és ez a fajta játszik a gyors és laza típusú, 398 00:23:24,590 --> 00:23:29,430 egy adatbázisban, különösen ez szuper fontos, hogy ténylegesen használni gépelés az előnyt 399 00:23:29,430 --> 00:23:33,260 mert az egyik dolog, MySQL és egyéb adatbázis motorok tehet Önért 400 00:23:33,260 --> 00:23:37,910 van arról, hogy nem teszel hamis adatokat az adatbázisban. 401 00:23:37,910 --> 00:23:41,850 Ez a fajta szabad hibaellenőrzés áll az Ön rendelkezésére. 402 00:23:41,850 --> 00:23:46,250 >> A ház már nyilvánvalóan nem akarjuk, hogy legyen egy int, amely egy 32-bites értéket MySQL. 403 00:23:46,250 --> 00:23:49,810 Mi nem beszélünk röviden pénteken mintegy varchar, amely áll a változó hosszúságú karakter. 404 00:23:49,810 --> 00:23:54,720 Mi ez? Ez lehetővé teszi, hogy meghatározza, hogy szeretné, hogy ez egy string valami. 405 00:23:54,720 --> 00:23:56,840 Nem igazán tudom előre, hogy mennyi ideig van, 406 00:23:56,840 --> 00:24:00,100 úgyhogy önkényesen mondjuk egy ház neve lehet 255 karakter, 407 00:24:00,100 --> 00:24:04,190 de mehet a 32, 64 - tetszőleges számú igazán. 408 00:24:04,190 --> 00:24:10,700 De az előnye egy varchar egy mező nevű char mi? 409 00:24:10,700 --> 00:24:15,110 Csak ösztönösen ha lapozás után itt, észre van char és varchar van. 410 00:24:15,110 --> 00:24:19,520 Varchar változó hosszúságú char, char egy fix hosszúságú kar. 411 00:24:19,520 --> 00:24:24,730 Így kizárólag a ennek a meghatározásnak, mi az előnye és hátránya az egyes ezek? 412 00:24:24,730 --> 00:24:30,490 Más szóval, aki törődik a különbséget, vagy miért érdekel? 413 00:24:31,660 --> 00:24:35,750 >> Igen. [Hallgató] Varchar rugalmasabban, de több memóriát. 414 00:24:35,750 --> 00:24:40,730 Jó. Varchar veszi fel többet - Lássuk csak. Nem vagyok biztos benne, hogy hallottam ezt a jogot. 415 00:24:40,730 --> 00:24:42,360 Tudsz mondani, hogy még egyszer? 416 00:24:42,360 --> 00:24:45,850 [Hallgató] mondtam varchar talán több rugalmasságot, de több memóriát. 417 00:24:45,850 --> 00:24:51,170 Érdekes. Oké. Varchar talán így több rugalmasságot, de több memóriát. 418 00:24:51,170 --> 00:24:53,220 Az utóbbi nem feltétlenül igaz. 419 00:24:53,220 --> 00:24:56,290 Attól függ, hogy a kontextus, de térjünk vissza erre. 420 00:24:56,290 --> 00:25:03,230 >> [Hallhatatlan diák választ] Pontosan. 421 00:25:03,230 --> 00:25:06,900 Ez valójában a helyzet, hogy char általában használ több memóriát 422 00:25:06,900 --> 00:25:10,950 mivel a char, mint a C-ben, olyan, mint egy húr, ez egy sor karakter. 423 00:25:10,950 --> 00:25:13,690 Tehát, ha mondjuk egy char területen hossz 255, 424 00:25:13,690 --> 00:25:16,910 Az adatbázis a szó szoros értelmében fog adni 255 karakter. 425 00:25:16,910 --> 00:25:22,290 És ha a ház végül is Mather és 6 karakter összesen, 426 00:25:22,290 --> 00:25:25,090 te pazarlás több mint 200 karakter. 427 00:25:25,090 --> 00:25:29,640 >> Tehát egy varchar hatékonyan csak használ annyi karaktert, amennyi szükséges 428 00:25:29,640 --> 00:25:31,590 maximum összeget. 429 00:25:31,590 --> 00:25:35,470 De az ár, amit fizetni valójában teljesítmény, potenciálisan. 430 00:25:35,470 --> 00:25:39,740 Ha tudod előre, hogy az összes húrok lesznek 8 karakter - 431 00:25:39,740 --> 00:25:43,090 Például, tegyük fel, hogy szükséges jelszavak hossza 8 - 432 00:25:43,090 --> 00:25:47,350 a fejjel használatának char mezőben alkalommal, bár nem gyakran, 433 00:25:47,350 --> 00:25:51,100 hogy adjon meg egy fix hosszúságú valami, mint egy jelszó 434 00:25:51,100 --> 00:25:53,300 mert most az adatbázis lehet még okosabb. 435 00:25:53,300 --> 00:25:58,160 Ha tudja, hogy minden karakter a területen, minden karakterláncot egy oszlop azonos hosszúságú, 436 00:25:58,160 --> 00:26:00,780 kap vissza a szolgáltatás a véletlen hozzáférés. 437 00:26:00,780 --> 00:26:05,110 Ugrálhat körül a különböző char mezőket az adatbázis tábla 438 00:26:05,110 --> 00:26:07,940 azért, mert úgy gondolja, az adatbázis a sorok és oszlopok. 439 00:26:07,940 --> 00:26:11,670 Tehát, ha mindenki a húrok az azonos hosszúságú, 440 00:26:11,670 --> 00:26:17,820 tudja, hogy az első ember a byte 0, a következő egy van byte 8 441 00:26:17,820 --> 00:26:20,240 majd a 16 és majd 24 és így tovább. 442 00:26:20,240 --> 00:26:24,500 Tehát, ha minden sztring azonos hosszúságú, akkor ugrálhatunk sokkal hatékonyabban. 443 00:26:24,500 --> 00:26:26,710 Szóval hogy lehet előny a teljesítmény, 444 00:26:26,710 --> 00:26:29,420 de jellemzően nem rendelkezik a luxust, hogy tudjuk előre, 445 00:26:29,420 --> 00:26:32,170 így a varchar az út. 446 00:26:32,170 --> 00:26:36,030 Itt egy újabb részlet, hogy még a Facebook ütközött végül. 447 00:26:36,030 --> 00:26:39,670 Ints nagy, és egyfajta használni őket alapértelmezés szerint bármikor szeretnénk egy számot, 448 00:26:39,670 --> 00:26:41,750 de ez csak 32 bit. 449 00:26:41,750 --> 00:26:46,210 >> És bár a Facebook nem egészen van 4 milliárd felhasználó most, 450 00:26:46,210 --> 00:26:48,680 van néhány ember biztosan ott több beszámoló 451 00:26:48,680 --> 00:26:50,960 vagy számlákon, amelyeket kinyitja, majd becsukja, 452 00:26:50,960 --> 00:26:55,130 és így Facebook maga azt hiszem, néhány évvel ezelőtt el kellett átmenet int 453 00:26:55,130 --> 00:27:00,010 az, ahogy találóan nevezik, bigint, ami csak 64 bit helyett. 454 00:27:00,010 --> 00:27:02,230 Szóval ez is egy tervezési döntés. 455 00:27:02,230 --> 00:27:06,570 Ön lenne hihetetlenül szerencsés, ha a projekt végső fordul indításakor, 456 00:27:06,570 --> 00:27:10,010 már 4 milliárd 1 gyűjti a felhasználók, ide vagy oda, 457 00:27:10,010 --> 00:27:13,200 ebben az esetben a ints lehet egy kicsit rövidlátó. 458 00:27:13,200 --> 00:27:16,230 De a valóságban, a felhasználók tábla valószínűleg rendben ints. 459 00:27:16,230 --> 00:27:19,340 De valami hasonló Pset 7, mint a történelem asztal, 460 00:27:19,340 --> 00:27:23,700 lehet, hogy több ezer, több millió felhasználó, ha fejlődni etrade.com. 461 00:27:23,700 --> 00:27:26,020 Szóval, mivel lehet, hogy nem több, mint 4 milliárd felhasználó 462 00:27:26,020 --> 00:27:30,070 azok a felhasználók te is előfordulhat, hogy több mint 4 milliárd tranzakció idővel - 463 00:27:30,070 --> 00:27:33,200 vásárol és ad el, és a dolgok a saját történetében. 464 00:27:33,200 --> 00:27:38,090 Szóval, ha nem előre - ismét, ezek jó probléma van, ha ez a sok adat - 465 00:27:38,090 --> 00:27:40,920 ha nem előre adatait meghaladó nagyságú int, 466 00:27:40,920 --> 00:27:47,740 megy valami hasonló bigint egy irányban nem elég gyakran elfogadott tervezők 467 00:27:47,740 --> 00:27:49,710 mert az emberek a szám, hogy ez nem lesz probléma, 468 00:27:49,710 --> 00:27:51,930 de ez a könnyű választani valami nagyobb, mint ezt. 469 00:27:51,930 --> 00:27:55,380 Decimális mi használ Pset 7, amely meghatározza fix precíziós 470 00:27:55,380 --> 00:27:59,840 így elkerülni a problémákat érintő úszók, valamint két-és valós számok és hasonlók. 471 00:27:59,840 --> 00:28:02,440 >> És akkor ott van valami más területen van. Majd hullám kezünket őket bizonyos mértékig. 472 00:28:02,440 --> 00:28:07,270 De időpontok, a menetrendek mindegyike egy meghatározott formátumban MySQL, 473 00:28:07,270 --> 00:28:10,830 és az az előnye, tároló dátumok dátumokat, és nem varchars 474 00:28:10,830 --> 00:28:15,730 azt jelenti, hogy az adatbázis valóban újraformázhatja őket különböző formátumok, 475 00:28:15,730 --> 00:28:18,800 hogy az Egyesült Államok formátumot vagy európai formátum vagy hasonló - de azt szeretné, hogy - 476 00:28:18,800 --> 00:28:22,700 sokkal hatékonyabban, mintha csak néhány általános varchar. 477 00:28:22,700 --> 00:28:25,150 És akkor ott van egy másik BINARY, VARBINARY festékfoltok. 478 00:28:25,150 --> 00:28:28,580 Ezek nagy bináris objektumok, és akkor is tárolni bináris adatok 479 00:28:28,580 --> 00:28:30,750 valamint geometriai adatokat egy adatbázisban. 480 00:28:30,750 --> 00:28:34,350 De nekünk mi általában érdekel ints és varchars és hasonlók. 481 00:28:34,350 --> 00:28:36,230 Fejezzük be ezt a példát házat. 482 00:28:36,230 --> 00:28:40,030 House fogok önkényesen mondani, lesz 255 karakter. 483 00:28:40,030 --> 00:28:42,850 Aztán alapértelmezett érték tudnánk csinálni. 484 00:28:42,850 --> 00:28:47,440 Tudnánk alapértelmezés szerint be mindenki Mather House, például. 485 00:28:47,440 --> 00:28:49,710 Így tudtuk meg, hogy az adatbázis 486 00:28:49,710 --> 00:28:52,460 biztosítania kell, hogy valaki mindig van értéke. De hagyom, hogy az legyen. 487 00:28:52,460 --> 00:28:55,270 Tény, hogy az emberek, akik élnek campus, és nincs abban a házban, 488 00:28:55,270 --> 00:28:59,590 talán tényleg szeretnénk megadni, hogy az alapértelmezett értéke ház NULL, 489 00:28:59,590 --> 00:29:04,890 és akkor ellenőriznie kell ezt az opciót, és mondd el az adatbázis nem baj, ha a felhasználó ház NULL. 490 00:29:04,890 --> 00:29:07,270 >> Ismét, ez egy másik védekező mechanizmus lehet bevezetni 491 00:29:07,270 --> 00:29:10,590 így nem is kell, hogy tegye a PHP kód feltétlenül. 492 00:29:10,590 --> 00:29:14,630 Az adatbázis biztosítja majd, hogy a dolgok vagy nem NULL. 493 00:29:14,630 --> 00:29:17,310 Aztán végül, Tulajdonságok. 494 00:29:17,310 --> 00:29:18,920 Ezek egyike sem igazán fontos. 495 00:29:18,920 --> 00:29:22,880 Binary, unsigned - ezek egyike sem releváns a varchar. 496 00:29:22,880 --> 00:29:24,220 Index. 497 00:29:24,220 --> 00:29:27,320 Tudja valaki, vagy emlékszik, vagy egy tipp, hogy mi egy index 498 00:29:27,320 --> 00:29:29,510 valami hasonló házat? 499 00:29:29,510 --> 00:29:35,240 Ez is tulajdonképpen egy fontos és viszonylag könnyen tervezési döntés. 500 00:29:35,240 --> 00:29:39,200 Azok számára, akik még nem látták, pénteken beszéltünk röviden elsődleges kulcsokat. 501 00:29:39,200 --> 00:29:43,240 Egy adatbázis tábla egy elsődleges kulcs mező vagy oszlop 502 00:29:43,240 --> 00:29:46,270 amely egyedileg azonosítja sorok a táblázatban. 503 00:29:46,270 --> 00:29:49,150 Tehát az aktuális tábla van azonosítók, van neve és e-maileket. 504 00:29:49,150 --> 00:29:52,050 Melyik ezek a legjobb jelöltet, hogy egy elsődleges kulcsot, 505 00:29:52,050 --> 00:29:55,810 amelynek feladata, hogy egyértelmű azonosítására sorok? 506 00:29:55,810 --> 00:29:57,530 Valószínűleg ID. 507 00:29:57,530 --> 00:29:59,930 Vitathatatlan, hogy mi is lehet használni, mi igaz? 508 00:29:59,930 --> 00:30:02,860 Talán jól jönne-mailt, mert elméletileg ez egyedülálló 509 00:30:02,860 --> 00:30:05,380 kivéve, ha az emberek megosztása e-mail fiókok. 510 00:30:05,380 --> 00:30:09,980 De a valóság az, hogy ha egy numerikus azonosító, mint a 1234, 511 00:30:09,980 --> 00:30:14,170 ez csak 32 bites, míg az e-mail címet lehet ez a sok bájt vagy ennyi bájt. 512 00:30:14,170 --> 00:30:16,610 Tehát a hatékonyság szempontjából egyedi azonosítók, 513 00:30:16,610 --> 00:30:19,270 Úgy látszik, hogy jó gyakorlat csak használni int 514 00:30:19,270 --> 00:30:23,090 még ha van néhány húr jelölt, hogy meg tudná vitathatatlanul használni. 515 00:30:23,090 --> 00:30:26,760 >> Valami hasonló ház, ez nem lehet elsődleges kulcs 516 00:30:26,760 --> 00:30:30,770 mert akkor csak 1 személy lehet élni Mather és 1 fő Currier és hasonlók. 517 00:30:30,770 --> 00:30:32,790 Hasonlóképpen, ez nem egyedi. 518 00:30:32,790 --> 00:30:37,830 A különbség a primer és egyedi, hogy abban az esetben, a jelenlegi asztal, 519 00:30:37,830 --> 00:30:42,620 ID lesz az elsődleges, de az e-mail nem elsősorban az az oka, hogy az előbb említett - 520 00:30:42,620 --> 00:30:44,740 teljesítmény - de ez még mindig egyedi. 521 00:30:44,740 --> 00:30:47,200 Így akkor is érvényesíteni egyediségét anélkül, hogy a követelés 522 00:30:47,200 --> 00:30:49,520 hogy ez egy szuper fontos elsődleges mező. 523 00:30:49,520 --> 00:30:52,610 De ez egy nagyon hasznos: Index. 524 00:30:52,610 --> 00:30:56,180 Ha tudod előre a végső projekt, Pset 7, vagy általában, 525 00:30:56,180 --> 00:30:59,480 hogy ez a terület a ház lesz valami, amit keresni egy csomó 526 00:30:59,480 --> 00:31:01,910 a select kulcsszót vagy valami mást, 527 00:31:01,910 --> 00:31:05,180 akkor megelőző jellegű mondani az adatbázis munka a mágia 528 00:31:05,180 --> 00:31:10,510 és győződjön meg arról, hogy létrehoz a memóriában bármilyen tetszetős adatszerkezetek szükséges 529 00:31:10,510 --> 00:31:13,770 hogy felgyorsítsák keresések alapján házban. 530 00:31:13,770 --> 00:31:17,860 Lehet, hogy fogja használni a hash tábla, talán ez fogja használni a linkelt listát. 531 00:31:17,860 --> 00:31:21,260 A valóságban, hajlamos arra, hogy egy fa használ, gyakran egy úgynevezett B-fa - 532 00:31:21,260 --> 00:31:24,090 nem egy bináris fa hanem egy B-fa - ami egy nagyon széles fa 533 00:31:24,090 --> 00:31:27,370 hogy lehet látni egy osztály, mint a CS124, az adatszerkezetek osztály. 534 00:31:27,370 --> 00:31:31,800 De rövid, akkor nem kell aggódni, hogy ha az intelligens adatbázis-kezelő szoftverek. 535 00:31:31,800 --> 00:31:35,890 Akkor mondd azt, "Index ezen a területen, így tudok keresni rajta hatékonyabb." 536 00:31:35,890 --> 00:31:40,250 >> Ha ezt ki, és próbálja meg keresni mindenki számára az adatbázisban, aki él Mather, 537 00:31:40,250 --> 00:31:42,710 akkor száll át a lineáris keresés. 538 00:31:42,710 --> 00:31:45,360 És ha megvan 6.000 undergrads minden élő egyes házban, 539 00:31:45,360 --> 00:31:47,900 fogsz keresni az egész táblázatot, hogy megtalálja a Matherites, 540 00:31:47,900 --> 00:31:52,190 mivel ha azt mondod, Index, remélhetőleg lesz valami közel logaritmikus keresés 541 00:31:52,190 --> 00:31:54,510 hogy megtaláljuk azokat a típusú versenyző. 542 00:31:54,510 --> 00:31:56,750 Ez csak egy ingyenes szolgáltatás bekapcsolásához, 543 00:31:56,750 --> 00:31:59,530 annak ellenére, hogy nem jön áron némi helyet. 544 00:31:59,530 --> 00:32:02,690 Végül, auto-növekmény, ez AI területen, 545 00:32:02,690 --> 00:32:05,830 ami csak azt jelenti, ha ez egy int, és nem akarod, hogy érdekel, hogy megnöveljük magad 546 00:32:05,830 --> 00:32:07,570 minden alkalommal, amikor van egy új felhasználót, ellenőrizze, hogy a 547 00:32:07,570 --> 00:32:11,910 és minden felhasználó kap ki automatikusan kap egy új azonosítót. 548 00:32:11,910 --> 00:32:15,620 Nézzük kattintson a Mentés gombra, és most nézzük talált hibát a design. 549 00:32:15,620 --> 00:32:20,200 Ha elmegyek a People, azt tapasztaljuk, hogy mind a Mike és az én házam NULL. 550 00:32:20,200 --> 00:32:22,420 Tudom használni phpMyAdmin szerkeszteni ezt a kézzel. 551 00:32:22,420 --> 00:32:25,110 Tudok menni ide, és írja be Mather, majd nyomja meg az Enter billentyűt, 552 00:32:25,110 --> 00:32:27,740 és most észre a tábla különböző. 553 00:32:27,740 --> 00:32:29,270 De észre tudtam csinálni valami mást is. 554 00:32:29,270 --> 00:32:33,530 Dávid ID 1, így phpMyAdmin ismét csak egy adminisztratív eszköz; 555 00:32:33,530 --> 00:32:35,970 ez nem valami, amit a felhasználók valaha is látni. 556 00:32:35,970 --> 00:32:38,810 Szóval, ha ahelyett, kattintson az SQL fülre up top - 557 00:32:38,810 --> 00:32:41,450 és újra Pset 7 fog bevezetni, ha több ilyen lekérdezések - 558 00:32:41,450 --> 00:32:45,260 Én kézzel hajtja végre az SQL strukturált lekérdezési nyelv parancs 559 00:32:45,260 --> 00:32:56,410 UPDATE SET felhasználó house = 'Pfoho' WHERE id = 1. 560 00:32:56,410 --> 00:33:00,830 Ezek az SQL lekérdezések, szépen elég, elég olvasható balról jobbra. 561 00:33:00,830 --> 00:33:04,350 Frissítse a felhasználók tábla, állítsa a mező nevű ház Pfoho 562 00:33:04,350 --> 00:33:06,830 ha a felhasználó azonosítója 1 lehet. 563 00:33:06,830 --> 00:33:11,480 Vagy akár nem, ha email = 'malan@harvard.edu ". 564 00:33:11,480 --> 00:33:14,860 Amíg amely egyedileg azonosítja nekem, hogy működne is. 565 00:33:14,860 --> 00:33:18,810 De ID jellemzően magasabb teljesítményt, úgyhogy csináljuk ezt. 566 00:33:18,810 --> 00:33:22,950 Akkor kattintson a Go. Oké, lecture.users nem létezik. Mi a hiba? 567 00:33:22,950 --> 00:33:26,220 Mi van a táblázat ténylegesen lehívott itt? 568 00:33:26,220 --> 00:33:28,770 Úgy hívják a diákok csak azért, mert ez az, amit tettünk fel itt a bal felső sarokban. 569 00:33:28,770 --> 00:33:31,860 Úgy hívják a diákok, nem felhasználók. Akkor kattintson a Mehet gombra most. 570 00:33:31,860 --> 00:33:34,330 1 sor érintett. Lekérdezés 0,01 másodpercig tartott. 571 00:33:34,330 --> 00:33:38,010 Ha a Tallózás gombra kattintva most, most Malan él Pfoho. 572 00:33:38,010 --> 00:33:42,070 Szóval ez egy másik íze SQL, de a Pset végigvezeti egy kicsit erre. 573 00:33:42,070 --> 00:33:44,710 >> Van egy hülye döntés, amit már itt. 574 00:33:44,710 --> 00:33:47,820 Azt állítják, hogy ez az adatbázis tervezés nem hatékony 575 00:33:47,820 --> 00:33:51,650 mert több ember hozzáteszem, hogy a diákok asztalra, 576 00:33:51,650 --> 00:33:54,730 A többen kezdek hozzá, annál több a TFS kezdek hozzá, 577 00:33:54,730 --> 00:33:58,320 fogunk kezdeni, hogy milyen elbocsátások a táblázatban? 578 00:34:00,840 --> 00:34:06,020 >> Igen. [Hallgató] Látván, hogy ez a diákok, mi ugyanazt a [hallható] 579 00:34:06,020 --> 00:34:07,360 Ugyanez - Igen, pontosan. 580 00:34:07,360 --> 00:34:10,400 Tehát, ha 400 ember él Mather, ide vagy oda, 581 00:34:10,400 --> 00:34:15,000 végül is ez a táblázat megy, hogy 400 sorok azt mondják: "Mather", "Mather," 582 00:34:15,000 --> 00:34:16,590 "Mather," "Mather," "Mather." 583 00:34:16,590 --> 00:34:19,820 Mi pazarlás mindezen bájt, és van egy pár elvitelre ott. 584 00:34:19,820 --> 00:34:23,080 1, ott van az őrült sarokban ha ha valaki fizet egy csomó pénzt 585 00:34:23,080 --> 00:34:25,949 és átnevezi Mather, most meg kell változtatni az egész adatbázis tábla. 586 00:34:25,949 --> 00:34:29,730 Ez nem fog megtörténni gyakran, bár Pfoho hívták North House 15 évvel ezelőtt, 587 00:34:29,730 --> 00:34:32,310 így történik. De ez még nem minden, ami lenyűgöző. 588 00:34:32,310 --> 00:34:36,000 Több, mint egy sarokba kényszerítő hasonló esetben, hogy az igénylő frissíteni az adatokat ömlesztve 589 00:34:36,000 --> 00:34:41,150 Egy adatbázis miért tárolására Mather újra és újra és újra és újra? 590 00:34:41,150 --> 00:34:43,020 Ez egy csomó karakter, 6 karakter. 591 00:34:43,020 --> 00:34:45,500 Nem csinálhatnánk még jobban, mint, hogy különösen a Pforzheimer? 592 00:34:45,500 --> 00:34:48,320 Biztosan tehetünk jobban, hogy sok karaktert. 593 00:34:48,320 --> 00:34:51,790 Miért nem csak társítani egy egyedi azonosítót minden ház 594 00:34:51,790 --> 00:34:55,020 és tárolja, hogy minden egyes felhasználó? Akkor próbáljuk meg. 595 00:34:55,020 --> 00:35:00,610 Ahelyett, hogy csak használja a diákok tábla, hadd menjen fel Előadásomban adatbázishoz ide a bal felső sarokban. 596 00:35:00,610 --> 00:35:02,600 Értesítés itt azt mondja Tábla létrehozása. 597 00:35:02,600 --> 00:35:04,550 Hadd hozzon létre egy új táblát nevezett házak. 598 00:35:04,550 --> 00:35:08,880 Az oszlopok száma lesz 2. Az Enter billentyűt. 599 00:35:08,880 --> 00:35:11,200 Most van 2 mezőket. 600 00:35:11,200 --> 00:35:14,600 Fogom hívni ezt a nevet, és ez lesz a varchar hosszúságú 255, 601 00:35:14,600 --> 00:35:18,770 >> de ez elég önkényes. Hadd tegyem ezt le itt egyezmény. 602 00:35:18,770 --> 00:35:22,840 Tehát vessen ID ide. Adjunk minden ház egy egyedi azonosítót. 603 00:35:22,840 --> 00:35:25,360 Adjunk minden ház egy nevet. 604 00:35:25,360 --> 00:35:30,980 Nézzük meg, hogy az azonosító lesz unsigned csak a konvenció, hogy csak a pozitív számok. 605 00:35:30,980 --> 00:35:35,020 Menjünk előre, és hogy ez egy automatikus növekmény mező most. 606 00:35:35,020 --> 00:35:38,160 És mi is kell valami mást? 607 00:35:38,160 --> 00:35:41,010 Menjünk előre, és kattintson a Mentés gombra. 608 00:35:41,010 --> 00:35:42,480 Most van egy másik asztal. 609 00:35:42,480 --> 00:35:45,860 Hirdetmény mint félre ez a kissé rejtélyes SQL parancs 610 00:35:45,860 --> 00:35:50,280 hogy kellett volna, hogy írja kézzel, ha nem használ felügyeleti eszköz, mint a phpMyAdmin. 611 00:35:50,280 --> 00:35:51,990 Tehát még egy ok, amiért használja. 612 00:35:51,990 --> 00:35:55,480 Ez csodálatosan hasznos egyfajta pedagógiai mert akkor kattintson körül 613 00:35:55,480 --> 00:36:01,050 és kitaláljuk, hogyan működnek a dolgok mellett csak a másolás és beillesztés, mit phpMyAdmin tett. 614 00:36:01,050 --> 00:36:04,150 De a CREATE TABLE parancs, amit éppen végre, és itt van az asztalon. 615 00:36:04,150 --> 00:36:11,370 Hadd menjek előre, és már a nyers SQL helyett leegyszerűsíti kattintson a Beszúrás fülre. 616 00:36:11,370 --> 00:36:15,040 Hadd ne INSERT INTO házak, 617 00:36:15,040 --> 00:36:22,230 és meg fogom mondani a nevét a ház megy, hogy egy érték "Mather". 618 00:36:22,230 --> 00:36:24,790 Ennyi. Ez a szintaxis egy kicsit rejtélyes. 619 00:36:24,790 --> 00:36:26,660 Ez a név a mezőket szeretnénk beszúrni. 620 00:36:26,660 --> 00:36:30,390 Ezek az értékek szeretnénk illeszteni ezeket a mezőket. Hadd kattintson az Indítás gombra. 621 00:36:30,390 --> 00:36:34,410 1 sor egészül 0.02 másodpercig tartott. Engedjék meg, kattintson a Tallózás gombra most. 622 00:36:34,410 --> 00:36:42,020 >> Figyeljük meg, ha én kattintson a Tallózás gombra, van Mather, melynek azonosító az automatizálás az 1-es szám. 623 00:36:42,020 --> 00:36:45,000 Hadd tegyek egy másikat. Hadd menjek be a SQL fülre. 624 00:36:45,000 --> 00:36:52,950 INSERT INTO házak. A név a ház megy, hogy egy érték Pfoho és így tovább. 625 00:36:52,950 --> 00:36:56,350 Go. És tudom tartani ezt újra és újra és újra. 626 00:36:56,350 --> 00:36:59,470 Vagy ha unatkozni a phpMyAdmin, akkor csak használja a Beszúrás lap 627 00:36:59,470 --> 00:37:01,000 és nem kell, hogy írja a nyers SQL. 628 00:37:01,000 --> 00:37:04,690 Tudod csak bumm ki gyorsabban a gépelés, például Currier, az Enter, 629 00:37:04,690 --> 00:37:07,610 és most ha kattintson a Tallózás gombra, ott Currier azonosítóval a 3. 630 00:37:07,610 --> 00:37:09,920 Szóval ez az, amit értünk auto-növekmény. 631 00:37:09,920 --> 00:37:12,280 De most meg kell hozni valamit a diákok. 632 00:37:12,280 --> 00:37:16,240 A tanulóktól, hogy mit kellene az adatok típusát a ház mező most? 633 00:37:16,240 --> 00:37:19,450 Meg kell int, ugye? 634 00:37:19,450 --> 00:37:23,950 Tehát a cél itt az, hogy végre vennünk, más néven normalizálni, a táblázatok 635 00:37:23,950 --> 00:37:27,940 azért, hogy ne információk tárolása redundáns minden az én táblázatokban. 636 00:37:27,940 --> 00:37:31,130 Továbbá, az út voltunk itt fog mondani Mather, Mather, 637 00:37:31,130 --> 00:37:34,220 Mather, Mather, Pfoho, Pfoho, Pfoho, Pfoho, ami nagyon felesleges 638 00:37:34,220 --> 00:37:36,240 szempontjából a pazarlás a karakter. 639 00:37:36,240 --> 00:37:40,820 Szóval hadd menjen előre, és változtatni kattintva Structure, 640 00:37:40,820 --> 00:37:44,620 és hadd menjen előre, és ellenőrizze le a ház területén, kattintson a Módosítás gombra, 641 00:37:44,620 --> 00:37:46,990 és most fogom megváltoztatni ezt, hogy egy int. 642 00:37:46,990 --> 00:37:49,490 255 nem releváns. 643 00:37:49,490 --> 00:37:54,010 Hadd menjek előre, és azt mondják, hogy rendben van, ha ez még mindig NULL. Mentés. 644 00:37:54,010 --> 00:37:55,870 Most tábla diákok megváltozott sikeresen 645 00:37:55,870 --> 00:37:59,090 , és vegyük észre ismét ház egy int. 646 00:37:59,090 --> 00:38:02,220 Mint félretéve, figyelmen kívül hagyja a zárójelben, amikor a ints. 647 00:38:02,220 --> 00:38:03,770 >> Ez az örökség miatt. 648 00:38:03,770 --> 00:38:06,920 Vissza a nap, amikor nem volt GUI, akkor inkább már egy parancssori környezet, 649 00:38:06,920 --> 00:38:11,580 A 10 és 11, illetve meghatározott hány karaktert kell mutatnia 650 00:38:11,580 --> 00:38:13,950 a terminál ablakban, hogy ténylegesen mezőket. 651 00:38:13,950 --> 00:38:19,150 Ennek semmi köze a bithosszúságú a tényleges terület, úgyhogy csak figyelmen kívül hagyja, hogy a most. 652 00:38:19,150 --> 00:38:20,990 Most el kell mennem ebbe a táblázatban. 653 00:38:20,990 --> 00:38:24,610 És ha Dávid lakik Mather, a ház nem lehet 0, 654 00:38:24,610 --> 00:38:27,350 amely egy alapértelmezett int érték legközelebb NULL. 655 00:38:27,350 --> 00:38:29,810 Azt kell élni ház 1. 656 00:38:29,810 --> 00:38:36,870 Tegyük fel önkényesen azt, hogy Mike él Pfoho, így house 2-es szám. 657 00:38:36,870 --> 00:38:40,160 Most úgy néz ki, az én asztalomnál egy kicsit rejtélyes. 658 00:38:40,160 --> 00:38:41,960 De úgy a hatékonyságot. 659 00:38:41,960 --> 00:38:44,860 Én most már csak 32 bites azonosítani a házat, 660 00:38:44,860 --> 00:38:49,530 ami azt jelenti, hogy csak 1 kanonikus meghatározását házam Mather és Pfoho 661 00:38:49,530 --> 00:38:52,090 és ez a házakban táblázatban. 662 00:38:52,090 --> 00:38:55,880 Tehát, ha azt akarom, hogy most újra csatlakozni ezeket a táblákat, gondolom így. 663 00:38:55,880 --> 00:39:01,980 Itt van a diákok asztal, és a jobb oldalon van ezeket a számokat, 1 és 2. 664 00:39:01,980 --> 00:39:04,180 Az 1-Mather, a 2 Pfoho. 665 00:39:04,180 --> 00:39:08,580 Van ugyanezek a számok a másik tábla, amely az úgynevezett házak, 666 00:39:08,580 --> 00:39:11,020 Az 1. és a 2. és 3. a 3 ház. 667 00:39:11,020 --> 00:39:14,990 Amit most akarok, megvan a képessége a kódot, PHP és SQL, 668 00:39:14,990 --> 00:39:18,800 rendezni az csatlakozzon ezek a táblák, ahol, ha ezek a diákok és ezek a házak, 669 00:39:18,800 --> 00:39:22,050 azt akarjuk, hogy valahogy egyesíteni őket, hogy 1 vonalba 1, 670 00:39:22,050 --> 00:39:25,670 2 sor up 2, és annak érdekében, hogy kitaláljuk, hol David 671 00:39:25,670 --> 00:39:28,000 és ahol Mike, és ahol mindenki más él. 672 00:39:28,000 --> 00:39:31,850 Ehhez hajthat végre egy SQL lekérdezést, mint a következő. 673 00:39:31,850 --> 00:39:40,470 SELECT * FROM diákok JOIN házak ON - 674 00:39:40,470 --> 00:39:43,000 És most milyen mezőket akarunk csatlakozni itt? 675 00:39:43,000 --> 00:39:49,520 Szóval students.house = houses.id. 676 00:39:49,520 --> 00:39:54,150 >> Egy kicsit rejtélyes, de ez a rész szó szerint azt jelenti hozzon létre egy új ideiglenes táblát 677 00:39:54,150 --> 00:39:56,690 ez az eredménye összekötő diákok és házak. 678 00:39:56,690 --> 00:40:00,340 És hogyan szeretné egyesíteni a tippeket az ujjaim itt? 679 00:40:00,340 --> 00:40:05,280 Állítsa be a tanulók háza mező megegyezik a házak "ID mezőbe. 680 00:40:05,280 --> 00:40:10,220 És ha most kattintson az Indítás gombra, kapok vissza pontosan, amit remélt. 681 00:40:10,220 --> 00:40:15,890 David van Mather, Mike van Pfoho, és azt is látni az egyedi azonosítókat. 682 00:40:15,890 --> 00:40:18,640 De a lényeg most már egy teljes táblázatot. 683 00:40:18,640 --> 00:40:23,020 És így az elvitelre itt Pset 7 vagy valóban a végső projekt: 684 00:40:23,020 --> 00:40:25,830 Ha úgy találja, hogy te vagy tárolása bármilyen információ, redundáns, 685 00:40:25,830 --> 00:40:28,850 hogy ez a ház, lehet, hogy a város, az állam, és a ZIP 686 00:40:28,850 --> 00:40:32,050 ahol ZIP általában, de nem mindig lehet használni, mint egy egyedi azonosítót, 687 00:40:32,050 --> 00:40:35,810 nem megy át a testmozgás szellemileg, majd valami hasonlót phpMyAdmin 688 00:40:35,810 --> 00:40:40,660 A faktoring arra, hogy a közös adatokat, mert különösen az Ön weboldalára kap több jól használható 689 00:40:40,660 --> 00:40:45,440 egyre népszerűbb, ez hogyan győződjön meg arról, hogy minden szuper gyors, 690 00:40:45,440 --> 00:40:51,930 azáltal, hogy az adatbázis sok tippeket, hogy az egyediség, amennyire csak lehetséges. 691 00:40:51,930 --> 00:40:53,860 Ez volt egy csomó. 692 00:40:53,860 --> 00:40:59,010 Van még kérdése? Rendben van. Vessünk egy 5-perces szünet van, és átcsoportosítani. 693 00:41:01,600 --> 00:41:03,540 Rendben van. 694 00:41:03,540 --> 00:41:08,680 Az alábbi példa is használt néhány évvel ezelőtt, amikor vettem CS161, 695 00:41:08,680 --> 00:41:10,960 amely az operációs rendszerek osztályt a főiskolán 696 00:41:10,960 --> 00:41:15,160 ami ismert, hogy csodálatos, de egy őrült mennyiségű munkát, 697 00:41:15,160 --> 00:41:19,810 és ez elsősorban tényleg néhány alacsony szintű felmerülő problémákra operációs rendszerek 698 00:41:19,810 --> 00:41:22,700 és még a világon az adatbázisok. 699 00:41:22,700 --> 00:41:27,040 >> A történet, hogy azt mondták az én tanár, Margo Seltzer, ebben az évben a következő volt. 700 00:41:27,040 --> 00:41:30,990 Tegyük fel, hogy van egy kis kollégiumi hűtőszekrény az Ön és a szobatársam 701 00:41:30,990 --> 00:41:34,030 és mind a ketten igazán szeret tejet. 702 00:41:34,030 --> 00:41:36,360 Szóval gyere haza osztály egy nap a szobatársa még nem ott, 703 00:41:36,360 --> 00:41:39,650 kinyitja a hűtőt, és rájössz, "Oh átkozott, elfogyott a tej." 704 00:41:39,650 --> 00:41:42,070 Szóval te becsukod a hűtőt, sétálsz az utcán, hogy CVS 705 00:41:42,070 --> 00:41:45,830 és kap az egyre inkább hosszú sorokban, hogy vásároljon néhány tejet CVS. 706 00:41:45,830 --> 00:41:48,470 Eközben, a szobatársam jön haza a saját osztály, 707 00:41:48,470 --> 00:41:51,690 jön be a szobába, kinyitja a hűtőt igazán akar egy kis tejet, 708 00:41:51,690 --> 00:41:54,130 Megnyílik a hűtőt, és "A fenébe, nem tej." 709 00:41:54,130 --> 00:41:57,890 Szóval ő bezárja a hűtő, kisétál az ajtón, és megy ABP 710 00:41:57,890 --> 00:42:00,910 vagy valahol más, mint a CVS, ahol te nem fog bump egymás 711 00:42:00,910 --> 00:42:02,790 menni egy kis tejet. 712 00:42:02,790 --> 00:42:04,820 Persze, néhány perccel később, mindketten haza 713 00:42:04,820 --> 00:42:07,740 és most már kétszer annyi tejet, mint te valójában akart. 714 00:42:07,740 --> 00:42:10,670 És mivel a tej, most ez fog menni rossz, mert szereted a tejet 715 00:42:10,670 --> 00:42:14,200 de nem igazán, mint a tej, így most már túl sok tejet, így megy savanyú. 716 00:42:14,200 --> 00:42:16,830 Ez egy rettenetes, szörnyű helyzetet. 717 00:42:16,830 --> 00:42:22,920 Mit lehetett volna oldani ezt a kínos, ha te voltál az első szobatársa haza? Igen. 718 00:42:22,920 --> 00:42:25,970 [Hallgató] Meg kellett volna hagyni egy üzenetet. [Nevetés] 719 00:42:25,970 --> 00:42:28,090 Jó. Meg kellett volna hagyni egy üzenetet. 720 00:42:28,090 --> 00:42:32,320 Meg kellett volna tenni a Post-it hang vagy hasonló mondás: "Elfújta a tej" 721 00:42:32,320 --> 00:42:36,830 , majd a szobatársam fogalmilag volna zárva a ténylegesen csinálja. 722 00:42:36,830 --> 00:42:38,010 Vagy elmehet 1 lépés tovább. 723 00:42:38,010 --> 00:42:41,060 Lehet szó zárja le a hűtőszekrény valamilyen lakat, 724 00:42:41,060 --> 00:42:44,870 és most a szobatársam szó szerint zárva ki a hűtőszekrény. 725 00:42:44,870 --> 00:42:48,520 Ha általánosítani vissza a programozás, 726 00:42:48,520 --> 00:42:51,610 akkor szinte véleményed a hűtő valamiféle változó vagy a struct, 727 00:42:51,610 --> 00:42:53,500 valamilyen konténer információkat. 728 00:42:53,500 --> 00:42:58,290 A probléma alapvetően az, hogy mind a ketten hagytuk, hogy ellenőrizze 729 00:42:58,290 --> 00:43:02,370 vagy olvassa el az állam az adatok struktúrája, 730 00:43:02,370 --> 00:43:08,050 de megtekintette különböző időpontokban és mégis mind a ketten döntött 731 00:43:08,050 --> 00:43:11,920 alapján az állam a világ e különböző időpontokban. 732 00:43:11,920 --> 00:43:15,570 Tehát már akkor zárva a hűtő, akkor lett volna, legalább kerülni a szobatársad 733 00:43:15,570 --> 00:43:19,070 honnan volt képes ellenőrizni az állam a világ, 734 00:43:19,070 --> 00:43:22,530 így ő nem tudta volna, hogy az ugyanazon határozat. 735 00:43:22,530 --> 00:43:25,780 Szóval adatbázisok, mint kiderült, ez a probléma folyamatosan. 736 00:43:25,780 --> 00:43:31,050 >> Lássuk, tudunk építeni egy forgatókönyv. 737 00:43:31,050 --> 00:43:34,310 Tegyük fel, hogy te valami rossz ember, és megy a Bank of America 738 00:43:34,310 --> 00:43:37,950 vagy egy a másik hely a négyzet, amelyek egy pár ATM egymás mellett, 739 00:43:37,950 --> 00:43:41,200 és valahogy rájött, hogyan kell másolni egy ATM kártya - nem is olyan nehéz. 740 00:43:41,200 --> 00:43:42,730 Ez csak egy mágneskártya. 741 00:43:42,730 --> 00:43:45,180 És mit akarsz próbálni tennie játszani ezt a játékot 742 00:43:45,180 --> 00:43:49,060 ahol raksz 1 kártyát 1 gép, egy másik kártyát a másik gépet, 743 00:43:49,060 --> 00:43:51,980 és lényegében szeretné kipróbálni, hogy pénzt egyszerre, 744 00:43:51,980 --> 00:43:54,930 mert elképzelhető, hogy a történet így szól. 745 00:43:54,930 --> 00:43:57,350 A gép bal oldalán veszi a kártyát és a PIN-kód 746 00:43:57,350 --> 00:44:00,240 és akkor azt mondja: "Adj nekem 100 dollárt." 747 00:44:00,240 --> 00:44:04,790 Az ATM van programozva, hogy először nem a select saját adatbázis vagy az azzal egyenértékű - 748 00:44:04,790 --> 00:44:10,780 bármilyen adatbázis ez használatával -, hogy nem a felhasználó legalább 100 $ saját fiókot? 749 00:44:10,780 --> 00:44:16,180 Ha igen, akkor köpje ki a $ 100 és $ 100 kivonni a saját egyensúlyát. 750 00:44:16,180 --> 00:44:20,470 Persze ha van több gép van, vagy több módon az ellenőrző 751 00:44:20,470 --> 00:44:23,560 az állam, hogy a világ, a bank boltozat, hogy mennyi pénz van, 752 00:44:23,560 --> 00:44:26,780 Tegyük fel, hogy csak véletlenül a készülék a bal és a jobb 753 00:44:26,780 --> 00:44:30,140 Mindkét kérni ebben a kérdésben nagyjából azonos időpontban. 754 00:44:30,140 --> 00:44:34,160 >> És ez minden bizonnyal megtörténhet. ATM számítógépek ezekben a napokban. 755 00:44:34,160 --> 00:44:37,670 Tehát, ha a gép a baloldali azt mondja: "Igen, van legalább 100 $," 756 00:44:37,670 --> 00:44:42,150 közben a készülék a jobb oldalon azt mondja: "Igen, van legalább 100 $," 757 00:44:42,150 --> 00:44:47,420 majd mindketten folytassa befejezzék a programokat és ténylegesen köpje ki a 100 dolláros 758 00:44:47,420 --> 00:44:50,820 és azt mondják: "Korábban már 200 dollárt." 759 00:44:50,820 --> 00:44:54,890 "Hadd frissíti a változó most már $ 100 marad a fiókban." 760 00:44:54,890 --> 00:44:58,780 De ha mindkettő ellenőrizte a fizetési mérleg és megállapította, hogy 200 dollár 761 00:44:58,780 --> 00:45:02,000 és mindketten majd tegye a matematika és mondjuk 200-100, 762 00:45:02,000 --> 00:45:06,990 a gépek potenciálisan kiköp két $ 100 váltók minden gép, 763 00:45:06,990 --> 00:45:11,360 de már csak frissítette összeg egyenlege hogy 100 dollárt. 764 00:45:11,360 --> 00:45:15,130 Más szóval, ha már kivették $ 200, hanem azért, mert ellenőrzik az állam a világ 765 00:45:15,130 --> 00:45:18,840 egyszerre, majd döntött alapuló érték, 766 00:45:18,840 --> 00:45:21,930 lehet, hogy nem a matek végül helyesen. 767 00:45:21,930 --> 00:45:25,520 Tehát a bank helyzetben is szeretné, hogy valamilyen lockout 768 00:45:25,520 --> 00:45:28,450 annak érdekében, hogy amint már ellenőrizte az állam egyes változó 769 00:45:28,450 --> 00:45:31,220 ez nagyon fontos, mint a fizetési mérleg, 770 00:45:31,220 --> 00:45:36,070 ne engedd senkinek alapján hoznak döntéseket, hogy amíg kész csinál a dolog, 771 00:45:36,070 --> 00:45:38,920 amennyiben ebben az esetben, ha az ATM-et, a bal oldalon. 772 00:45:38,920 --> 00:45:41,160 Lock mindenki mást ki. 773 00:45:41,160 --> 00:45:44,650 Tudod valójában elérni ezt a hatást egy pár különböző módon. 774 00:45:44,650 --> 00:45:48,660 >> A legegyszerűbb módja a MySQL egy sor SQL, amit adtam neked 775 00:45:48,660 --> 00:45:52,030 a probléma halmaz kikötésével, hogy úgy néz ki, mint ez. 776 00:45:52,030 --> 00:45:57,420 Helyezze be a táblázatba - bármi is hívják - egy id, egy szimbólum, és egy részvény, egy bizonyos számú részvényt, 777 00:45:57,420 --> 00:45:59,660 a következő értékeket, például. 778 00:45:59,660 --> 00:46:03,370 Ha még nem olvassa a specifikációt még, ez egy részt vettek például hogyan megy a 779 00:46:03,370 --> 00:46:07,340 Önnek 10 shares e penny stock elnöknek Skroob, 780 00:46:07,340 --> 00:46:10,340 amelynek felhasználói azonosító történik, hogy a 7-es szám? 781 00:46:10,340 --> 00:46:14,070 Ez azt mondja, INSERT INTO táblázat a következő szám, jelkép, és részvények számát 782 00:46:14,070 --> 00:46:18,200 7, "DVN.V ', és 10. 783 00:46:18,200 --> 00:46:21,510 De - de, de, de - a második sor a fontos. 784 00:46:21,510 --> 00:46:26,310 A pótkulcsot UPDATE részvények = részvények + VALUES (részvény). 785 00:46:26,310 --> 00:46:28,350 Szóval teljesen rejtélyes kinézetű első pillantásra. 786 00:46:28,350 --> 00:46:31,990 De az a tény, hogy ezt az SQL lekérdezést, annak ellenére, hogy becsomagolja rá 2 soros, 787 00:46:31,990 --> 00:46:35,920 jelentése 1 hosszú lekérdezés, ez azt jelenti, hogy atom- 788 00:46:35,920 --> 00:46:41,000 abban az értelemben, hogy ez a lekérdezés vagy hajtják végre együtt, vagy egyáltalán nem. 789 00:46:41,000 --> 00:46:45,100 És meghatározása MySQL, ez hogyan hajtotta végre ezt a lekérdezést. 790 00:46:45,100 --> 00:46:51,010 Ez a meghatározás a kézi garantált, hogy végre egyszerre, vagy egyáltalán nem. 791 00:46:51,010 --> 00:46:54,020 A motiváció Ennek a következő. 792 00:46:54,020 --> 00:46:58,540 Ha ebben az esetben próbál vásárolni 10 shares raktáron, 793 00:46:58,540 --> 00:47:02,260 ez a fajta ugyanaz a történet, mint a tej, ez a fajta ugyanaz a történet, mint az ATM. 794 00:47:02,260 --> 00:47:04,970 >> Ha a hibát, hogy nem használja ezt a szintaxist 795 00:47:04,970 --> 00:47:09,610 hanem kiválasztja az adatbázisból, hogy hány részvények e penny stock 796 00:47:09,610 --> 00:47:13,750 nincs elnök Skroob van, és tegyük fel, hogy már 10 részvény, 797 00:47:13,750 --> 00:47:19,330 , majd néhány pillanattal később aztán csinál egy UPDATE nyilatkozatot, 798 00:47:19,330 --> 00:47:24,810 ami egy másik állítás, amely azt mondja SQL megy előre, és adjunk hozzá további 10 részvény 799 00:47:24,810 --> 00:47:28,700 hogy a jelenlegi 10, így ideális esetben a teljes 20, 800 00:47:28,700 --> 00:47:33,490 a probléma, mert a mai adatbázis-rendszerek, és mert a mai számítógépek 801 00:47:33,490 --> 00:47:35,990 Van több processzor, több mag - 802 00:47:35,990 --> 00:47:38,920 más szóval, számítógépek szó csinál több dolgot egyszerre - 803 00:47:38,920 --> 00:47:44,270 nincs garancia arra, hogy a SELECT és az UPDATE ebben az esetben 804 00:47:44,270 --> 00:47:46,150 fognak történni háttal. 805 00:47:46,150 --> 00:47:49,140 Tehát a rossz forgatókönyv lenne, ha nem a SELECT 806 00:47:49,140 --> 00:47:51,670 hogy hány osztja e penny stock Skroob nem rendelkezik, 807 00:47:51,670 --> 00:47:54,710 és aztán csak véletlenül egy másik adatbázis-lekérdezés végrehajtásakor - 808 00:47:54,710 --> 00:47:57,740 talán a Skroob másik böngészőablakban próbál vásárolni 10 shares 809 00:47:57,740 --> 00:48:00,700 egy másik ablakban teljesen, ugyanúgy, mint az ATM - 810 00:48:00,700 --> 00:48:05,410 és tegyük fel, hogy egy másik lekérdezés jelentkeznek között SELECT és UPDATE. 811 00:48:05,410 --> 00:48:10,210 Ez lehet a helyzet, hogy most már Skroob veszít részvények számát 812 00:48:10,210 --> 00:48:14,340 mert egy másik folyamat ellenőrzésére az állam az ő világában, 813 00:48:14,340 --> 00:48:17,800 vagy ő többet kap részvényeket, mint ahogy kellett volna. 814 00:48:17,800 --> 00:48:23,250 Nem fogunk belemenni adatokat pontosan mik ezek a különös történet vonalak lenne, 815 00:48:23,250 --> 00:48:28,380 de a lényeg az, ha van, hogy ellenőrizze a változók értéket, majd döntést, 816 00:48:28,380 --> 00:48:32,500 ha van egy veszélye valaki csinál valamit közötti 2 nyilatkozatok 817 00:48:32,500 --> 00:48:36,220 mivel megtörténhet többprocesszoros rendszerekben, a többmagos rendszerek, 818 00:48:36,220 --> 00:48:41,220 számítógépek a lehetőségtől, hogy tegyen több dolgot egyszerre, rossz dolgok történhetnek 819 00:48:41,220 --> 00:48:44,530 például bankszámlákról történő terhelése helytelen Önnek kétszer annyi tejet, 820 00:48:44,530 --> 00:48:46,730 vagy ebben az esetben rossz részvények száma. 821 00:48:46,730 --> 00:48:48,370 De van egy egyszerűbb módja annak, hogy gondolkozzon el ezen. 822 00:48:48,370 --> 00:48:53,290 >> Kiderül, hogy az SQL is támogatja, ha úgy konfigurálja a táblázat helyesen 823 00:48:53,290 --> 00:48:56,920 valami úgynevezett ügyletekre vonatkozik, amelyek azt állítják, valójában még könnyebb megérteni 824 00:48:56,920 --> 00:49:00,650 mint ez, de ez nem egy 1-bélés, tehát ez valójában egy kicsit szó. 825 00:49:00,650 --> 00:49:04,960 Van szó egy nyilatkozatot, az úgynevezett SQL START tranzakció. 826 00:49:04,960 --> 00:49:08,300 Csakúgy, mint ott SELECT, UPDATE, INSERT, DELETE, és csatlakozz, és egy csomó más, 827 00:49:08,300 --> 00:49:10,970 vannak olyan kulcsszavak, mint a START TRANSACTION. 828 00:49:10,970 --> 00:49:13,560 És amit majd tegye összefüggésben Pset 7 - 829 00:49:13,560 --> 00:49:17,270 Nem kell ezt a Pset 7; ez kifejezetten tiltakozott, hogy az nem szükséges, 830 00:49:17,270 --> 00:49:18,830 de végső projektek lehet hasznos - 831 00:49:18,830 --> 00:49:22,820 ha a hívás egy lekérdezést a START ÜGYLET majd egy másik lekérdezés 832 00:49:22,820 --> 00:49:25,620 majd egy másik lekérdezést, majd egy másik, egy másik, és egy másik, 833 00:49:25,620 --> 00:49:31,860 ezek lekérdezések ténylegesen nem hajtható végre, amíg meg nem hívja az SQL COMMIT 834 00:49:31,860 --> 00:49:37,220 ezen a ponton, hogy ez 2 nyilatkozatok vagy 20 nyilatkozatot, akkor végre kell hajtani az összes egyszerre, 835 00:49:37,220 --> 00:49:42,770 ami azt jelenti, senki más nem tudja véletlenül túl sokat vásárol belőle tejet vagy betéti túl sok pénzt 836 00:49:42,770 --> 00:49:46,340 vagy vásárolni túl sok részvényeit, mert az összes lekérdezést hajt végre 837 00:49:46,340 --> 00:49:48,410 háttal hátra hátra. 838 00:49:48,410 --> 00:49:51,580 És ez szuper fontos, különösen, ha csinálsz valamit, mint ez. 839 00:49:51,580 --> 00:49:54,900 Ez egy tetszőleges példa, hogy azt mondja menjünk frissíti a bankszámla 840 00:49:54,900 --> 00:50:00,200 azáltal, hogy egyensúlyt egyenlő egyenleg - $ 1000, ahol a számla száma 2 lehet. 841 00:50:00,200 --> 00:50:04,260 És akkor a második kijelentés most nézzük, hogy letétbe helyezi 1000 $ 842 00:50:04,260 --> 00:50:07,310 be valaki másé bankszámla, amelynek számlaszám 1 lehet. 843 00:50:07,310 --> 00:50:10,400 >> Más szóval, ez egy tökéletes példa arra, ahol szeretnénk, hogy győződjön meg arról, 844 00:50:10,400 --> 00:50:13,590 , hogy mindkét nyilatkozatok történik, vagy egyáltalán nem 845 00:50:13,590 --> 00:50:15,450 mert különben az ügyfél megy kap csavarva 846 00:50:15,450 --> 00:50:17,670 és te fog tartani a pénzt, és nem helyezi letétbe, hogy máshol, 847 00:50:17,670 --> 00:50:20,470 vagy a bank megy kap csavarva hová mész befizetni a pénzt 848 00:50:20,470 --> 00:50:23,140 de valójában nem vonjuk ki a felhasználói fiókot. 849 00:50:23,140 --> 00:50:25,810 Szóval azt akarod, mindketten közösen hajt végre. 850 00:50:25,810 --> 00:50:29,140 Így belép a világba ügyletek. 851 00:50:29,140 --> 00:50:31,360 Szóval ez valami tartani a hátsó fejedben, 852 00:50:31,360 --> 00:50:34,710 nem annyira céljából csak a végleges projekt, 853 00:50:34,710 --> 00:50:36,700 de ha azt szeretnénk, hogy a projekt végső valahol, 854 00:50:36,700 --> 00:50:39,040 ha szeretné indítani néhány cég körül, 855 00:50:39,040 --> 00:50:41,270 ha szeretné megoldani néhány diák csoport problémája az egyetemen 856 00:50:41,270 --> 00:50:45,210 és valóban van egy élő, aktív a honlapon, ezek a fajta finom hibák léphetnek fel 857 00:50:45,210 --> 00:50:49,480 Ha nem egészen gondolja végig, mi történik, ha 2 fő 858 00:50:49,480 --> 00:50:54,190 próbálja elérni a weboldalán szó ugyanabban a pillanatban 859 00:50:54,190 --> 00:50:56,890 amelyben ezek lekérdezések egyébként kap összefüggenek. 860 00:50:58,840 --> 00:51:01,420 >> Készen áll néhány JavaScript, a teaser ezek? 861 00:51:01,420 --> 00:51:04,320 Ez az utolsó nyelvet a félévben. Rendben van. 862 00:51:04,320 --> 00:51:09,940 Szerencsére, JavaScript néz ki, nagyon, nagyon, nagyon hasonlít a 2 nyelv, C és PHP, 863 00:51:09,940 --> 00:51:11,140 tettünk eddig. 864 00:51:11,140 --> 00:51:14,340 Nincs JavaScript Pset 7, de ez egy hihetetlenül hasznos eszköz 865 00:51:14,340 --> 00:51:18,840 amikor csinál web-alapú végső projektek vagy tényleg csak webes programozás általában. 866 00:51:18,840 --> 00:51:20,950 Tehát egy gyors áttekintést valami úgynevezett DOM. 867 00:51:20,950 --> 00:51:23,600 Itt van egy szuper egyszerű weboldal, amely valójában csak azt mondja, hello, világ 868 00:51:23,600 --> 00:51:25,970 mind a címben és a szervezetben. 869 00:51:25,970 --> 00:51:29,270 Mivel a behúzás már utal egy ideje, 870 00:51:29,270 --> 00:51:31,380 valóban létezik egy hierarchia weboldalakat. 871 00:51:31,380 --> 00:51:34,220 Tudtam felhívni ugyanezen kódrészletet a HTML, mint egy fa, 872 00:51:34,220 --> 00:51:37,470 gondolt vissza a viták adatszerkezetek C-ben, az alábbiak szerint. 873 00:51:37,470 --> 00:51:40,710 Van néhány különleges gyökér csomópont az úgynevezett dokumentum csomópont, 874 00:51:40,710 --> 00:51:43,650 és meglátjuk, analóg erről JavaScript mindössze egy pillanatra. 875 00:51:43,650 --> 00:51:48,330 Az első gyermek és egyetlen gyermeke, hogy ebben az esetben a HTML-tag. 876 00:51:48,330 --> 00:51:49,880 Nincs közvetlen leképezés a doctype. 877 00:51:49,880 --> 00:51:53,170 Ez egy különleges dolog, ezért meg kell csak figyelmen kívül hagyja, hogy amikor ezt a DOM, 878 00:51:53,170 --> 00:51:55,810 ez a Document Object Model fa. 879 00:51:55,810 --> 00:51:59,530 Figyeljük meg, hogy a HTML tag, amit már ábrázolták önkényesen egy téglalap, 880 00:51:59,530 --> 00:52:02,890 van 2 gyermek: fej és a test. 881 00:52:02,890 --> 00:52:04,840 >> Ezek hasonló módon megrajzolt téglalapok. 882 00:52:04,840 --> 00:52:08,970 Az értelmes, hogy a piktogramokat ábrázoló fej balra test. 883 00:52:08,970 --> 00:52:11,960 A következmény az, hogy a feje előbb a fán. 884 00:52:11,960 --> 00:52:14,910 Tehát ez valójában egy megrendelés egy fa, ha döntetlen, mint ez, 885 00:52:14,910 --> 00:52:17,460 annak ellenére, hogy a formák és miegymás önkényesek. 886 00:52:17,460 --> 00:52:20,360 Head időközben már egyetlen gyermek nevű cím, 887 00:52:20,360 --> 00:52:25,170 és a cím valójában saját gyermeke, amely a "hello, world" 888 00:52:25,170 --> 00:52:32,210 amit szándékosan rajzoltam, mint egy ovális ide, hogy kissé eltér a téglalapot. 889 00:52:32,210 --> 00:52:37,420 Ezeket a téglalapokat elemei, mivel hello, világ valójában egy szöveges csomópont. 890 00:52:37,420 --> 00:52:39,850 Szóval ez egy csomópont a fa, de ez egy más típusú csomópont 891 00:52:39,850 --> 00:52:41,730 így rajzoltam önkényesen másképp. 892 00:52:41,730 --> 00:52:45,000 Hasonlóképpen nincs test egy gyerek nevű hello, world is, 893 00:52:45,000 --> 00:52:47,910 annyira más node annak ellenére, hogy véletlenül ugyanazt a szöveget, 894 00:52:47,910 --> 00:52:52,100 de már húzott használatával ugyanolyan alakú. Szóval, kit érdekel? 895 00:52:52,100 --> 00:52:56,820 Nos, mi a jó a HTML, hogy nem ezt a hierarchikus jellegű. 896 00:52:56,820 --> 00:53:01,010 És mi a szép, és különösen arról, JavaScript könyvtárak szabadon álló 897 00:53:01,010 --> 00:53:07,120 és népszerű, mint a jQuery segítségével navigálhat a fa szerkezetét, így hihetetlenül egyszerű. 898 00:53:07,120 --> 00:53:11,790 Bármelyik cucc tettük C mutatók és mozgási fák és a rekurzív csomópontok 899 00:53:11,790 --> 00:53:15,300 balra gyermek jobbra gyermek, hirtelen mi is egyfajta magától értetődőnek 900 00:53:15,300 --> 00:53:19,450 mint elképesztően tanulságos, ha nem egy kicsit frusztráló 901 00:53:19,450 --> 00:53:22,470 de közel sem olyan hatékony módja annak, hogy megy a programozás. 902 00:53:22,470 --> 00:53:24,470 És így e magasabb szintű nyelvek, mint a JavaScript 903 00:53:24,470 --> 00:53:28,340 leszünk képesek navigálni a fa sokkal ösztönösen. 904 00:53:28,340 --> 00:53:30,430 >> És valóban, a szintaxis lesz elég ismerős. 905 00:53:30,430 --> 00:53:32,950 Ha még soha nem látott JavaScript előtt, ez egy nagyon szép referencia 906 00:53:32,950 --> 00:53:35,910 A Mozilla emberek, az emberek, akik a Firefox, 907 00:53:35,910 --> 00:53:38,370 úgyhogy ne nyugodtan böngészhet, hogy az Ön kényelmét. 908 00:53:38,370 --> 00:53:41,590 Mit talál -, és ezek a diák azonos amit mi a minap - 909 00:53:41,590 --> 00:53:44,030 hasonlóképpen, fő eltűnt. 910 00:53:44,030 --> 00:53:47,010 Tehát, ha írunk egy programot a JavaScript nincs fő funkciója. 911 00:53:47,010 --> 00:53:48,690 Csak írásához kódot. 912 00:53:48,690 --> 00:53:51,660 De a fő különbséget a JavaScript és a C és a PHP 913 00:53:51,660 --> 00:53:55,890 az, hogy míg a C és a PHP eddig végrehajtották szerver oldalon 914 00:53:55,890 --> 00:53:59,180 A készülék ebben az esetben, vagy általában egy szerver, 915 00:53:59,180 --> 00:54:04,270 JavaScript by design általában végre egy böngésző. 916 00:54:04,270 --> 00:54:08,440 Más szóval, lehet írni JavaScript kódot, ahogy mindjárt, 917 00:54:08,440 --> 00:54:13,080 a szerveren a készülék, de magában körében a HTML, a CSS között, 918 00:54:13,080 --> 00:54:16,100 között, a GIF és a PNG és a JPEG 919 00:54:16,100 --> 00:54:19,170 úgy, hogy amikor a felhasználó meglátogatja a weboldalt, ha a JavaScript, 920 00:54:19,170 --> 00:54:21,770 hogy a JavaScript kód jön szerver böngésző, 921 00:54:21,770 --> 00:54:24,540 és ez a böngésző, hogy valóban végrehajtja. 922 00:54:24,540 --> 00:54:27,960 Szóval ez van értelmes hatással még szellemi tulajdon. 923 00:54:27,960 --> 00:54:32,600 Elég buta, hogy még gondolni védelmére IP, amikor a JavaScript-kód 924 00:54:32,600 --> 00:54:37,560 mert a természet a nyelv nem lesz végrehajtva általában böngésző oldalon. 925 00:54:37,560 --> 00:54:40,360 >> Akkor összezavar ez, ami azt jelenti, hogy úgy tűnjön, őrült és csúnya 926 00:54:40,360 --> 00:54:45,400 nélküli szóköz, borzalmas változó nevét, hogy megnehezíti az emberek számára, hogy ellopja az IP, 927 00:54:45,400 --> 00:54:48,120 de a legfontosabb az, hogy végre böngésző oldalon. 928 00:54:48,120 --> 00:54:51,790 Annak ellenére, hogy mint egy területpihentetés JavaScript használható szerver oldalon, 929 00:54:51,790 --> 00:54:54,480 A leggyakoribb használata esetén most még a böngészőben. 930 00:54:54,480 --> 00:54:59,800 És itt van az, aminek látszik. Itt van egy if-else if-else konstrukció, mint a C, mint a PHP. 931 00:54:59,800 --> 00:55:02,420 Itt van egy logikai kifejezés, ha "vagy" 2 dolgot együtt. 932 00:55:02,420 --> 00:55:04,330 Itt van, ha "és" 2 dolgot együtt. 933 00:55:04,330 --> 00:55:08,300 Itt van egy switch, ami hasonló a PHP 934 00:55:08,300 --> 00:55:10,810 , hogy lehet váltani a különböző típusú értékeket. 935 00:55:10,810 --> 00:55:15,180 Loops hasonlóképpen van a hurkok itt, melyek felépítése azonos azzal, amit láttunk korábban. 936 00:55:15,180 --> 00:55:18,110 Míg a hurkokat, megvan csinálni, miközben hurkok. 937 00:55:18,110 --> 00:55:20,290 Változók, mindig így kissé eltérő. 938 00:55:20,290 --> 00:55:24,560 Ugye állapítsa változók, mint te a PHP és a C, 939 00:55:24,560 --> 00:55:27,860 de hasonlóan a JavaScript gyengén gépelt. 940 00:55:27,860 --> 00:55:32,730 Nem adja meg int vagy float vagy string vagy ilyesmi általában. 941 00:55:32,730 --> 00:55:34,240 Megadhatja var. 942 00:55:34,240 --> 00:55:38,040 Önnek nem kell megadnia var, de hatással van, ha nem. 943 00:55:38,040 --> 00:55:42,000 Általában, ha kihagyja var, véletlenül létrehoz egy globális változó helyett a helyi. 944 00:55:42,000 --> 00:55:46,420 Hadd javaslom, hogy szinte mindig csak annyit var, majd a változó nevét. 945 00:55:46,420 --> 00:55:48,740 Ez nem a típus, csak var változó. 946 00:55:48,740 --> 00:55:52,930 Ez lehet például, hogy ez 123 vagy "hello, world". 947 00:55:52,930 --> 00:55:58,910 Tömbök vannak jelen, és szintaktikailag hasonló PHP. 948 00:55:58,910 --> 00:56:03,690 Azt mondom var számok és aztán használja szögletes zárójelben ismét nyilvánítja változó 949 00:56:03,690 --> 00:56:08,870 amelynek típusa tömb, amely ezeket a konkrét számokat nem vesszővel elválasztva. 950 00:56:08,870 --> 00:56:11,740 És végül, ez az egyetlen, ami igazán máshogy néz ki. 951 00:56:11,740 --> 00:56:16,700 Emlékezzünk vissza, hogy a PHP-ben mi volna végre egy asszociatív tömböt egy diák 952 00:56:16,700 --> 00:56:20,220 mint Zamyla, hogy így fog kinézni, ha a változó nevű diák. 953 00:56:20,220 --> 00:56:23,370 A szögletes zárójelek jelent itt jön egy tömbben. 954 00:56:23,370 --> 00:56:28,500 >> Az a tény, hogy nem vagyok a numerikus indexek, de húrok - id, house, és név - 955 00:56:28,500 --> 00:56:30,990 azt jelenti, hogy ez egy asszociatív tömb, 956 00:56:30,990 --> 00:56:34,490 és ezek a nyilak az egyenlőségjel és a szögletes zárójel 957 00:56:34,490 --> 00:56:37,310 azt jelenti, hogy a kulcs az "id", az értéke 1; 958 00:56:37,310 --> 00:56:39,310 a legfontosabb a "ház", az érték Winthrop House; 959 00:56:39,310 --> 00:56:41,800 a kulcs a "neve", az érték Zamyla Chan. 960 00:56:41,800 --> 00:56:47,110 Szóval van 3 gomb belsejében asszociatív tömb, amelyek mindegyikének megvan a maga értéke. 961 00:56:47,110 --> 00:56:52,880 Láttuk, hogy a Pset 7, vagy hamarosan lesz, JavaScript ugyanezen ötlet, 962 00:56:52,880 --> 00:56:55,220 de ez fog kinézni, mint ez. 963 00:56:55,220 --> 00:57:00,070 Szóval var diák - nem dollár jele és nem említi típusú, de még mindig var - 964 00:57:00,070 --> 00:57:05,860 megegyezik majd nyissa kapcsos zárójelek mert JavaScript ha van kulcs érték párokat, 965 00:57:05,860 --> 00:57:08,900 ténylegesen használ valami úgynevezett objektum. 966 00:57:08,900 --> 00:57:13,490 És azok, akik ezt megteszik APC-k vagy hasonló lehet felidézni objektumok Java 967 00:57:13,490 --> 00:57:15,140 vagy hasonló nyelven. 968 00:57:15,140 --> 00:57:17,880 JavaScript nem Java először. 969 00:57:17,880 --> 00:57:21,600 Ez egy tudatos tervezési döntés évvel ezelőtt, hogy leüt valami mást, ami népszerű volt, 970 00:57:21,600 --> 00:57:25,640 a nevét, annak ellenére, hogy nincs kapcsolatban alapvető JAVA magát. 971 00:57:25,640 --> 00:57:31,490 JavaScript objektumok, és hozza létre őket útján a kapcsos zárójel jelölést. 972 00:57:31,490 --> 00:57:36,710 Objektumok JavaScript elég sok azonos asszociatív tömbök a PHP 973 00:57:36,710 --> 00:57:40,030 amikor az adatok tárolására bennük. 974 00:57:40,030 --> 00:57:44,100 >> De még erőteljesebben a JavaScript lehet társítani nagyon könnyen funkciók 975 00:57:44,100 --> 00:57:48,040 belsejében egy tárgy, és bár akkor ezt más nyelveken, 976 00:57:48,040 --> 00:57:50,040 ez elég gyakori paradigma, mint látni fogjuk. 977 00:57:50,040 --> 00:57:54,380 Röviden, az objektum jelent egy diák, aki különösen Zamyla, 978 00:57:54,380 --> 00:58:00,380 és ez hasonló fogalmi, csak szintaktikailag ettől eltérő. 979 00:58:00,380 --> 00:58:03,840 Nézzünk ténylegesen használni JavaScript fájlban. 980 00:58:03,840 --> 00:58:05,570 Kiderült, hogy van egy script tag. 981 00:58:05,570 --> 00:58:08,180 Láttuk a stílus címke és láttunk más HTML címkék. 982 00:58:08,180 --> 00:58:11,510 A script tag ténylegesen tartalmaz majd néhány JavaScript kódot. 983 00:58:11,510 --> 00:58:15,500 Hadd menjek be a készüléket, ha van néhány forráskódot előre készült. 984 00:58:15,500 --> 00:58:18,700 Még nem írt, hogy még a honlapon, de én megteszem, hogy miután osztály. 985 00:58:18,700 --> 00:58:21,770 Nyissuk ki ezt, blink.html. 986 00:58:21,770 --> 00:58:27,560 Vissza a 1990-es években volt a szó szoros értelmében egy HTML tag úgynevezett blink tag, 987 00:58:27,560 --> 00:58:30,340 és ez volt az egyik legcsodálatosabb indokolatlanul tag az interneten 988 00:58:30,340 --> 00:58:36,140 amely azt látogasson el néhány 1990-es évek stílusát web oldalt, és újra látni szöveg villogni tetszik ez, 989 00:58:36,140 --> 00:58:39,810 eredményeit az márki címke, amely szöveg megy így. 990 00:58:39,810 --> 00:58:45,070 Az egyik a néhány alkalommal, amikor a világ ténylegesen megállapodott a web standard, 991 00:58:45,070 --> 00:58:48,250 mindenki az egész fórumon megölte a blink tag néhány évvel ezelőtt. 992 00:58:48,250 --> 00:58:52,860 De mi feltámasztani azt JavaScript egy bemutatót a hatalom van 993 00:58:52,860 --> 00:58:56,660 ha lehet írni egy programot, belsejében egy internetes oldalon. 994 00:58:56,660 --> 00:59:00,240 Gyártási ugorjuk át az új cucc, és összpontosítani a régi. 995 00:59:00,240 --> 00:59:01,780 >> Itt a régi cucc ebben a példában. 996 00:59:01,780 --> 00:59:06,350 Van egy HTML tag, a fej címke, és a cím tag. 997 00:59:06,350 --> 00:59:11,210 Aztán van egy body tag van egy div, ami visszahívás csak egy téglalap alakú részlege az oldal 998 00:59:11,210 --> 00:59:14,720 hogy adtam egy egyedi azonosító, önkényesen az "üdvözlés" a, 999 00:59:14,720 --> 00:59:18,320 csak így van egy módja annak, egyedi utalva rá, hogy van néhány nagyon egyszerű szöveg lép: 1000 00:59:18,320 --> 00:59:20,220 hello, világ. 1001 00:59:20,220 --> 00:59:23,940 Most hadd felfelé a tetejére ezt a fájlt, és meglátjuk, mi újság van. 1002 00:59:23,940 --> 00:59:27,710 Az első dolog, ami az új top up a script tag, 1003 00:59:27,710 --> 00:59:31,280 és azon belül a script tag nyilatkozat, amit bejelentett a funkciót. 1004 00:59:31,280 --> 00:59:34,610 Ahhoz, hogy állapítsa meg a funkció JavaScript, meglehetősen hasonló a PHP, 1005 00:59:34,610 --> 00:59:37,930 szó szerint írja függvény, akkor a nevét, a funkció, zárójel, 1006 00:59:37,930 --> 00:59:40,400 és talán néhány érvet, ha tart ilyen. 1007 00:59:40,400 --> 00:59:43,510 Aztán van a kapcsos zárójel a szokásos módon, és most van néhány kissé új kódot, 1008 00:59:43,510 --> 00:59:45,230 de lássuk, mit jelent ez. 1009 00:59:45,230 --> 00:59:48,670 Szóval var div, ez csak annyit jelent, adj egy változó nevezett div. 1010 00:59:48,670 --> 00:59:50,530 Tudtam volna nevezték foo, de szerettem volna, hogy legyen az úgynevezett div 1011 00:59:50,530 --> 00:59:52,620 okokból, hogy lesz nyilvánvaló a második. 1012 00:59:52,620 --> 00:59:57,480 Aztán kiderül, a JavaScript - és ez a JavaScript kódot tartalmazó my web page - 1013 00:59:57,480 --> 01:00:01,760 van egy speciális globális változó a fajta nevű dokumentum. 1014 01:00:01,760 --> 01:00:04,780 JavaScript valójában egy objektum-orientált nyelv. 1015 01:00:04,780 --> 01:00:07,230 Nem fogunk belemenni a részletekbe, 50, hogy mit jelent, 1016 01:00:07,230 --> 01:00:11,180 de most már tudom, hogy egy objektum nagyjából, mint egy struct. 1017 01:00:11,180 --> 01:00:14,740 Mint láttuk vissza, amikor az egyik legkorábbi probléma készletek 1018 01:00:14,740 --> 01:00:17,150 ahol egy csomó információt egy struct, 1019 01:00:17,150 --> 01:00:21,330 hasonlóképpen van dokumentálja egy speciális struct, hogy jön a böngésző, 1020 01:00:21,330 --> 01:00:24,810 jön bármilyen weboldalról. Ez nem olyasmi, amit létre. 1021 01:00:24,810 --> 01:00:28,210 Belül a dokumentum szerkezetét, mégis, akkor nem csak az adatok 1022 01:00:28,210 --> 01:00:30,010 de akkor is van funkciókkal. 1023 01:00:30,010 --> 01:00:34,090 >> És minden alkalommal, amikor egy függvény belsejében egy olyan struktúra, belsejében egy tárgy, 1024 01:00:34,090 --> 01:00:36,490 ezt hívják a módszert. De ez ugyanaz a dolog. 1025 01:00:36,490 --> 01:00:40,110 A módszer egy olyan funkció, hogy csak azért történik, hogy belül valami más. 1026 01:00:40,110 --> 01:00:42,990 Tehát ez azt jelenti, hogy ez a különleges globális változót nevezett dokumentum 1027 01:00:42,990 --> 01:00:47,690 van egy nevezett funkció getElementById, hogy szó szerint ezt csinálja. 1028 01:00:47,690 --> 01:00:52,460 Ez neked egy elemet a DOM Document Object Model, fa, 1029 01:00:52,460 --> 01:00:55,520 akinek ID ebben az esetben üdvözlést. 1030 01:00:55,520 --> 01:00:59,200 Más szavakkal, minden alkalommal, amikor fordított adatszerkezetek kerül szóba itt. 1031 01:00:59,200 --> 01:01:01,400 Ez a kép a DOM, hogy mi volt egy perce 1032 01:01:01,400 --> 01:01:06,100 annak ellenére, hogy az oldal egy kicsit más, ha lenne egy div ezen a képen, 1033 01:01:06,100 --> 01:01:11,180 milyen document.getElementById visszatér hozzám hatékonyan egy mutató 1034 01:01:11,180 --> 01:01:15,440 A téglalap a fa, a hivatkozás a téglalap a fán. 1035 01:01:15,440 --> 01:01:18,410 Szóval ez mit is jelent valójában hívni egy ilyen funkciókat. 1036 01:01:18,410 --> 01:01:21,960 Ebben az esetben is ez egy div. Ez nem egy szervezet vagy egy címet. 1037 01:01:21,960 --> 01:01:26,480 Akkor lássuk, mit tegye ezzel div most, hogy van ez belül ez a változó nevű div. 1038 01:01:26,480 --> 01:01:32,580 Kiderült, hogy a JavaScript megvan a képessége, hogy csípés a CSS az oldal dinamikusan. 1039 01:01:32,580 --> 01:01:39,060 Eddig az összes CSS tettünk korlátozottan ugyan, de ez a stílus jellemzőket, 1040 01:01:39,060 --> 01:01:41,730 vagy ha máshol nem tesszük CSS? 1041 01:01:42,730 --> 01:01:45,810 Valahogy megromlott, hogy az egyik. A stílus címke a tetején a fájlt. 1042 01:01:45,810 --> 01:01:49,180 Vagy harmadik helyen már? 1043 01:01:50,710 --> 01:01:54,590 >> Egy külső fájl valamit. Css. 1044 01:01:54,590 --> 01:01:56,730 Tehát ezek a 3 helyen tettünk CSS eddig, 1045 01:01:56,730 --> 01:01:59,310 de a fogás most már nehéz kódolni az egészet. 1046 01:01:59,310 --> 01:02:04,060 Úgy döntött, ahogy a galamb Pset 7, úgy döntöttünk, mielőtt előadást mi a CSS lenne. 1047 01:02:04,060 --> 01:02:07,380 De ha meg akarja változtatni a CSS-t, akkor tényleg csinálni 1048 01:02:07,380 --> 01:02:09,370 ha egyszer már a tényleges programozási nyelv. 1049 01:02:09,370 --> 01:02:13,910 CSS, HTML - nem programozási nyelv. A JavaScript. 1050 01:02:13,910 --> 01:02:18,200 Így kiderül, hogy amint egy ilyen téglalap a fáról 1051 01:02:18,200 --> 01:02:23,050 úgynevezett DOM, saját maga néhány adat benne. 1052 01:02:23,050 --> 01:02:27,820 Szóval a div, hogy én csak megragadta a fa van, mi fogunk hívni egy ingatlan belsejébe 1053 01:02:27,820 --> 01:02:34,390 nevezett stílus, és a stílus területén maga tulajdonság nevű láthatóságát. 1054 01:02:34,390 --> 01:02:37,330 Azt tudom, ezt csak keresi fel a CSS felhasználói kézikönyv. 1055 01:02:37,330 --> 01:02:41,160 Kiderült, hogy van egy láthatósági CSS tulajdonság, hogy azt teszi, amit mond. 1056 01:02:41,160 --> 01:02:44,530 Ez teszi valami látható vagy nem látható, vagy nem látható. 1057 01:02:44,530 --> 01:02:46,810 És hogyan teszel, hogy ez. 1058 01:02:46,810 --> 01:02:50,510 Azt kérdeztem algoritmikusan ha a láthatóságát ennek div rejtve van, 1059 01:02:50,510 --> 01:02:53,390 mit tudom megváltoztatni azt? Látható. 1060 01:02:53,390 --> 01:02:58,840 Különben, ha a láthatóságát ezen az oldalon nem rejtett, logikusan tudom tenni rejtett. 1061 01:02:58,840 --> 01:03:04,070 Fogalmam sincs, hogy miért ez a látható és rejtett, nem látható és láthatatlan. 1062 01:03:04,070 --> 01:03:06,000 Ez volt a rossz tervezési döntés az út mentén. 1063 01:03:06,000 --> 01:03:09,530 De ezek valóban ellentétes a CSS: látható és rejtett. 1064 01:03:09,530 --> 01:03:15,520 Mindez azonban nem azt jelenti, hogy változtatni a CSS az én fájlt be és ki, be-és kikapcsolása 1065 01:03:15,520 --> 01:03:16,870 az adott div. 1066 01:03:16,870 --> 01:03:20,630 De ismétlem, ez egy függvény neve villog. Mikor a blink nevezett funkció? 1067 01:03:20,630 --> 01:03:24,080 Kiderült, hogy van egy másik speciális globális változó nevű ablak, 1068 01:03:24,080 --> 01:03:28,220 hasonló szellemben a dokumentumban, de mivel a dokumentum hivatkozik a web oldalon, 1069 01:03:28,220 --> 01:03:31,700 mint a DOM fa, a HTML-t küldött a szerver, 1070 01:03:31,700 --> 01:03:35,250 ablak utal, hogy a króm körül, a címsorba, a címsor, 1071 01:03:35,250 --> 01:03:37,880 és minden ilyesmi körül a web oldalon. 1072 01:03:37,880 --> 01:03:42,800 >> És kiderül, hogy az ablak objektumnak van egy speciális funkciója belsejében felhívta setInterval 1073 01:03:42,800 --> 01:03:44,360 hogy azt teszi, amit mond. 1074 01:03:44,360 --> 01:03:48,600 Ez beállítani egy intervallum - ebben az esetben minden 500 milliszekundum - 1075 01:03:48,600 --> 01:03:52,270 és az, hogy egy találgatás, mi is fog tenni minden 500 milliszekundum? 1076 01:03:52,270 --> 01:03:55,240 Ez lesz végrehajtani ezt a funkciót villog. 1077 01:03:55,240 --> 01:03:58,560 És milyen szép itt, hogy mi lehetett volna ezt a C-ben annak ellenére, hogy soha nem volt. 1078 01:03:58,560 --> 01:04:01,580 C rendelkezik egy úgynevezett függvénymutatók ahol átadhatók funkciókat körül 1079 01:04:01,580 --> 01:04:03,140 argumentumként. 1080 01:04:03,140 --> 01:04:07,620 Hasonlóképpen JavaScript tudja átadni a függvény nevét egy másik funkció. 1081 01:04:07,620 --> 01:04:10,630 És észre, mit csinálok. Én ezt nem csinálom. 1082 01:04:10,630 --> 01:04:14,380 Ha tettem után zárójelben villog, ez azt jelentené, hívja a blink funkciót. 1083 01:04:14,380 --> 01:04:17,430 Ha kihagyja őket, azt jelenti, hogy itt a blink funkció 1084 01:04:17,430 --> 01:04:21,330 hogy a setInterval nevezhetjük minden 500 milliszekundum. 1085 01:04:21,330 --> 01:04:28,200 Tehát a végeredmény, kegyetlen bár az, hogy ha bemegy localhost és menjen blink.html, 1086 01:04:28,200 --> 01:04:32,120 Most van ez történik újra és újra. 1087 01:04:32,120 --> 01:04:34,950 És ha én tényleg Ellenőrizzük Element, lássuk, ha látjuk ezt. 1088 01:04:34,950 --> 01:04:38,550 Hadd Ellenőrizzük Element, hadd lapozzunk lefelé egy kicsit, 1089 01:04:38,550 --> 01:04:44,320 én döntöm el Elements ide, és vegyük észre a DOM belsejében Chrome ellenőr. 1090 01:04:44,320 --> 01:04:48,840 Ez szó szerint változik oda-vissza minden 500 milliszekundum. 1091 01:04:48,840 --> 01:04:55,660 Ha elmegyünk a barátunk Nate, 1092 01:04:55,660 --> 01:05:00,020 ha valaha is azon, hogy ez hogyan működik, hasonló ötlet egy intervallumot, 1093 01:05:00,020 --> 01:05:04,810 de Nate valójában, hogy nagyon hatékony a színes ebben a konkrét esetben van. 1094 01:05:04,810 --> 01:05:07,350 Szóval, mi többet tudunk ténylegesen ezzel? 1095 01:05:07,350 --> 01:05:09,990 Nyissuk fel egy másik példát, és próbálj ki valami 1096 01:05:09,990 --> 01:05:12,940 ez programból még hasznosabb, mint a dolgok villog. 1097 01:05:12,940 --> 01:05:17,990 Hadd menjek a mi formák könyvtárba ma bemegy form0. 1098 01:05:17,990 --> 01:05:20,820 Ez volt a legrondább lehetséges formája, hogy én is felér, 1099 01:05:20,820 --> 01:05:23,290 és hadd mutassam meg, hogy néz ki a böngészőben. 1100 01:05:23,290 --> 01:05:28,960 >> Hadd menjek be localhost / formák, és ez form0. 1101 01:05:28,960 --> 01:05:33,400 Ez egy szuper csúnya HTML formában, hogy van egy néhány területen az e-mail, a jelszót, 1102 01:05:33,400 --> 01:05:37,190 jelszót, majd egy kis négyzetet, hogy egyezzen bele bizonyos feltételeket. 1103 01:05:37,190 --> 01:05:41,350 A fogást, ha meglátogatom ezt az űrlapot, és nem akarom, hogy az Ön e-mail címemet, 1104 01:05:41,350 --> 01:05:44,730 Nem akarom, hogy fogadja el a feltételeket talán tudom kattintson a Regisztrálás 1105 01:05:44,730 --> 01:05:46,920 és ez lehetővé teszi, engem egyébként. 1106 01:05:46,920 --> 01:05:50,800 Ez történik, hogy nyújtson be egy hülye PHP nevű fájlt dump.php. 1107 01:05:50,800 --> 01:05:58,420 Csak annyit tesz, nyomtassa ki a tartalmát a $ _GET csak diagnosztikai célokra. 1108 01:05:58,420 --> 01:06:01,580 Ez volt, amit nyújtott be a felhasználó által éppen most. 1109 01:06:01,580 --> 01:06:05,010 De tegyük fel, hogy valóban szeretnénk érvényesíteni a felhasználó beadvány formájában. 1110 01:06:05,010 --> 01:06:06,530 Hadd menjek be 1-es verzióját. 1111 01:06:06,530 --> 01:06:11,420 Ez form1.html. Úgy néz ki, esztétikailag ugyanolyan rossz, hanem észre, mennyire divatos is. 1112 01:06:11,420 --> 01:06:15,450 Ha kattint Regisztráció nélkül együttműködő, kapok kiabáltam. 1113 01:06:15,450 --> 01:06:17,320 "Meg kell adnia e-mail címét." 1114 01:06:17,320 --> 01:06:21,670 Rendben van. Akkor hadd próbáljam meg azt. Szóval malan@harvard.edu. Nekem nem kell a jelszót. 1115 01:06:21,670 --> 01:06:25,100 Regisztráció. "Meg kell adnia egy jelszót." Rendben van. 1116 01:06:25,100 --> 01:06:28,470 Szóval nyújt jelszót bíbor. Regisztráció. 1117 01:06:28,470 --> 01:06:32,300 "A jelszavak nem egyeznek." Meg kell most írja be a vörös itt. 1118 01:06:32,300 --> 01:06:35,710 Véletlenül ellenőrizni ezt. Regisztráció. 1119 01:06:35,710 --> 01:06:39,860 "El kell fogadnia a feltételeket." Rendben van. Egyetért ott. Regisztráció. 1120 01:06:39,860 --> 01:06:43,700 És most azt mutatja nekem a diagnosztikai kimenet ott. 1121 01:06:43,700 --> 01:06:45,630 >> Szóval, mi történt? 1122 01:06:45,630 --> 01:06:48,330 Már volt ez a képessége, hogy érvényesítse űrlapot beküldeni. 1123 01:06:48,330 --> 01:06:51,420 Sőt, ha nem belevetik magukat Pset 7, van egy elnézést funkció 1124 01:06:51,420 --> 01:06:54,620 teszi, hogy elég könnyű kiabálni a felhasználót egy üzenet jelenik meg a képernyőn. 1125 01:06:54,620 --> 01:06:57,580 Én egy kicsit más mechanizmus, a riasztási funkció, 1126 01:06:57,580 --> 01:07:03,690 amely nem egy függvény, ami rámosolygott, mivel ez teszi nagyon csúnya felhasználói üzeneteket. 1127 01:07:03,690 --> 01:07:05,710 De nézzük, hogy mit csinálok itt. 1128 01:07:05,710 --> 01:07:09,620 Ez form1.html, és észreveszi, hogy van néhány nagyon ismerős szintaxist: 1129 01:07:09,620 --> 01:07:12,920 body tag, form tag, akció attribútum, módszer attribútum. 1130 01:07:12,920 --> 01:07:17,050 De észre adtam a forma egy egyedi azonosító, az egyszerűség kedvéért. 1131 01:07:17,050 --> 01:07:19,190 Aztán kaptam egy e-mailt, amelynek mező típusa szöveg, 1132 01:07:19,190 --> 01:07:23,780 a jelszó mező, amelynek típusa jelszót megerősítés mezőt, amelynek típusa jelszó, 1133 01:07:23,780 --> 01:07:28,070 majd egy jelölőnégyzetet, amelynek neve megegyezés ide, írja be a jelölőnégyzetet. 1134 01:07:28,070 --> 01:07:30,380 És aztán van egy submit gomb. 1135 01:07:30,380 --> 01:07:33,050 De észre a tetején, amit több van. 1136 01:07:33,050 --> 01:07:35,810 Először is, van egy másik használata a script tag. 1137 01:07:35,810 --> 01:07:40,520 Ha van valamilyen JavaScript kódot a másik fájl, mint a CSS felveheti azt. 1138 01:07:40,520 --> 01:07:44,530 És te, hogy a script forrását, aztán észre én csatlakozó látszólag 1139 01:07:44,530 --> 01:07:50,349 hogy googleapis.com egy nagyon hosszú út, de akiknek a fájl neve végződik jquery.min 1140 01:07:50,349 --> 01:07:52,420 minimális. js. 1141 01:07:52,420 --> 01:07:55,969 jQuery egy szuper népszerű JavaScript könyvtár, hogy csak teszi a JavaScript 1142 01:07:55,969 --> 01:07:58,230 Annál is inkább felhasználóbarát használni. 1143 01:07:58,230 --> 01:08:00,610 Ez gyakorlatilag vált de facto szabvánnyá. 1144 01:08:00,610 --> 01:08:04,090 Tehát annak ellenére, hogy mit fogsz látni, hogy nem tiszta a JavaScript programot önmagában, 1145 01:08:04,090 --> 01:08:09,340 ez egy könyvtár tetején JavaScript ugyanúgy, mint a CS50 könyvtár egy réteg 1146 01:08:09,340 --> 01:08:13,670 tetején alacsony szintű C kód, a valóságban szinte mindenki az interneten, azt használja. 1147 01:08:13,670 --> 01:08:18,030 Tehát ezek nem képzési kerekek. Ez csak a legjobb gyakorlat ezekben a napokban. 1148 01:08:18,030 --> 01:08:22,830 Most már észre, alatta az én saját script tag, és észre mit tettem ide. 1149 01:08:22,830 --> 01:08:27,450 Kiderül, hogy jQuery csinál egy kicsit díszes. 1150 01:08:27,450 --> 01:08:29,660 JavaScript dollár jelek, de értelmetlen. 1151 01:08:29,660 --> 01:08:32,870 >> Olyanok, mint a betű A vagy B vagy C 1152 01:08:32,870 --> 01:08:36,670 jQuery egyszerűen elfogadta az egyezmény vagy a fajta igényt arra a tényre, 1153 01:08:36,670 --> 01:08:40,280 hogy a $ lesz, a speciális szimbólum. 1154 01:08:40,280 --> 01:08:44,950 Szóval, amint betölti a globális JavaScript fájlt ide a script tag, 1155 01:08:44,950 --> 01:08:49,080 van hozzáférése egy speciális globális változó, hogy hívják $. 1156 01:08:49,080 --> 01:08:53,009 Ez pontosabban jQuery hívják, de ez nem úgy néz ki majdnem olyan szexi, mint $. 1157 01:08:53,009 --> 01:08:56,250 De a $ nincs speciális jelentése van. A PHP volt speciális jelentése van. 1158 01:08:56,250 --> 01:08:58,440 Meg kellett volna ez előtt egy változó. 1159 01:08:58,440 --> 01:09:01,670 Ez csak egy szexi dolog, hogy vette. 1160 01:09:01,670 --> 01:09:03,389 Mi folyik itt? 1161 01:09:03,389 --> 01:09:08,830 Figyeljük meg vagyok halad a jQuery függvény my globális változó dokumentum 1162 01:09:08,830 --> 01:09:10,860 majd hívom. kész. 1163 01:09:10,860 --> 01:09:15,480 Mit jQuery lényegében jelent ez lehetővé teszi, hogy néhány vanília JavaScript dolgot 1164 01:09:15,480 --> 01:09:17,889 mint például a dokumentum objektum, az ablak objektumnak, 1165 01:09:17,889 --> 01:09:20,790 és ha azt át szándékozik a jQuery funkció - 1166 01:09:20,790 --> 01:09:24,429 és újra, hogy világos legyen, ez egy függvény neve jQuery - 1167 01:09:24,429 --> 01:09:28,240 mit csinál ez visszatér egy speciális változata a dokumentum 1168 01:09:28,240 --> 01:09:30,700 amely több funkció társul hozzá. 1169 01:09:30,700 --> 01:09:34,760 Tehát nyers JavaScript nincs kész funkció, 1170 01:09:34,760 --> 01:09:37,810 de ha át dokumentumot a jQuery függvény első, 1171 01:09:37,810 --> 01:09:40,960 visszatér egy speciális változata a dokumentum objektum 1172 01:09:40,960 --> 01:09:43,030 hogy több képzelet jellegét. 1173 01:09:43,030 --> 01:09:48,230 És ez az, amiért az emberek tetszik. Ez csak megkönnyíti a dolgokat csinálni, ahogy mindjárt látni. 1174 01:09:48,230 --> 01:09:49,820 Szóval, mit jelent ez kódsort jelent? 1175 01:09:49,820 --> 01:09:52,690 Ez a vonal a kód itt azt jelenti, ha a dokumentum készen áll - 1176 01:09:52,690 --> 01:09:56,830 Más szóval, ha a böngésző történik olvassa ezt a fájlt felső lefelé - 1177 01:09:56,830 --> 01:09:59,200 megy előre, és hajtsa végre a következő funkciót. 1178 01:09:59,200 --> 01:10:03,540 Ami igazán érdekes a JavaScript - és a PHP van ez is - 1179 01:10:03,540 --> 01:10:05,450 anonim függvények. 1180 01:10:05,450 --> 01:10:10,560 A JavaScript segítségével állapítsa funkciók nincs neve, de van egy test. 1181 01:10:10,560 --> 01:10:12,570 Figyeljük meg, mi történik itt. 1182 01:10:12,570 --> 01:10:16,220 >> Ez a funkció az úgynevezett kész, és ez csak azt jelenti, végezze el az alábbi 1183 01:10:16,220 --> 01:10:20,220 amikor az egész weblap kész, amikor ez mind olvasni a szerverről. 1184 01:10:20,220 --> 01:10:23,090 Mit akarsz tenni? Azt akarom, hogy végre egy darab kódot. 1185 01:10:23,090 --> 01:10:27,120 Figyeljük meg, hogy nem akarjuk, hogy végre ezt a kódot azonnal. 1186 01:10:27,120 --> 01:10:34,350 Ha kimaradt ez, ez azt jelentené, hogy azonnal kezdjék meg a végrehajtó ezeket a sorokat a kódot. 1187 01:10:34,350 --> 01:10:39,040 De az a tény, hogy én mondom, nem, nem, nem, csomagolja ezt egy névtelen függvényt, mint ez 1188 01:10:39,040 --> 01:10:43,000 eszközökkel nem hajtják végre, hogy még, hívja végül. 1189 01:10:43,000 --> 01:10:45,430 Láttuk ezt egy pillanattal ezelőtt előző formában példa. 1190 01:10:45,430 --> 01:10:49,990 Mit funkció nem nevezünk végül, 500 milliszekundum később? Blink. 1191 01:10:49,990 --> 01:10:51,480 Így ugyanazt a gondolatot. 1192 01:10:51,480 --> 01:10:53,950 Ismét, még akkor is, ha ez úgy néz ki, egy kicsit furcsa, csak hogy most a hit 1193 01:10:53,950 --> 01:10:57,060 hogy a közös piaccal összeegyeztethetőnek nyilvánítja egy névtelen függvényt hívják végül 1194 01:10:57,060 --> 01:11:01,720 egyszerűen levelet function () { 1195 01:11:01,720 --> 01:11:05,380 Szóval mit kód fogunk végrehajtani végül? A következő. 1196 01:11:05,380 --> 01:11:10,460 Ez is úgy néz ki, egy kicsit új, de ez azt jelenti, itt a jQuery funkció 1197 01:11:10,460 --> 01:11:13,430 és ez most egy parancsikont. 1198 01:11:13,430 --> 01:11:18,830 Ez a kódrészletet a HTML alján a képernyő természetesen van néhány fa képviselet. 1199 01:11:18,830 --> 01:11:21,730 Ez nem ezt. Ez az oldal sokkal érdekesebb, mint ez hello, világ példa. 1200 01:11:21,730 --> 01:11:25,210 De van néhány fa, amely megfelel az e HTML. 1201 01:11:25,210 --> 01:11:28,910 Ez lenne a fájdalom a nyak kelljen végrehajtani valamilyen rekurzív függvény 1202 01:11:28,910 --> 01:11:34,380 kezdeni a gyökér csomópontot, majd keresse meg a csomópontot, amelynek azonosítója regisztráció. 1203 01:11:34,380 --> 01:11:38,340 Szóval mi jQuery teszi szuper könnyű számunkra szó ez. 1204 01:11:38,340 --> 01:11:43,000 Menj előre, és hozz nekem bármit div, vagy bármilyen formában, bármilyen HTML elem 1205 01:11:43,000 --> 01:11:45,820 van egy azonosítója regisztráció. 1206 01:11:45,820 --> 01:11:52,440 Ez megfelel document.getElementById ("év"). 1207 01:11:52,440 --> 01:11:54,170 >> Miért hasonló emberek jQuery? 1208 01:11:54,170 --> 01:12:00,110 Mert rövidebb beírni. De ez minden. Ez ugyanaz a gondolat. 1209 01:12:00,110 --> 01:12:02,630 Szerezd meg a címkét, amelynek azonosítója regisztráció. 1210 01:12:02,630 --> 01:12:06,300 És amikor ez tag, amely történetesen egy űrlapot, benyújtják, 1211 01:12:06,300 --> 01:12:08,300 megy előre, és hajtsa végre ezt a kódot. 1212 01:12:08,300 --> 01:12:11,320 Szóval vessünk egy pillantást most hogyan csinálunk űrlap érvényesítését. 1213 01:12:11,320 --> 01:12:15,950 A szintaxis ugyan rejtélyes először, de mi folyik itt? 1214 01:12:15,950 --> 01:12:21,050 Ha ezt a kódsort igaz, fogom kiabálni a felhasználót, hogy a saját e-mail címét. 1215 01:12:21,050 --> 01:12:22,970 Tehát mi is ebben a sorban a kód? 1216 01:12:22,970 --> 01:12:25,560 $ Olyan jQuery. Most már észre ezt. 1217 01:12:25,560 --> 01:12:27,920 Ez a fajta, mint a CSS. 1218 01:12:27,920 --> 01:12:33,370 Ha már lebukott CSS még, akkor tudja, hogy ez azt jelenti, az elem, amelynek azonosítója regisztráció. 1219 01:12:33,370 --> 01:12:39,840 A tér olyan talál egy gyermek vagy egy leszármazottja év akinek a neve bemenet. 1220 01:12:39,840 --> 01:12:42,970 És akkor ez a dolog a szögletes zárójelben egy kis szűrőt. 1221 01:12:42,970 --> 01:12:47,010 És még ha ez úgy néz ki rejtélyes, ez csak azt jelenti, megy a forma, amelynek azonosító nyilvántartásba vételét, 1222 01:12:47,010 --> 01:12:51,230 megy az input elem belsejében, hogy akinek a neve e-mail, 1223 01:12:51,230 --> 01:12:55,440 majd kap értékét, bármi értéke történik, hogy - 1224 01:12:55,440 --> 01:12:59,670 asdf ha ez minden, amit írógéppel vagy malan@harvard.edu ha ez az, amit beírt. 1225 01:12:59,670 --> 01:13:05,250 Szóval, ha az érték az űrlap email mező == semmit, kiabálni a felhasználót. 1226 01:13:05,250 --> 01:13:09,700 Különben, ha az érték a jelszó mező == semmit, kiabálni a felhasználót. 1227 01:13:09,700 --> 01:13:19,520 >> Különben, ha az érték a jelszó mező nem egyenlő az érték a jóváhagyási mezőbe, 1228 01:13:19,520 --> 01:13:22,850 amely a más formában elem, kiabálni a felhasználót. 1229 01:13:22,850 --> 01:13:25,680 És végül - és ezt is van néhány új szintaxisa a saját, 1230 01:13:25,680 --> 01:13:29,270 de ha egyszer láttam, ez legalább egy kicsit ésszerű - 1231 01:13:29,270 --> 01:13:34,060 else if az űrlap, amelynek azonosítója év van egy input elem, akinek a neve megegyezés 1232 01:13:34,060 --> 01:13:39,720 és ez be van jelölve, megy előre, és kiabálni a felhasználót. 1233 01:13:39,720 --> 01:13:42,520 Szóval teljesen elismerem ez teljesen elsöprő első pillantásra. 1234 01:13:42,520 --> 01:13:46,530 Ez egy csomó új szintaxist. De minden jQuery követi az ilyen jellegű minták. 1235 01:13:46,530 --> 01:13:49,880 És őszintén szólva, én nem is tudom, ez létezett, amíg néhány perccel ezelőtt. 1236 01:13:49,880 --> 01:13:53,640 Én googled "Hogyan ellenőrizheti, hogy egy jelölőnégyzet be van jelölve a jQuery?" 1237 01:13:53,640 --> 01:13:55,680 és ez a szintaxis, mert nincs különböző módon csinálja 1238 01:13:55,680 --> 01:13:58,010 a tényleges nyers JavaScript kódot. 1239 01:13:58,010 --> 01:14:01,030 Szóval, az első lapja Probléma Set 7 hangsúlyozza, 1240 01:14:01,030 --> 01:14:04,500 Pset 7 nagyon sok olyan gyakorlat bootstrapping magad 1241 01:14:04,500 --> 01:14:08,650 ahol általunk biztosított, remélhetőleg, a fogalmi keret, amellyel kezelni a Pset. 1242 01:14:08,650 --> 01:14:12,280 >> De ahogy az gyakran előfordul a web design, ez rajtad múlik, hogy tényleg piszkálni körül, 1243 01:14:12,280 --> 01:14:16,680 bele kódrészletek és példák a webről, amíg te idézni őket 1244 01:14:16,680 --> 01:14:17,960 a per a feltételeket, hogy az első lemez, 1245 01:14:17,960 --> 01:14:21,460 és rájön, hogy a tanulás a HTML, CSS, JavaScript és még SQL 1246 01:14:21,460 --> 01:14:26,020 valóban azt jelentette, hogy ezt otthon edzés kezdjük, hogy e képzési kerekekkel. 1247 01:14:26,020 --> 01:14:29,150 És észre is van olyan sok más dolog, amit tehetünk a böngészőben. 1248 01:14:29,150 --> 01:14:33,790 Belül a legtöbb ilyen elemek vannak más dolgok úgynevezett eseménykezelőt. 1249 01:14:33,790 --> 01:14:37,140 És bár mi csak néztem is nevezett onSubmit és onready, 1250 01:14:37,140 --> 01:14:40,310 meg tudod csinálni dolgokat, mint onkeydown, onkeyup, 1251 01:14:40,310 --> 01:14:43,410 mint amikor a felhasználó megérinti a gombot, akkor figyelj arra és a gomb felfelé. 1252 01:14:43,410 --> 01:14:45,940 Gmail billentyűparancsokat. 1253 01:14:45,940 --> 01:14:49,490 Hogyan Google végre billentyűparancsokat, mint a C-komponálni? 1254 01:14:49,490 --> 01:14:54,120 Ők hallgatni az eseményeket, ahogy ők nevezik, mint onkeypress vagy onkeyup és onkeydown. 1255 01:14:54,120 --> 01:14:56,360 Ha valaha is lebegett a kurzort az egyes menüpontot 1256 01:14:56,360 --> 01:15:00,180 és hirtelen, íme, egy menü jelenik meg, vagy a grafika színe megváltozik, 1257 01:15:00,180 --> 01:15:01,920 hogyan csinálják ezt? 1258 01:15:01,920 --> 01:15:06,940 Ahelyett, hogy figyelj a onready vagy onSubmit, akkor figyelj a onmouseover vagy onMouseOut. 1259 01:15:06,940 --> 01:15:10,920 >> Így rövid, ezekkel nagyon egyszerű alapokat, hogy már elkezdték karcolja meg a felületét a mai 1260 01:15:10,920 --> 01:15:13,940 és mi merüljön tovább szerdán, van, egyre inkább 1261 01:15:13,940 --> 01:15:17,530 teljesítmény végrehajtásához a fajta dolog, hogy te már ismert. 1262 01:15:17,530 --> 01:15:21,620 Szóval vége van, és mi folytatjuk ezt szerdán. 1263 01:15:22,690 --> 01:15:24,320 >> [CS50.TV]