1 00:00:00,000 --> 00:00:11,330 2 00:00:11,330 --> 00:00:12,360 >> DAVID MALAN: Rendben. 3 00:00:12,360 --> 00:00:15,970 Ez CS50, és ez a A hét végén kilenc. 4 00:00:15,970 --> 00:00:18,560 Ez egy forgószél fölött az elmúlt napokban. 5 00:00:18,560 --> 00:00:21,580 És a probléma meg hét, ha térd mélyen bele, megérted, hogy elég 6 00:00:21,580 --> 00:00:23,340 bit Újdonság, hogy ott van. 7 00:00:23,340 --> 00:00:26,660 De nézzük, ha nem tudjuk rakni mindent együtt itt röviden 8 00:00:26,660 --> 00:00:29,230 addig veering ki még más irányba, és látta, 9 00:00:29,230 --> 00:00:30,510 Hol máshol mehetünk. 10 00:00:30,510 --> 00:00:32,630 >> Tehát eddig beszéltünk HTML. 11 00:00:32,630 --> 00:00:33,740 Már beszéltünk CSS. 12 00:00:33,740 --> 00:00:34,705 Már beszéltünk a PHP. 13 00:00:34,705 --> 00:00:36,520 Már kezdett megtapasztalni SQL. 14 00:00:36,520 --> 00:00:38,360 Ma fogunk beszélni egy kicsit a JavaScript. 15 00:00:38,360 --> 00:00:41,230 De hogyan mindezen különböző nyelvek illeszkednek egymáshoz? 16 00:00:41,230 --> 00:00:44,970 >> Így beszélgettünk múlt héten a fogalmát, amelynek a szerveren. 17 00:00:44,970 --> 00:00:48,470 Szóval csak felhívni a téglalap a web szerver itt. 18 00:00:48,470 --> 00:00:52,200 És egy webszerver szolgál biztosan fájlokat. 19 00:00:52,200 --> 00:00:54,640 És néhány ilyen fájl Lehet HTML fájlokat. 20 00:00:54,640 --> 00:00:58,270 Tehát az egyik dolog, hogy a webszerver akkor kiköp lehet egy fájlt 21 00:00:58,270 --> 00:01:01,290 akkor csak rajzolni ilyen tartalmaz néhány HTML. 22 00:01:01,290 --> 00:01:04,786 Így a laikus szempontból, milyen nem HTML segítségével csinálni? 23 00:01:04,786 --> 00:01:06,036 >> Közönség: Oldal néz. 24 00:01:06,036 --> 00:01:09,670 25 00:01:09,670 --> 00:01:12,310 >> DAVID MALAN: OK, hogy egy oldalt néz, bár azt hiszem, már bizonyított 26 00:01:12,310 --> 00:01:13,370 amelyek egyébként. 27 00:01:13,370 --> 00:01:18,250 Tehát HTML nem enged feküdt ki oldalakat szerkezetileg, és lehetővé teszi, hogy 28 00:01:18,250 --> 00:01:22,410 egyfajta esztétikai jel egy oldalt, jelölje ki a statikus tartalmat, így 29 00:01:22,410 --> 00:01:23,640 Ezután nézd meg egy böngészőben. 30 00:01:23,640 --> 00:01:24,690 >> De ez a kulcs. 31 00:01:24,690 --> 00:01:26,130 Ez statikus tartalmat. 32 00:01:26,130 --> 00:01:28,590 Írsz, akkor mentse el, és akkor küldje. 33 00:01:28,590 --> 00:01:31,130 És a web szerver szolgálja majd fel, hogy a látogatók. 34 00:01:31,130 --> 00:01:35,700 >> De stilizál dolgok egy másik nyelv összesen. 35 00:01:35,700 --> 00:01:40,150 Kezdtük használni a style attribútum bizonyos címkéket. 36 00:01:40,150 --> 00:01:43,400 És a stílus attribútum nézzük meg dolgok, mint a betűk méretét és színét. 37 00:01:43,400 --> 00:01:46,460 És akkor már valószínűleg indult felfedezni, vagy hamarosan lesz a végső 38 00:01:46,460 --> 00:01:50,160 projektek lehetséges, de a többi tulajdonságokat, amelyek segítségével a CSS. 39 00:01:50,160 --> 00:01:54,710 És így a laikus szempontból, milyen Tényleg így lesz CSS csinálni? 40 00:01:54,710 --> 00:01:57,810 Ezek csak példák. 41 00:01:57,810 --> 00:02:00,730 Mit segítségével csinálni, hogy a HTML úgy tűnik, nem az, amit 42 00:02:00,730 --> 00:02:02,606 láttunk eddig? 43 00:02:02,606 --> 00:02:04,850 >> Közönség: Határozza stílusok egyedül. 44 00:02:04,850 --> 00:02:06,700 >> DAVID MALAN: Define stílusok egyedül. 45 00:02:06,700 --> 00:02:10,280 Így határozza meg a dolgokat, mint osztályok, mint te Lehet, hogy találkozott, vagy jellegzetesen 46 00:02:10,280 --> 00:02:13,800 azonosítja csomópontok egy dokumentummal, hogy lehet stilizál őket. 47 00:02:13,800 --> 00:02:16,890 De még pontosabban, azt mondanám, hogy a CSS valóban lehetővé teszi, hogy a dolgokat a 48 00:02:16,890 --> 00:02:20,790 utolsó mérföld, és lehetővé teszi, hogy meghatározza sokkal pontosabban az esztétika, 49 00:02:20,790 --> 00:02:24,340 míg HTML a legtöbb teszi a szerkezet az oldalakat. 50 00:02:24,340 --> 00:02:27,310 >> És bár van néhány alapértelmezett, mint láttuk, a tag 51 00:02:27,310 --> 00:02:30,690 egy cím tag, ami nagyjából a dolgokat nagy és merész. 52 00:02:30,690 --> 00:02:34,250 Ez egy elég általános definíció A tag - nagy és merész. 53 00:02:34,250 --> 00:02:35,260 Milyen betűméret ez? 54 00:02:35,260 --> 00:02:36,080 Milyen színű ez? 55 00:02:36,080 --> 00:02:36,890 Milyen merész ez? 56 00:02:36,890 --> 00:02:39,830 És CSS segítségével finomabban dallam ilyesmi. 57 00:02:39,830 --> 00:02:42,150 Csakúgy, mint az elrendezés, mint néhány láttátok. 58 00:02:42,150 --> 00:02:45,180 >> És őszintén szólva, egy kicsit CSS A rendetlen nyelvet. 59 00:02:45,180 --> 00:02:48,370 Ez nagyon erős, hogy tudod, hogy szó minden olyan webhelyet, hogy már 60 00:02:48,370 --> 00:02:51,880 látható az interneten ma, de ez egyfajta fájdalom a nyak. 61 00:02:51,880 --> 00:02:54,440 És néhányan felrobbant a fejed ellen a falak már csak azért, hogy 62 00:02:54,440 --> 00:02:58,560 valami buta, mint a központ menü probléma meg hét, ha már ütött, hogy 63 00:02:58,560 --> 00:02:59,470 Ezen a ponton már. 64 00:02:59,470 --> 00:03:01,530 >> De észre, ezek a dolgok könnyebb az idő múlásával. 65 00:03:01,530 --> 00:03:02,820 Elkezdi észrevenni mintákat. 66 00:03:02,820 --> 00:03:06,020 És ismét, a Google a barátod a különböző módszereket, amelyek segítségével 67 00:03:06,020 --> 00:03:07,220 megoldani az ilyen jellegű problémákat. 68 00:03:07,220 --> 00:03:11,520 >> És merem mondani, a CSS és HTML több általában meg lehet oldani problémákat 69 00:03:11,520 --> 00:03:15,910 több szempontból, amelyek közül mindegyik nagyon is lehet helyes, mint amit 70 00:03:15,910 --> 00:03:18,900 valami, mint a C, akár Most PHP vagy JavaScript. 71 00:03:18,900 --> 00:03:21,080 Már csak sok különböző módon feküdt a dolgokat. 72 00:03:21,080 --> 00:03:22,570 >> De ez kezdett el piszkos, azt mondta. 73 00:03:22,570 --> 00:03:26,480 Csak egyfajta keveredését a HTML és A CSS a stílus attribútum 74 00:03:26,480 --> 00:03:27,590 egy kicsit hanyag. 75 00:03:27,590 --> 00:03:31,460 És így ahelyett, hogy azt mondta, egyfajta absztrakt értelemben, hogy meg kell 76 00:03:31,460 --> 00:03:34,050 legalábbis kezd tényező ki a CSS valószínűleg. 77 00:03:34,050 --> 00:03:37,430 Nem a stílus jellemzőket, de legalább a stílus, amit belső tag 78 00:03:37,430 --> 00:03:38,840 része a weboldal? 79 00:03:38,840 --> 00:03:39,560 >> Közönség: Head. 80 00:03:39,560 --> 00:03:40,120 >> DAVID MALAN: a fejét. 81 00:03:40,120 --> 00:03:43,270 Eddig csak volt a cím fel ott van, de akkor is hozzá a stílus 82 00:03:43,270 --> 00:03:47,230 tag, és akkor tegye a CSS durván beszélő felé az oldal tetején. 83 00:03:47,230 --> 00:03:52,550 De aztán vette a dolgokat egy lépéssel tovább és tényezőként, hogy többet 84 00:03:52,550 --> 00:03:54,130 egy külön fájlban. 85 00:03:54,130 --> 00:03:57,240 >> És így a két fájlt is valahogy most kapcsolódik. 86 00:03:57,240 --> 00:03:59,550 És valóban ez volt a tag, hogy csináltam. 87 00:03:59,550 --> 00:04:02,920 És mi volt az egyik átfogó motivációk faktoring meg a CSS 88 00:04:02,920 --> 00:04:04,057 annál is inkább? 89 00:04:04,057 --> 00:04:05,280 >> Közönség: Újrafelhasználhatóság. 90 00:04:05,280 --> 00:04:05,785 >> DAVID MALAN: Újrafelhasználhatóság. 91 00:04:05,785 --> 00:04:06,150 Nem igaz? 92 00:04:06,150 --> 00:04:09,470 Lehet, hogy látta a p-set hét már hogy sok az oldal, a 93 00:04:09,470 --> 00:04:12,260 vásárlási oldal, az eladási oldal, a portfólió oldal, valószínűleg 94 00:04:12,260 --> 00:04:13,550 strukturált némileg hasonlóan. 95 00:04:13,550 --> 00:04:17,579 Van egy CS50 pénzügyi logót a tetején kivéve, ha már úgy döntött, hogy nem változtatja. 96 00:04:17,579 --> 00:04:19,839 Van egy lábléc a az oldal alján található. 97 00:04:19,839 --> 00:04:24,315 És CSS lehetővé teszi majd, hogy tényező, hogy ki azt egy külön fájlban, hogy ha 98 00:04:24,315 --> 00:04:27,780 meg akarja változtatni valamit globálisan között az egész oldalon, akkor az tényleg 99 00:04:27,780 --> 00:04:29,390 csak változtassa meg egy helyen. 100 00:04:29,390 --> 00:04:32,750 >> De van egy ár, amit fizetni esetleg azáltal, hogy faktorált ki az 101 00:04:32,750 --> 00:04:38,380 CSS az én HTML fájlt egy külön fájl hivatkozás azt a 102 00:04:38,380 --> 00:04:40,650 tag, amit látott hétfőn. 103 00:04:40,650 --> 00:04:43,850 Mi lehet a hátránya, hogy ez? 104 00:04:43,850 --> 00:04:48,830 Visszagondolva egy héttel ezelőtt, amikor mi vagyunk beszél a HTTP és TCP / IP és hogyan 105 00:04:48,830 --> 00:04:52,070 működik az internet. 106 00:04:52,070 --> 00:04:53,530 Valami itt? 107 00:04:53,530 --> 00:04:54,730 >> Közönség: Ez több időt vesz igénybe. 108 00:04:54,730 --> 00:04:55,470 >> DAVID MALAN: Ez több időt vesz igénybe. 109 00:04:55,470 --> 00:04:56,750 Miért? 110 00:04:56,750 --> 00:04:59,450 >> Közönség: [hallható]. 111 00:04:59,450 --> 00:04:59,750 >> DAVID MALAN: Igen. 112 00:04:59,750 --> 00:05:01,240 Tehát ez vitathatatlanul tart egy kicsit több időt. 113 00:05:01,240 --> 00:05:04,290 Mert az egyik, a CSS nyilvánvalóan nem ugyanaz a fájl. 114 00:05:04,290 --> 00:05:06,920 Tehát most van, hogy nem egy, hanem két kérelmet. 115 00:05:06,920 --> 00:05:11,230 És minden egyes ilyen kérelmek láttuk Chrome-ban az úgynevezett Inspector, 116 00:05:11,230 --> 00:05:15,740 és néztük a Network fülön, minden ezeket a fájlokat igényel egy HTTP- 117 00:05:15,740 --> 00:05:18,360 igény, amit láttunk tart bizonyos mennyiségű időt. 118 00:05:18,360 --> 00:05:19,290 Nos, lehet, hogy nem sok. 119 00:05:19,290 --> 00:05:20,670 Lehet, hogy csak 20 milliszekundum. 120 00:05:20,670 --> 00:05:22,260 Lehet, hogy 200 milliszekundum. 121 00:05:22,260 --> 00:05:25,530 >> De gondolj egy oldalt, mint a Facebook, vagy a CNN, vagy a Google, amelyek sokkal 122 00:05:25,530 --> 00:05:28,060 nagyobb, mint a példák már nézett eddig. 123 00:05:28,060 --> 00:05:32,070 Azok a lapok is több tucat kép, amelyek mindegyike lehet szükség 124 00:05:32,070 --> 00:05:33,550 letöltését egy fájlt. 125 00:05:33,550 --> 00:05:35,800 Tehát a dolgok esetleg elkezd lassulni. 126 00:05:35,800 --> 00:05:39,280 >> És különösen ezekben a napokban, amikor mindannyian a mobil telefon a zsebünkben, és 127 00:05:39,280 --> 00:05:43,010 Lassúbb internetkapcsolat, miután a várjon néhány milliszekundum, néhány 128 00:05:43,010 --> 00:05:46,110 több milliszekundum további fájlokat is lehet lassú. 129 00:05:46,110 --> 00:05:50,430 Lappangási idő az a szó, amely leírja a olyan várakozás, hogy van, hogy 130 00:05:50,430 --> 00:05:53,110 találkozhatnak vár néhány információt. 131 00:05:53,110 --> 00:05:54,430 >> De van egy fejjel. 132 00:05:54,430 --> 00:05:56,600 Tehát nem minden fajta a - 133 00:05:56,600 --> 00:05:58,170 ez valójában egy kicsit egy libikóka itt. 134 00:05:58,170 --> 00:06:02,970 Hátrány most, de mit böngészők tehet ha okosak elkerülése érdekében 135 00:06:02,970 --> 00:06:08,870 , hogy kérje az azonos styles.css fájlt újra lehet csinálni, mi? 136 00:06:08,870 --> 00:06:09,390 >> Cache is. 137 00:06:09,390 --> 00:06:10,370 Tehát cache - 138 00:06:10,370 --> 00:06:11,690 C-A-C-H-E - 139 00:06:11,690 --> 00:06:15,810 általában azt jelenti, itt, csak hogy megmentse a fájlt kérte az első alkalommal, és a 140 00:06:15,810 --> 00:06:17,440 majd ellenőrizze a gyorsítótár is. 141 00:06:17,440 --> 00:06:20,400 Ellenőrizze, te valami tároló, és ha már van egy 142 00:06:20,400 --> 00:06:24,520 másolatát styles.css, akkor is, ha egy másik oldalt a p-set, vagy minden olyan webhelyet, 143 00:06:24,520 --> 00:06:28,560 kéri újra, csak, hogy a felhasználó, aki ugyanazt a cache-elt példányt. 144 00:06:28,560 --> 00:06:30,140 Ne fáradj kérve. 145 00:06:30,140 --> 00:06:32,560 >> Hátrány még, bár, mint néhányan már megbotlott a p-set. 146 00:06:32,560 --> 00:06:35,870 Ha a változás a szerveren, és mész vissza a böngésző, és 147 00:06:35,870 --> 00:06:39,250 reload, néha a böngésző nem Ön egy szívességet, és nem zavar 148 00:06:39,250 --> 00:06:43,660 újra letöltését a styles.css fájl mert, ugyan már, mi az esélye 149 00:06:43,660 --> 00:06:47,620 hogy ezek a stílusok, hogy a Facebook használó fognak változni órára vagy 150 00:06:47,620 --> 00:06:48,140 nap mint nap? 151 00:06:48,140 --> 00:06:48,800 Ez elég alacsony. 152 00:06:48,800 --> 00:06:52,260 Lehet, hogy változnak az idők, de nem a pillanatban az óra. 153 00:06:52,260 --> 00:06:55,810 >> Tehát a trükk, csak hogy tudd, amikor egy cég fejlesztés, gyakran tartsuk lenyomva a 154 00:06:55,810 --> 00:06:59,500 shift billentyűkombináció például, majd kattintson a töltse be újra a böngészőt, és hogy 155 00:06:59,500 --> 00:07:03,280 általában elmondja a böngésző reload mindent, akkor is, ha már van 156 00:07:03,280 --> 00:07:04,180 azt a cache. 157 00:07:04,180 --> 00:07:06,630 Tehát még egyszer, upsides és hátrányai, de mindegyikük 158 00:07:06,630 --> 00:07:08,260 végül tervezési döntéseket. 159 00:07:08,260 --> 00:07:11,520 >> Tehát most már nem csak a véget a történet itt. 160 00:07:11,520 --> 00:07:15,790 Ha most menj vissza, és vissza, és vissza, és vissza kezdtük bevezetni nem csak 161 00:07:15,790 --> 00:07:18,060 HTML, de a PHP. 162 00:07:18,060 --> 00:07:20,786 Így a laikus szempontból, milyen nem PHP tegyünk? 163 00:07:20,786 --> 00:07:22,770 >> Közönség: [hallható]. 164 00:07:22,770 --> 00:07:24,258 >> DAVID MALAN: Mi ez? 165 00:07:24,258 --> 00:07:25,250 >> Közönség: bevezetése logika be a kódot. 166 00:07:25,250 --> 00:07:26,620 >> DAVID MALAN: Igen, be logika a kódot. 167 00:07:26,620 --> 00:07:29,570 Szóval ez egy igazi programozási nyelv hurkok, és a változók, és 168 00:07:29,570 --> 00:07:32,620 funkciók, és a feltételek, és az összes A dolgok már nem, vissza 169 00:07:32,620 --> 00:07:33,780 amikor óta semmiből. 170 00:07:33,780 --> 00:07:36,780 És a PHP, láttuk, lehet használni akár a parancssorban - a 171 00:07:36,780 --> 00:07:39,190 nem kell, hogy bármi köze az interneten, még akkor is, ha ez 172 00:07:39,190 --> 00:07:43,150 Tényleg eredete és mit inkább hogy jó, és elősegíti a - 173 00:07:43,150 --> 00:07:47,130 de a PHP pusztán a természet Az a tény, hogy van egy nyomtatási () 174 00:07:47,130 --> 00:07:49,660 funkció, és a printf () függvényt, vagy echo () függvényt. 175 00:07:49,660 --> 00:07:52,440 Van csokor módon nyomtathat szöveget PHP. 176 00:07:52,440 --> 00:07:56,540 >> Ezért, ha lehet ezt a programozási nyelv output pontosan 177 00:07:56,540 --> 00:07:58,460 amit beszéltünk korábban. 178 00:07:58,460 --> 00:08:01,360 A dinamikusan generálhatnak a HTML. 179 00:08:01,360 --> 00:08:02,300 Lehet, hogy nem az egészet. 180 00:08:02,300 --> 00:08:06,460 Lehet, hogy kemény kódot a dolgokat, mint a fejléc és a lábléc, és a logó, 181 00:08:06,460 --> 00:08:07,950 és a stíluslapok, és minden adott. 182 00:08:07,950 --> 00:08:11,190 De valami hasonló p-be hét, hová manipulálni a készletek és a 183 00:08:11,190 --> 00:08:14,690 bemutatja a felhasználó portfólió, amely fog változni, akkor 184 00:08:14,690 --> 00:08:18,960 biztosan használni a PHP és a logika ad Ön, mint egy programozási nyelv 185 00:08:18,960 --> 00:08:22,320 kimenet dinamikusan részhalmazok az oldal. 186 00:08:22,320 --> 00:08:25,900 >> Tehát, ha beszélni dinamikus weboldalak, vagy webes programozás, az 187 00:08:25,900 --> 00:08:27,200 amit valójában beszél. 188 00:08:27,200 --> 00:08:31,450 Egy nyelv, mint a PHP, vagy a dolgok nevezett Python vagy Ruby, vagy a Java, vagy 189 00:08:31,450 --> 00:08:35,900 még más nyelveken, a lekérdezés adatbázis gyakran, vagy egy másik szerverre, és 190 00:08:35,900 --> 00:08:38,580 majd dinamikusan kiköp HTML. 191 00:08:38,580 --> 00:08:42,470 >> Most a végeredmény, mint egy félre, nem hogy a HTML a legtöbb honlapok, 192 00:08:42,470 --> 00:08:45,970 beleértve a p-be a hét, valószínűleg lesz egy hatalmas rendetlenség, ha 193 00:08:45,970 --> 00:08:48,060 akkor nézd meg a forrást kód a böngészőben. 194 00:08:48,060 --> 00:08:49,010 Ez nem egy nagy dolog. 195 00:08:49,010 --> 00:08:51,550 Ezen a ponton, ha érdekel stílus, mi érdekel a 196 00:08:51,550 --> 00:08:52,740 dolog, hogy írsz. 197 00:08:52,740 --> 00:08:56,240 Mi nem érdekel a dolog hogy amit a kódot kimenettel. 198 00:08:56,240 --> 00:08:59,520 Szóval ne aggódj behúzás itt, ha ez a PHP, ami 199 00:08:59,520 --> 00:09:01,190 valójában kimenetre cucc. 200 00:09:01,190 --> 00:09:04,430 Végül is, a böngésző nem érdekel, és egy ember nem keres 201 00:09:04,430 --> 00:09:05,400 A forrás egyébként. 202 00:09:05,400 --> 00:09:09,000 Mi a személyzet, például, lenne nézi a PHP. 203 00:09:09,000 --> 00:09:13,440 >> Akkor hadd adjak egy gyors példa már miért más ez hasznos lehet. 204 00:09:13,440 --> 00:09:18,620 Szóval őszintén szólva, nem emlékszem az utolsó alkalommal használt C megoldani a problémát 205 00:09:18,620 --> 00:09:19,620 a valós világban. 206 00:09:19,620 --> 00:09:22,330 Valószínűleg a doktori iskolában, amikor Kellett használni a nyelvet, 207 00:09:22,330 --> 00:09:26,710 meglehetősen alacsony, és nekem adta a lehetőség arra, hogy valami nagyon nagy 208 00:09:26,710 --> 00:09:30,720 elvégzése, hogy valóban menteni sok CPU ciklus, ahogy csak tudtam, nagyrészt 209 00:09:30,720 --> 00:09:33,990 mert én voltam a nagy adathalmazok, , és minden CPU ciklus számít. 210 00:09:33,990 --> 00:09:37,750 És őszintén szólva, még a dolgok, mint a telefonok manapság, és más eszközök 211 00:09:37,750 --> 00:09:39,910 ahol nem elég annyi a memória, és nem nagyon vannak, mint 212 00:09:39,910 --> 00:09:44,160 sok CPU, a gyorsabb nyelvek még mindig vonzó. 213 00:09:44,160 --> 00:09:47,290 >> De a való világban, ha csak akar dobni egy program együtt 214 00:09:47,290 --> 00:09:50,340 elemezni néhány adatot, vagy a már összegyűjtött egy csomó regisztrációk 215 00:09:50,340 --> 00:09:53,330 Néhány diák csoport, és szeretné, hogy nagyon gyorsan automatizálni e-mail küldése 216 00:09:53,330 --> 00:09:56,240 egyenként minden egyike azoknak regisztrálók fogsz elérni a 217 00:09:56,240 --> 00:09:59,240 magasabb szintű nyelv mint a C úgy mondjam. 218 00:09:59,240 --> 00:10:04,060 Olyasmi, mint a PHP vagy Python vagy Ruby, vagy egy fél tucat másik, hogy létezik 219 00:10:04,060 --> 00:10:04,550 ezekben a napokban. 220 00:10:04,550 --> 00:10:07,200 De a három valószínűleg a legtöbb divatos most. 221 00:10:07,200 --> 00:10:10,840 >> És ez azt jelenti, hogy meg tudja nyitni egy szövegszerkesztő, mint a gedit vagy 222 00:10:10,840 --> 00:10:14,030 a legtöbb bármi más, és aztán csak elkezd kódot írni anélkül, hogy aggódnia 223 00:10:14,030 --> 00:10:17,800 a fordítás, anélkül, hogy igazán aggódni memória kezelése, 224 00:10:17,800 --> 00:10:20,820 szem előtt tartva azonban, hogy egy kicsit hanyagságot végül jön vissza 225 00:10:20,820 --> 00:10:24,790 harapni, ha az adathalmaz lesz vagy nagyobb a probléma lesz nagy. 226 00:10:24,790 --> 00:10:27,230 De mit jelent ez a mi a következő. 227 00:10:27,230 --> 00:10:29,860 >> Hadd menjek előre, és fuss helyesírás A probléma meg hat. 228 00:10:29,860 --> 00:10:33,480 Szóval ez az én trie-alapú megvalósítása , hogy én használt a nagy 229 00:10:33,480 --> 00:10:35,500 fórumon, ahol végeztem nem olyan jól. 230 00:10:35,500 --> 00:10:38,720 Majd jöjjön vissza egy hét múlva, és újra azok, akik nem a végén tetején 231 00:10:38,720 --> 00:10:40,430 nagy fedélzeten az utolsó előadás. 232 00:10:40,430 --> 00:10:44,520 De most, hadd menjen előre, és csak a futtatni a megoldás szöveges, és mi nem 233 00:10:44,520 --> 00:10:48,460 A King James Biblia, és most itt vagyunk. 234 00:10:48,460 --> 00:10:51,080 >> Tehát ezek mind az állítólag helytelenül írt szavakat ki 235 00:10:51,080 --> 00:10:52,240 King James Biblia. 236 00:10:52,240 --> 00:10:55,560 És a végrehajtás volt fél másodperc összesen. 237 00:10:55,560 --> 00:10:58,270 Tehát nem túl rossz ez adott számítógépen. 238 00:10:58,270 --> 00:11:01,540 De gondolj, hogy mennyi kódot kellett írni. 239 00:11:01,540 --> 00:11:02,880 Gondolom, hogy mennyi kódot kellett írni. 240 00:11:02,880 --> 00:11:06,170 Gondolja, hogy hány órát töltött a D-hall, vagy a kollégiumi vagy bárhol 241 00:11:06,170 --> 00:11:07,890 valóban kódolási fel, hogy a megoldást. 242 00:11:07,890 --> 00:11:11,850 >> Nos, ha valóban van egy magasabb szintű nyelv, mint a PHP, vegye tudomásul 243 00:11:11,850 --> 00:11:13,350 mit tehetek itt. 244 00:11:13,350 --> 00:11:16,410 Először is, tételezzük fel, hogy ez inkább az elosztás kódot. 245 00:11:16,410 --> 00:11:17,790 Ez a fájl neve helyesírás. 246 00:11:17,790 --> 00:11:20,220 Ez elérhető része a mai elosztás kódot. 247 00:11:20,220 --> 00:11:22,670 És fogok hullám kezem a legtöbb A részleteket, de ez valójában 248 00:11:22,670 --> 00:11:25,500 egy érdekes példa arra, hogy lehet, hogy port egy nyelvet 249 00:11:25,500 --> 00:11:28,870 , mint a C-PHP. 250 00:11:28,870 --> 00:11:33,420 Szó szerint nyitott két szöveges ablakok, az egyik az én C változat speller.c, 251 00:11:33,420 --> 00:11:36,960 és elkezdtem fordítja az én fej PHP, és írja ki a 252 00:11:36,960 --> 00:11:38,840 a legközelebbi egyenértékű funkciókat. 253 00:11:38,840 --> 00:11:40,100 >> Tehát ezeket a dolgokat más. 254 00:11:40,100 --> 00:11:43,730 Láttuk utolsó alkalom, hogy a PHP nem használja tartalmazzák egészen azonos módon. 255 00:11:43,730 --> 00:11:47,050 Használ igényelnek jellemzően, bár többek között létezik. 256 00:11:47,050 --> 00:11:50,330 Határozza meg egy kicsit eltér a # Define C-ben, de ez 257 00:11:50,330 --> 00:11:51,890 hogyan teszünk egy állandó. 258 00:11:51,890 --> 00:11:55,860 $ Argc kiderül, létezik a PHP-ben, így már láttam. 259 00:11:55,860 --> 00:11:58,650 Ezek csak változók, az összes kezdődő dollár jeleket. 260 00:11:58,650 --> 00:12:00,590 Emlékezzünk vissza, ez csak egy rakás lebegő pontokat. 261 00:12:00,590 --> 00:12:03,970 >> Tehát hosszú történet rövid, akkor szívesen flip ezt, ha kíváncsi, hogy ez 262 00:12:03,970 --> 00:12:10,010 majdnem egy vonal-for-átalakítás a vonal C változat speller.c a PHP. 263 00:12:10,010 --> 00:12:12,630 És akkor ezt újra fél tucat más nyelveken. 264 00:12:12,630 --> 00:12:14,910 >> De ami igazán érdekes ez. 265 00:12:14,910 --> 00:12:16,910 Vagy mi őszintén szomorú ez. 266 00:12:16,910 --> 00:12:20,790 Hadd menjek előre, és írja be a dictionary.php, és azt állítják, hogy én vagyok 267 00:12:20,790 --> 00:12:23,670 fog menni előre, és újra végrehajtani probléma meg hat itt. 268 00:12:23,670 --> 00:12:27,530 >> Szóval javaslom, először, hogy ebben a fájl, amelyet végre kell hajtani 269 00:12:27,530 --> 00:12:30,550 PHP, hadd nyissa meg a címkéket, mint ezt. 270 00:12:30,550 --> 00:12:34,780 Hadd adjak magamnak egy globális változó, $ méret lesz nulla. 271 00:12:34,780 --> 00:12:36,710 És fogok adni magamnak egy hash tábla. 272 00:12:36,710 --> 00:12:38,110 Fogom használni a hash tábla ezt a dolgot. 273 00:12:38,110 --> 00:12:42,070 Hogyan történik a hash tábla PHP-ben? 274 00:12:42,070 --> 00:12:42,990 Kész. 275 00:12:42,990 --> 00:12:43,980 OK. 276 00:12:43,980 --> 00:12:48,870 >> Tehát nyitó zárójel záró zárójel jelöli amit a PHP, ahogy láttuk? 277 00:12:48,870 --> 00:12:51,850 Egy tömb, hanem egy tömböt, amely egy asszociatív tömb. 278 00:12:51,850 --> 00:12:54,320 Egy asszociatív tömb egy adat struktúra, amely 279 00:12:54,320 --> 00:12:55,860 társult kulcsokat értékeket. 280 00:12:55,860 --> 00:12:59,430 >> Most a legegyszerűbb numerikusan indexelt tömb, azokat a kulcsokat is, mi? 281 00:12:59,430 --> 00:13:02,250 282 00:13:02,250 --> 00:13:03,960 Nulla, egy, kettő, három, nem igaz? 283 00:13:03,960 --> 00:13:08,780 Old school cucc vissza C. De ez is is, vonósok, mint a foo és bar, 284 00:13:08,780 --> 00:13:12,210 vagy Maxwell, vagy az ilyen szöveg. 285 00:13:12,210 --> 00:13:14,240 Szóval kihasználhatják, hogy az csak egy pillanat. 286 00:13:14,240 --> 00:13:17,550 >> Hadd menjek előre, és kijelentik, a funkció, mint a - 287 00:13:17,550 --> 00:13:19,020 csináljuk load () először. 288 00:13:19,020 --> 00:13:20,690 Tehát load () függvényt. 289 00:13:20,690 --> 00:13:23,440 És a PHP egy kicsit különbözik, hogy szó szerint írja be a funkciót, de a 290 00:13:23,440 --> 00:13:24,930 ne írjon a visszatérési típus. 291 00:13:24,930 --> 00:13:28,760 Én megyek előre, és azt mondják, hogy a load () függvényt kell venni a 292 00:13:28,760 --> 00:13:31,000 érv $ szótár, csak mint a C változat volt. 293 00:13:31,000 --> 00:13:32,510 Csinálok, hogy a memóriából. 294 00:13:32,510 --> 00:13:34,910 >> Azt javaslom, hogy én vagyok fogja ezt. 295 00:13:34,910 --> 00:13:37,080 Én egyszerűen csak csinálni foreach. 296 00:13:37,080 --> 00:13:40,710 Én fogom hívni a függvényt hívott file (), átadva a nevét, hogy a 297 00:13:40,710 --> 00:13:44,990 fájl, amely a változó $ Szótár mint $ szót. 298 00:13:44,990 --> 00:13:49,410 Aztán belsejében a for ciklus itt vagyok fog menni előre, és tárolja a 299 00:13:49,410 --> 00:13:57,440 $ Tábla $ szó lesz igaz. 300 00:13:57,440 --> 00:13:57,918 Kész. 301 00:13:57,918 --> 00:14:01,264 Ó, várj. 302 00:14:01,264 --> 00:14:02,422 Kész. 303 00:14:02,422 --> 00:14:02,760 OK. 304 00:14:02,760 --> 00:14:04,970 >> Ez a load () függvényt mondjuk a PHP. 305 00:14:04,970 --> 00:14:05,865 Nos, miért működik ez? 306 00:14:05,865 --> 00:14:07,010 És én vagyok a fajta csalás van. 307 00:14:07,010 --> 00:14:09,980 >> Szóval, az egyik, foreach láttuk rövid utoljára. 308 00:14:09,980 --> 00:14:13,680 Ez csak azt jelenti, hogy képes végighaladni tömb, nem törődve az i 309 00:14:13,680 --> 00:14:16,150 és n és plus plus, és minden adott. 310 00:14:16,150 --> 00:14:21,350 Dictionary természetesen a fájl nevét, valami, mint a nagy vagy kicsi, a két 311 00:14:21,350 --> 00:14:22,830 szótárak használtuk utoljára. 312 00:14:22,830 --> 00:14:26,715 Fájl egy olyan funkció, amely megnyitja a szöveget fájlt, beolvassa azt soronként, és 313 00:14:26,715 --> 00:14:29,840 kezek biztonsági másolatot egy hatalmas tömb, egyes elemek, amelyeknek van egy 314 00:14:29,840 --> 00:14:31,340 sort a fájlból. 315 00:14:31,340 --> 00:14:36,040 Szóval ez a kombináció a fopen, és fread, és míg a hurok, és fclose, 316 00:14:36,040 --> 00:14:37,080 és minden adott. 317 00:14:37,080 --> 00:14:40,150 Végül, mint szó, csak azt jelenti, hogy ez a változó fogok férhetnek hozzá 318 00:14:40,150 --> 00:14:41,890 minden iterációs ebben a hurokban. 319 00:14:41,890 --> 00:14:46,910 >> Tehát röviden, ez egy óceánjáró itt azt jelenti, megnyitja a fájlt, amelynek neve a 320 00:14:46,910 --> 00:14:50,750 szótár, a változó, végighaladni azt sorról sorra, és minden alkalommal, amikor 321 00:14:50,750 --> 00:14:54,290 a vonal, tárolja változó nevű szót, majd tenni valamit a szót. 322 00:14:54,290 --> 00:14:55,280 Mit akarok? 323 00:14:55,280 --> 00:14:58,110 Azt szeretnénk, hogy a szót, a hash tábla. 324 00:14:58,110 --> 00:15:00,860 >> Nos, én nem tud valamit az én hash tábla, mint C-ben 325 00:15:00,860 --> 00:15:02,140 szögletes zárójelben. 326 00:15:02,140 --> 00:15:03,660 Ezt a nevet a hash tábla. 327 00:15:03,660 --> 00:15:07,180 Megyek index abba a hash táblázat ezen a helyen. 328 00:15:07,180 --> 00:15:08,920 Tehát nem zárójelbe nulla, nem zárójelbe egyet. 329 00:15:08,920 --> 00:15:11,990 Konzol idézet idézet vége valamit, bármi is legyen szó. 330 00:15:11,990 --> 00:15:15,200 És ahogy lehet, hogy a hash tábla munka trie, csak bolt 331 00:15:15,200 --> 00:15:17,650 gyakorlatilag egy logikai, implicit vagy explicit módon. 332 00:15:17,650 --> 00:15:18,260 Kész. 333 00:15:18,260 --> 00:15:20,000 Én tárolása az érték igaz. 334 00:15:20,000 --> 00:15:23,150 >> Most van egy pár dolog Én felületességet itt. 335 00:15:23,150 --> 00:15:27,720 Technikailag, ott lesz egy bosszantó új vonal, / n, a végén 336 00:15:27,720 --> 00:15:28,820 minden ilyen szavak. 337 00:15:28,820 --> 00:15:31,770 Szóval kéne hívni a PHP függvény úgynevezett chop (), amely 338 00:15:31,770 --> 00:15:33,460 a szó szoros értelmében, hogy vágja le. 339 00:15:33,460 --> 00:15:35,020 És valóban szükség van, hogy tegye egy másik dolog. 340 00:15:35,020 --> 00:15:38,380 Talán érdemes növelni méretét minden iteráció, úgyhogy nyomon követése 341 00:15:38,380 --> 00:15:39,560 világszerte, hogy mi az. 342 00:15:39,560 --> 00:15:43,180 És őszintén, és ez az egyik ostobább aspektusait PHP, ha 343 00:15:43,180 --> 00:15:46,950 egy globális változó, szükség van kifejezetten azt mondják, hogy te vagy. 344 00:15:46,950 --> 00:15:51,670 Így fogok valóban írja a globális $ Méret, globális $ asztal, és most 345 00:15:51,670 --> 00:15:52,690 a funkció teljes. 346 00:15:52,690 --> 00:15:57,475 >> Tehát nem olyan egyszerű, mint korábban, de talán kevesebb idő alatt, mint a C- 347 00:15:57,475 --> 00:15:58,220 verzió, talán? 348 00:15:58,220 --> 00:15:58,730 OK. 349 00:15:58,730 --> 00:16:00,390 >> És most lássuk a Check () függvényt. 350 00:16:00,390 --> 00:16:04,300 Nézzük meg, ez legalább vette a órákon át, hogy volt nekünk C. Tehát 351 00:16:04,300 --> 00:16:06,500 hadd menjen előre, és kijelentik, ellenőrizze függvényében. 352 00:16:06,500 --> 00:16:09,070 Vesz érvelés szó, ami fog jönni a helyesírás. 353 00:16:09,070 --> 00:16:13,410 És én csak megyek, hogy ellenőrizze, hogy a következő változót isset, asztal 354 00:16:13,410 --> 00:16:18,400 konzol strtolower szó - 355 00:16:18,400 --> 00:16:20,590 nézzük egyensúlyt minden az én zárójelek - 356 00:16:20,590 --> 00:16:24,275 majd vissza igaz. 357 00:16:24,275 --> 00:16:27,020 358 00:16:27,020 --> 00:16:28,460 Else - 359 00:16:28,460 --> 00:16:30,330 ez tényleg kemény program keretében. 360 00:16:30,330 --> 00:16:31,940 Else vissza hamis. 361 00:16:31,940 --> 00:16:32,630 Kész. 362 00:16:32,630 --> 00:16:33,460 Ez az ellenőrzés (). 363 00:16:33,460 --> 00:16:34,520 >> Nos, miért is működik ez? 364 00:16:34,520 --> 00:16:37,040 Nos, az egyik én telt el egy szót, amely egy string. 365 00:16:37,040 --> 00:16:41,400 Kettő, én ellenőrzése belsejében a hash asztal, ki hívott $ asztalra. 366 00:16:41,400 --> 00:16:45,470 Én arra kényszerítve, hogy kisbetűs hívja funkció nagyon hasonló tolower ()-ben 367 00:16:45,470 --> 00:16:48,580 C, de ez nem az egész szót, nem egyetlen karaktert. 368 00:16:48,580 --> 00:16:52,680 És ha ez be van állítva, ott más szóval egy beállított értéket, más szóval, 369 00:16:52,680 --> 00:16:54,880 ha ez igaz, akkor igen, ez egy szó. 370 00:16:54,880 --> 00:16:56,530 Mert én tettem oda a load (). 371 00:16:56,530 --> 00:16:59,100 És ha nem, megyek vissza hamis. 372 00:16:59,100 --> 00:17:00,090 >> Most a többiek könnyű. 373 00:17:00,090 --> 00:17:03,570 Function size (), hogyan tudom ezt megtenni? 374 00:17:03,570 --> 00:17:05,230 Én alapvetően nem vissza $ méretét. 375 00:17:05,230 --> 00:17:07,770 De technikailag kell ezt a bosszantó dolgot. 376 00:17:07,770 --> 00:17:10,640 És valóban fel hallani, én vágás egyik sarkon túl sok. 377 00:17:10,640 --> 00:17:12,920 Tényleg kell tennie a globális $ asztalra. 378 00:17:12,920 --> 00:17:16,260 >> De, hogy azt mondta, kirak). 379 00:17:16,260 --> 00:17:17,380 Vegye () lenyűgöző. 380 00:17:17,380 --> 00:17:20,500 Function kirak (). 381 00:17:20,500 --> 00:17:23,990 Hogyan akarok végrehajtani kirak ()? 382 00:17:23,990 --> 00:17:25,079 Kész. 383 00:17:25,079 --> 00:17:25,450 OK. 384 00:17:25,450 --> 00:17:28,900 >> Tehát kirak (), a memória kezelése teljesen gondoskodott az Ön számára 385 00:17:28,900 --> 00:17:31,800 olyasmi, mint a PHP, és sok A magasabb szintű nyelven. 386 00:17:31,800 --> 00:17:32,600 Tehát ez csodálatos. 387 00:17:32,600 --> 00:17:36,080 Például, hogy miért a fenéért is töltötte az elmúlt nyolc plusz hét C írásban 388 00:17:36,080 --> 00:17:41,030 látszólag nagyon lassan, nagyon idő időigényes problémák tíz óra 389 00:17:41,030 --> 00:17:42,530 A munkát a mi övek? 390 00:17:42,530 --> 00:17:46,110 >> Nos, az egy dolog, ez a munka finom kis programok. 391 00:17:46,110 --> 00:17:47,840 Az biztos, hogy felgyorsult a fejlesztési időt. 392 00:17:47,840 --> 00:17:49,790 De nézzük meg, mi történik a valós világban. 393 00:17:49,790 --> 00:17:52,370 >> Hadd menjek ebbe a könyvtárba Egy terminál ablakban. 394 00:17:52,370 --> 00:17:53,370 Van helyesírás. 395 00:17:53,370 --> 00:17:56,570 És észre, félre, és lehet, hogy már találkozott ezzel a probléma meg 396 00:17:56,570 --> 00:17:58,190 hat vagy probléma meg hét. 397 00:17:58,190 --> 00:18:01,610 Nem feltétlenül kell végén PHP fájlok. php. 398 00:18:01,610 --> 00:18:05,250 Ha tesz egy sort, hogy az elsőt a csúcsra, ez egy speciális sor 399 00:18:05,250 --> 00:18:10,980 szintaxis, amely lényegében azt jelenti, meg A program neve PHP, és ez alapján 400 00:18:10,980 --> 00:18:12,270 értelmezik ezt a fájlt. 401 00:18:12,270 --> 00:18:15,410 Tehát most senki sem tudja igazán, hogy Futok egy PHP program. 402 00:18:15,410 --> 00:18:19,860 Tudok futni csak, mintha volt valami összeállított C. 403 00:18:19,860 --> 00:18:20,650 >> De itt van a dolog. 404 00:18:20,650 --> 00:18:21,600 Valójában, csináljuk újra. 405 00:18:21,600 --> 00:18:23,530 Dropbox/pset6 /. 406 00:18:23,530 --> 00:18:25,390 Van helyesírás. 407 00:18:25,390 --> 00:18:26,720 OK, 0,44 másodperccel. 408 00:18:26,720 --> 00:18:28,080 A felgyorsult ebben az időben. 409 00:18:28,080 --> 00:18:29,745 >> Most menjünk be a PHP verzió. 410 00:18:29,745 --> 00:18:43,070 411 00:18:43,070 --> 00:18:44,320 Jó húzás. 412 00:18:44,320 --> 00:18:50,830 413 00:18:50,830 --> 00:18:53,285 De hiszem, hogy mennyi idő Megmentettem az munkaidőben. 414 00:18:53,285 --> 00:18:56,990 415 00:18:56,990 --> 00:18:57,790 OK. 416 00:18:57,790 --> 00:19:01,020 >> Így 3,59 másodperc, ami valójában nem hangzik pontos sem. 417 00:19:01,020 --> 00:19:03,710 De ez azért van, mert a hosszú történet rövid, amikor nyomtat ki egy hatalmas összeg 418 00:19:03,710 --> 00:19:06,840 dolog, hogy a képernyőn, hogy a maga is lassítja a dolgokat. 419 00:19:06,840 --> 00:19:11,260 Mi tényleg vette a CPU a készülék volt 3,59 másodperc, a 420 00:19:11,260 --> 00:19:15,260 ellentétben a C, amelyik 0,44 másodperc legutóbb. 421 00:19:15,260 --> 00:19:17,620 Ez valóban egy rendje nagysága eltérő. 422 00:19:17,620 --> 00:19:20,280 >> Szóval, hol van az ár jön? 423 00:19:20,280 --> 00:19:21,790 Miért van ez így sokkal lassabb? 424 00:19:21,790 --> 00:19:24,220 Miért PHP teljesítenek olyan rosszul? 425 00:19:24,220 --> 00:19:25,242 Danielle? 426 00:19:25,242 --> 00:19:26,550 >> Közönség: Ön nem igazán egy hash tábla. 427 00:19:26,550 --> 00:19:27,710 >> DAVID MALAN: Én nem igazán egy hash tábla. 428 00:19:27,710 --> 00:19:28,760 Szóval ilyen volt. 429 00:19:28,760 --> 00:19:29,870 Tehát ez egy asszociatív tömb. 430 00:19:29,870 --> 00:19:33,650 Valószínűleg, ha az emberek a PHP nagyon okos, használták alatta 431 00:19:33,650 --> 00:19:39,520 Hood tényleges hash tábla végre valami, mint a C vagy C + +. 432 00:19:39,520 --> 00:19:41,290 De. 433 00:19:41,290 --> 00:19:42,760 Igen. 434 00:19:42,760 --> 00:19:44,010 >> Közönség: [hallható]. 435 00:19:44,010 --> 00:19:46,690 436 00:19:46,690 --> 00:19:47,080 >> DAVID MALAN: Igen. 437 00:19:47,080 --> 00:19:50,780 Így az egyes funkciók írtam már - valóban, meg tudja mondani, hogy még egyszer a 438 00:19:50,780 --> 00:19:51,480 kicsit hangosabban? 439 00:19:51,480 --> 00:19:54,509 >> Közönség: Minden egyes funkciók beleértve téged is sokkal több teljes 440 00:19:54,509 --> 00:19:56,610 kapacitás, mint - 441 00:19:56,610 --> 00:19:57,550 >> DAVID MALAN: Szóval ez nagyon igaz. 442 00:19:57,550 --> 00:20:01,490 Van egy sokkal fölött, hogy mi vagyunk Nem igazán látni koncentrálva csak 443 00:20:01,490 --> 00:20:03,730 dictionary.php, amit írtam. 444 00:20:03,730 --> 00:20:08,020 Ezzel szemben van egy egész tolmács megy a háttérben. 445 00:20:08,020 --> 00:20:12,040 Sőt, amikor futott a program, akkor nem futott össze nullák és egyesek 446 00:20:12,040 --> 00:20:14,290 tervezték, az én Intel CPU. 447 00:20:14,290 --> 00:20:19,270 Inkább ez fut soronként PHP kód, ami úgy néz ki, 448 00:20:19,270 --> 00:20:20,350 mint mi begépelte. 449 00:20:20,350 --> 00:20:22,475 És így, amikor használja a értelmezett nyelv, akkor 450 00:20:22,475 --> 00:20:23,850 Igazából fizetni ezt az árat. 451 00:20:23,850 --> 00:20:27,010 El fog tartani egy ideig, hogy olvassa el a fájl felülről lefelé, balról 452 00:20:27,010 --> 00:20:30,740 jobbra, majd végre az egyes sorban újra és újra. 453 00:20:30,740 --> 00:20:34,250 >> Most a valóságban, különösen az interneten, akkor valóban felgyorsítja ezt a folyamatot 454 00:20:34,250 --> 00:20:38,660 a gyorsítótár az eredményei PHP kódot értelmezik. 455 00:20:38,660 --> 00:20:41,640 És, hogy van értelme az interneten, mert a ha nem az egyik felhasználó, mint 456 00:20:41,640 --> 00:20:46,300 ide, de a 1000 vagy 10.000 felhasználó, akkor talán az első alkalom, hogy a fájl 457 00:20:46,300 --> 00:20:49,050 elérni, hogy ez lassú, de utána ez sokkal gyorsabb. 458 00:20:49,050 --> 00:20:51,000 >> De ez is megint egy kompromisszum. 459 00:20:51,000 --> 00:20:53,870 És valami, mint a kutatási adatok beállítása, vagy akár valami nagy, mint a 460 00:20:53,870 --> 00:20:58,330 ez, a felhasználók előbb-utóbb kezd érezni, hogy a lassulás. 461 00:20:58,330 --> 00:21:02,670 >> Tehát röviden, értelmezett nyelvek nagyon divatos, nagyon népszerű, és a 462 00:21:02,670 --> 00:21:06,710 őszintén szólva talán a nyelveket el kell érnie, ha problémák megoldására 463 00:21:06,710 --> 00:21:08,200 követően CS50. 464 00:21:08,200 --> 00:21:12,720 De észre, hogy mennyi te tényleg Ha igaz, a motorháztető alatt 465 00:21:12,720 --> 00:21:15,910 tényleg azok elmúlt hét hash asztalok, és fák, és megpróbálja, 466 00:21:15,910 --> 00:21:20,770 amelyeket végül is, hogy ténylegesen végre a dolgok, mint nyitó zárójel, 467 00:21:20,770 --> 00:21:24,200 szögletes zárójel, ami most már köszönettel vesznek. 468 00:21:24,200 --> 00:21:26,360 >> Szóval vessünk egy pillantást most ebben az internetes környezetben. 469 00:21:26,360 --> 00:21:29,890 És megemlítettem utolsó alkalom, hogy ott van egy csomó superglobals a PHP, hogy 470 00:21:29,890 --> 00:21:32,490 nem igazán releváns a parancssorban. 471 00:21:32,490 --> 00:21:36,210 Ők inkább relevánsak A PHP egy webes környezetben. 472 00:21:36,210 --> 00:21:41,220 Így a PHP a webszerveren, hogy létrehozni dolgokat, mint a HTML. 473 00:21:41,220 --> 00:21:44,540 >> És pillantott $ _GET és $ _POST, és ez az, ahol automatikusan a felhasználók 474 00:21:44,540 --> 00:21:49,100 input végül csak ha be alkotnak fájlba végződő. PHP a web 475 00:21:49,100 --> 00:21:50,460 szerver, mint a készülék. 476 00:21:50,460 --> 00:21:53,310 De nézzük röviden $ _COOKIE És a $ _SESSION. 477 00:21:53,310 --> 00:21:56,670 >> A laikus szempontból, mi az a süti, mint érti azt a keretében 478 00:21:56,670 --> 00:21:58,220 a web? 479 00:21:58,220 --> 00:21:59,450 >> Közönség: Fájl a számítógépen. 480 00:21:59,450 --> 00:21:59,920 >> DAVID MALAN: Igen. 481 00:21:59,920 --> 00:22:03,500 Ez egy fájlt a felhasználó számítógépén ültetett bármilyen website 482 00:22:03,500 --> 00:22:04,410 véletlenül meglátogatni. 483 00:22:04,410 --> 00:22:07,334 Tehát, ha megy a Facebook, ha megy a bankofamerica.com, ha megy 484 00:22:07,334 --> 00:22:10,330 a google.com, ha megy, hogy szinte minden honlap a világon ezekben a napokban, 485 00:22:10,330 --> 00:22:14,850 beleértve cs50.net, cookie ültetett a számítógépen, ami 486 00:22:14,850 --> 00:22:19,800 vagy a tárolt érték RAM a számítógép böngésző memóriájában, vagy a 487 00:22:19,800 --> 00:22:22,800 néha valóban egy tárolt fájl a merevlemezen. 488 00:22:22,800 --> 00:22:26,960 >> És mi általában tárolja a fájlban nem a felhasználó nevét, nem a 489 00:22:26,960 --> 00:22:31,060 jelszót, jellemzően nem valami érzékeny, kivéve, ha a weboldal nem annyira 490 00:22:31,060 --> 00:22:35,040 jó a biztonság, hanem ez egy nagy egyedi azonosító körében 491 00:22:35,040 --> 00:22:35,680 más dolog. 492 00:22:35,680 --> 00:22:38,920 Ez egy nagy véletlen számot ültetett a számítógépet, de lehet gondolni, mint 493 00:22:38,920 --> 00:22:42,740 egyfajta virtuális pecsét, mint a egy klub vagy valami vidámpark 494 00:22:42,740 --> 00:22:47,160 lehetővé teszi a személyzet, a tulajdonosok, hogy a szolgáltatást, hogy ne feledje, hogy ki vagy. 495 00:22:47,160 --> 00:22:51,030 Tehát, ha a nagy véletlen számot, mint 12345678, bár ez nyilvánvalóan 496 00:22:51,030 --> 00:22:54,180 Nem is véletlen, gondolom az, hogy mivel a pecsét, hogy amikor meglátogatja 497 00:22:54,180 --> 00:22:57,930 facebook.com az első alkalommal, akkor bélyegző ez a szám a kezét. 498 00:22:57,930 --> 00:23:01,510 És azért, mert beszél HTTP, akkor hogy egy böngésző, és mivel a Facebook 499 00:23:01,510 --> 00:23:06,440 nyilván beszél, ugyanaz, mint a web szerver, a protokoll HTTP szerint 500 00:23:06,440 --> 00:23:09,930 bármikor később látogat facebook.com, hogy ez egy másik 501 00:23:09,930 --> 00:23:13,560 később, egy órával később, még a következő napon, amíg még nem kifejezetten 502 00:23:13,560 --> 00:23:17,050 kijelentkezett, amely hatékonyan olyan, mint a kézmosás. 503 00:23:17,050 --> 00:23:20,280 HTTP azt mondja, be kell nyújtania a pecsét minden alkalommal, amikor 504 00:23:20,280 --> 00:23:22,020 visszatér a weboldalon. 505 00:23:22,020 --> 00:23:24,390 >> Mit Facebook akkor ez az, hogy nézd meg, hogy a pecsét és a 506 00:23:24,390 --> 00:23:26,850 azt mondják, ó, az 123456789. 507 00:23:26,850 --> 00:23:30,260 Nem tudom, első pillantásra, hogy ez a David Malan Cambridge-ben, 508 00:23:30,260 --> 00:23:34,690 Massachusetts, de lehet ellenőrizni a adatbázis, és azt mondják, ó, az a személy 509 00:23:34,690 --> 00:23:39,930 akinek a számítógépen telepítettünk 123456789 David Malan Cambridge, 510 00:23:39,930 --> 00:23:40,440 Massachusetts. 511 00:23:40,440 --> 00:23:46,000 Mutassuk meg, hogy a felhasználó, akkor a profilt oldalon vagy a News Feed. 512 00:23:46,000 --> 00:23:49,660 >> De van egy probléma, ha ez az, hogy a web valóban működik. 513 00:23:49,660 --> 00:23:51,390 Vessünk egy pillantást egy gyors példát. 514 00:23:51,390 --> 00:23:55,190 Nézzük valóban el kell mondanom facebook.com. 515 00:23:55,190 --> 00:23:58,130 De mielőtt tudnánk menni, legyen menjek előre, és nyisd ki a Chrome 516 00:23:58,130 --> 00:23:59,790 Felügyelő ide. 517 00:23:59,790 --> 00:24:01,140 Hadd nézzem meg a Hálózat fülre. 518 00:24:01,140 --> 00:24:06,020 És most menjünk előre, és írja be A https://facebook.com. 519 00:24:06,020 --> 00:24:09,410 És én ezzel, hogy, hogy nem látunk az összes ilyen átirányítások és a hulladék 520 00:24:09,410 --> 00:24:10,660 idő nézegette azokat. 521 00:24:10,660 --> 00:24:12,690 Hadd nyomd meg az Entert. 522 00:24:12,690 --> 00:24:13,130 >> Rendben van. 523 00:24:13,130 --> 00:24:14,580 Látunk egy csomó kéréseket. 524 00:24:14,580 --> 00:24:15,640 Jön a Facebook. 525 00:24:15,640 --> 00:24:16,930 Van egy csomó kép. 526 00:24:16,930 --> 00:24:19,290 És itt, egy az említése késleltetés utolsó alkalom, hogy ez 527 00:24:19,290 --> 00:24:21,240 sok HTTP kéréseket. 528 00:24:21,240 --> 00:24:23,700 De az első valószínűleg a legérdekesebb. 529 00:24:23,700 --> 00:24:26,420 >> Szóval lépjünk le itt, és Én nagyítás a második. 530 00:24:26,420 --> 00:24:29,090 Ez lesz az a fajta a rendetlenség, de lássuk. 531 00:24:29,090 --> 00:24:31,660 Facebook küld nekünk csomó dolgot. 532 00:24:31,660 --> 00:24:33,490 >> De hé, érdekes. 533 00:24:33,490 --> 00:24:37,880 Ők ültetés nem egy, hanem négy kézi bélyegzők rá a kezem itt. 534 00:24:37,880 --> 00:24:40,400 Set-Cookie, Set-Cookie, set-cookie-t, set-cookie-t. 535 00:24:40,400 --> 00:24:44,030 És van néhány funkciók itt. 536 00:24:44,030 --> 00:24:46,170 Mindegyik néhányat említsünk fajta lejárat. 537 00:24:46,170 --> 00:24:50,090 És úgy néz ki, mint a Facebook azt reméli, hogy emlékezzen rám 2015-ig. 538 00:24:50,090 --> 00:24:53,670 Szóval ez feltehetően az időt, amely Azt kell jelentkeznie, vagy fognak csak 539 00:24:53,670 --> 00:24:55,710 automatikusan feltételezik vagyok nem jön vissza. 540 00:24:55,710 --> 00:24:57,840 Tehát ez valójában egy tisztességes ideig. 541 00:24:57,840 --> 00:24:59,170 >> És vannak más dolog folyik itt. 542 00:24:59,170 --> 00:25:03,036 Ez a süti úgy tűnik, hogy erőszakkal törölte azzal lejárt 1970-ben 543 00:25:03,036 --> 00:25:04,460 mielőtt cookie-kat létezett. 544 00:25:04,460 --> 00:25:06,510 Így a böngésző csak megy feltételezni OK, ez olyan, mintha 545 00:25:06,510 --> 00:25:07,910 mosás a kezek bélyegző. 546 00:25:07,910 --> 00:25:11,240 >> De most, amikor a böngészője a későbbi kérelem - 547 00:25:11,240 --> 00:25:14,340 hadd menjen előre, és ezt újra és reload. 548 00:25:14,340 --> 00:25:18,170 Most hadd menjen vissza az első kérelmet, és lemegy 549 00:25:18,170 --> 00:25:20,760 itt kérhet fejlécet. 550 00:25:20,760 --> 00:25:21,390 Figyeljük meg ezt. 551 00:25:21,390 --> 00:25:25,280 Úgyhogy most alá nem válasz fejlécet, de észre azt mondja kérés fejlécet. 552 00:25:25,280 --> 00:25:29,220 És észre, hogy a böngésző részeként kérését, miután megütött reload van 553 00:25:29,220 --> 00:25:32,780 küldeni legalább az alábbi információt. 554 00:25:32,780 --> 00:25:34,670 Nem Set-Cookie, de a süti. 555 00:25:34,670 --> 00:25:38,750 Tehát ez az a vonal, a HTTP fejléc így beszélni, ahol a böngésző a sort 556 00:25:38,750 --> 00:25:43,340 Az nem az én tudva azt bemutató kezem Facebook ellenőrzés. 557 00:25:43,340 --> 00:25:46,020 >> Tehát ezek a cookie-k is használunk, akkor miért? 558 00:25:46,020 --> 00:25:49,420 Emlékezni, hogy ki vagy, és emlékszem, milyen hányszor voltál ott, vagy 559 00:25:49,420 --> 00:25:50,280 Tényleg semmit. 560 00:25:50,280 --> 00:25:52,742 >> Tehát itt van counter.php. 561 00:25:52,742 --> 00:25:53,780 És hadd ráközelít a font. 562 00:25:53,780 --> 00:25:58,380 És minden egyes alkalommal, amikor újra az oldalt, értesítés ez eszébe jutott, hogy hányszor 563 00:25:58,380 --> 00:25:59,250 Voltam ott. 564 00:25:59,250 --> 00:26:00,570 Nos, ez nem olyan látványos. 565 00:26:00,570 --> 00:26:03,140 Nézzük csak zárja be a fülön, és most térjünk vissza a 566 00:26:03,140 --> 00:26:07,860 http://localhost/counter.php. 567 00:26:07,860 --> 00:26:08,970 >> Ó, ez érdekes. 568 00:26:08,970 --> 00:26:10,960 Még mindig emlékezett, még bár zárt a fület. 569 00:26:10,960 --> 00:26:14,010 És őszintén szólva, ha a böngésző bezárásához ha végre a megfelelő módon, azt 570 00:26:14,010 --> 00:26:18,950 Még mindig emlékszem, hogy ez a felhasználó aki ő volt az első alkalom, és 571 00:26:18,950 --> 00:26:22,840 csak egyszer megyek a Chrome-menüt, amely ide itt van, és menj 572 00:26:22,840 --> 00:26:25,990 Előzmények, majd kattintson a Böngészési adatok törlése, mint néhány lehet, hogy a 573 00:26:25,990 --> 00:26:33,050 múlt, csak akkor lesz a cookie-kat valóban törlésre web 574 00:26:33,050 --> 00:26:33,970 fejlesztés. 575 00:26:33,970 --> 00:26:35,340 >> Tehát, ha megyünk - 576 00:26:35,340 --> 00:26:37,080 nézzük közelről gedit itt. 577 00:26:37,080 --> 00:26:38,910 És ha most elindulunk, hogy ezt a fájlt. 578 00:26:38,910 --> 00:26:44,210 Hadd menjek a mi vhostokat / localhost / public, hadd tegye 579 00:26:44,210 --> 00:26:46,340 counter.php. 580 00:26:46,340 --> 00:26:48,350 Vegyük észre, hogy ez egy nagyon egyszerű program. 581 00:26:48,350 --> 00:26:50,250 Ez egy nagyon egyszerű honlap. 582 00:26:50,250 --> 00:26:51,770 >> Tehát a tetején a fájl csak megjegyzéseket. 583 00:26:51,770 --> 00:26:54,930 De itt van egy új vonal, amit lehet láttuk már a p-be hét, 584 00:26:54,930 --> 00:26:56,000 session_start (). 585 00:26:56,000 --> 00:27:00,380 Ez egy sor PHP kód lényegében azt mondja, a webszerver, győződjön 586 00:27:00,380 --> 00:27:03,400 Ügyeljen arra, hogy bélyegző kezét, és Ügyeljünk arra, hogy kézzel bélyegek. 587 00:27:03,400 --> 00:27:06,810 Ez minden, ezt a vonalat nem, és azt nem minden, hogy a folyamat számunkra. 588 00:27:06,810 --> 00:27:09,510 Aztán észre, én csak most két ága van. 589 00:27:09,510 --> 00:27:14,150 Ha a számláló kulcs belülről a jelen speciális globális változó neve 590 00:27:14,150 --> 00:27:18,010 $ _SESSION Beállítva - más szóval, ha van valami értéke van - 591 00:27:18,010 --> 00:27:22,440 lássunk, és tárolja azt a helyi változó neve $ számlálót. 592 00:27:22,440 --> 00:27:27,000 Else, menjünk hozzá $ counter Az alapértelmezett 0 érték. 593 00:27:27,000 --> 00:27:30,320 >> Most itt van az egyik aspektusa a PHP, ami egyszerre áldás és átok. 594 00:27:30,320 --> 00:27:32,080 A PHP egy kicsit hanyag. 595 00:27:32,080 --> 00:27:35,160 Tehát míg a C-ben, mi lenne a hatálya számláló volna 596 00:27:35,160 --> 00:27:36,725 vagy itt, vagy itt? 597 00:27:36,725 --> 00:27:39,270 598 00:27:39,270 --> 00:27:41,690 >> Az lett volna csak azoknak kapcsos zárójelek. 599 00:27:41,690 --> 00:27:42,090 Találd ki, mi? 600 00:27:42,090 --> 00:27:46,920 A PHP, létezik még azokon kívül kapcsos zárójelek között, itt, és itt, 601 00:27:46,920 --> 00:27:49,120 és itt, és itt, és még lent. 602 00:27:49,120 --> 00:27:52,400 Szóval azt mondom, ez egy áldás abban az értelemben, hogy nem kell gondolkodni, mint 603 00:27:52,400 --> 00:27:54,070 kemény, mint tettük hete. 604 00:27:54,070 --> 00:27:56,880 De ez is egy kicsit az átok, hogy nem számít, ha egy változó 605 00:27:56,880 --> 00:28:00,020 PHP, legalábbis a program, mint ez, ez a globálisan hozzáférhető 606 00:28:00,020 --> 00:28:01,170 jobb vagy rosszabb. 607 00:28:01,170 --> 00:28:06,130 Tehát meg kell szem előtt tartani, most, hogy a változó nem definiált. 608 00:28:06,130 --> 00:28:07,640 Lehet, hogy meghatározott mailt. 609 00:28:07,640 --> 00:28:09,460 >> De mit fogok csinálni végül? 610 00:28:09,460 --> 00:28:13,160 Fogom tárolni benne, hogy a globális mint a változó értéke 611 00:28:13,160 --> 00:28:17,060 Counter gombot az eredmény Ennek counter plusz 1. 612 00:28:17,060 --> 00:28:18,910 Szóval ez csak a számtani , hogy ez a 613 00:28:18,910 --> 00:28:20,590 incrementation, hogy a számláló. 614 00:28:20,590 --> 00:28:24,850 És az a tény, hogy én vagyok tárolja, hogy értéket vissza ide IS jelent 615 00:28:24,850 --> 00:28:29,970 lényegében frissíti az adatbázis ne feledjük, hogy a felhasználó 123456789 került 616 00:28:29,970 --> 00:28:31,010 Itt két alkalommal. 617 00:28:31,010 --> 00:28:33,780 És amikor újra meg újra a következő alkalommal, amikor töltse újra a lapot, ez lesz ellenőrizni 618 00:28:33,780 --> 00:28:36,710 kezem pecsét és azt mondják, ó, felhasználónak 123456789 mostanra 619 00:28:36,710 --> 00:28:38,410 már itt háromszor. 620 00:28:38,410 --> 00:28:43,390 >> És akkor mi van a PHP és a hasonló nyelveket tesznek számunkra ők kitalálni 621 00:28:43,390 --> 00:28:47,720 ki, hogyan és hol és mennyi ideig hogy tárolja az adatokat a speciális 622 00:28:47,720 --> 00:28:48,830 szuperglobális. 623 00:28:48,830 --> 00:28:52,750 És ez szuperglobális a következő alkalommal, látogassa meg az oldalt van valami varázslatosan 624 00:28:52,750 --> 00:28:57,440 előtti lakott, tele értékek ott voltak a legutóbbi alkalommal, amikor meglátogatott, 625 00:28:57,440 --> 00:29:02,310 hogy ez volt a második óra, egy hét ezelőtt vagy 2013-ban, és mi most beszélünk 626 00:29:02,310 --> 00:29:03,790 a 2015. 627 00:29:03,790 --> 00:29:07,600 PHP és a webszerver vigyázni az összes az Ön számára. 628 00:29:07,600 --> 00:29:08,850 >> Közönség: [hangtalan]. 629 00:29:08,850 --> 00:29:11,900 630 00:29:11,900 --> 00:29:15,760 >> DAVID MALAN: Változók PHP lényegében mindig globális, ha 631 00:29:15,760 --> 00:29:18,400 róluk egy függvényen belül, és akkor azok helyi 632 00:29:18,400 --> 00:29:19,420 A funkció csak. 633 00:29:19,420 --> 00:29:22,300 Hanem azért, mert én már nem írt funkciók, ezek most gyakorlatilag 634 00:29:22,300 --> 00:29:25,090 globális végig az egész fájlt itt. 635 00:29:25,090 --> 00:29:26,040 >> Közönség: Van-e mód , hogy azok a helyi? 636 00:29:26,040 --> 00:29:28,470 >> DAVID MALAN: Van módja annak, hogy azok a helyi? 637 00:29:28,470 --> 00:29:30,680 Csak csomagolás őket funkciókat. 638 00:29:30,680 --> 00:29:32,790 Melyik a legfrissebb PHP, meg tudod csinálni ezt 639 00:29:32,790 --> 00:29:34,130 egy névtelen függvényt. 640 00:29:34,130 --> 00:29:35,930 De még az, hogy a összefüggésben JavaScript. 641 00:29:35,930 --> 00:29:37,260 De a rövid válasz: nem. 642 00:29:37,260 --> 00:29:40,888 A hosszabb válasz: igen. 643 00:29:40,888 --> 00:29:42,380 Szép. 644 00:29:42,380 --> 00:29:43,380 Jó kvíz kérdés. 645 00:29:43,380 --> 00:29:43,930 Rendben van. 646 00:29:43,930 --> 00:29:47,760 >> Így végül, az oldal maga valójában nagyon egyszerű. 647 00:29:47,760 --> 00:29:51,470 Figyeljük meg, hogy egyszer én kilépéshez PHP mód felidézni hogy ez a cucc le 648 00:29:51,470 --> 00:29:53,700 alatt csak megy, hogy nyárson ki nyers a böngésző. 649 00:29:53,700 --> 00:29:57,050 Ami jó, mert én akarok küldeni a felhasználó bizonyos HTML, de én nem akarom 650 00:29:57,050 --> 00:29:59,140 hogy dinamikusan frissíti a HTML. 651 00:29:59,140 --> 00:30:03,930 És az egyik mód arra, hogy ennek az, hogy rendezni nagyon gyorsan csökken vissza a PHP 652 00:30:03,930 --> 00:30:07,730 módban nyitó zárójel kérdőjel egyenlőségjel, majd a kimenetet az érték 653 00:30:07,730 --> 00:30:08,650 számláló. 654 00:30:08,650 --> 00:30:12,360 >> Vagy ha ez úgy néz ki, egy kicsit rejtélyes, ez egyenlőségjel valójában csak néhány 655 00:30:12,360 --> 00:30:16,190 szintaktikai cukor a printf ($ counter). 656 00:30:16,190 --> 00:30:19,160 De őszintén szólva, ez csak egy kicsit csúnya és egy kicsit bosszantó, hogy írja. 657 00:30:19,160 --> 00:30:23,660 Tehát PHP nagyon szépen kínálja ezt a szolgáltatást ahol csak annyit, hogy több 658 00:30:23,660 --> 00:30:25,450 tömören azonos módon. 659 00:30:25,450 --> 00:30:26,940 >> Szóval, mi folyik alatta a motorháztető alatt? 660 00:30:26,940 --> 00:30:31,210 Nézzük gyorsan nézd meg a hálózat tab itt counter.php. 661 00:30:31,210 --> 00:30:35,090 És hadd menjen előre, és az első hadd törölje a cookie-kat. 662 00:30:35,090 --> 00:30:38,670 Nézzük Böngészési adatok törlése óta az idők kezdete. 663 00:30:38,670 --> 00:30:39,680 Most menjünk vissza ide. 664 00:30:39,680 --> 00:30:41,340 Most újra az oldalt. 665 00:30:41,340 --> 00:30:42,170 És én vissza nullára. 666 00:30:42,170 --> 00:30:44,810 Mert a pecsét már mosott, Most egy új cookie-t. 667 00:30:44,810 --> 00:30:48,780 >> Valóban, ha megnézzük a hálózat fülre, és nézd meg válasz fejlécét, észre 668 00:30:48,780 --> 00:30:51,960 hogy a készülék küld nekem cookie akinek a neve kissé 669 00:30:51,960 --> 00:30:55,820 önkényesen, hanem egyfajta ésszerűen, PHPSESSID. 670 00:30:55,820 --> 00:30:58,440 És küldi nekem ez tényleg nagy véletlen számot. 671 00:30:58,440 --> 00:30:59,440 Ez nem elég sok. 672 00:30:59,440 --> 00:31:00,390 Ez nem egészen hexadecimális. 673 00:31:00,390 --> 00:31:03,600 Ez valamilyen alfanumerikus karakterlánc, de feltehetően ez véletlen. 674 00:31:03,600 --> 00:31:06,830 És ez a pecsét, így a beszélni, hogy én vagyok utalva. 675 00:31:06,830 --> 00:31:11,960 >> Közben, ha újra, majd kattintson a nézd meg ezt a második sorban a második 676 00:31:11,960 --> 00:31:17,600 kérelmet, értesítést most, hogy a kérelem fejlécek közé PHPSESSID értéke ennek 677 00:31:17,600 --> 00:31:19,390 nem set-cookie-t, de csak cookie-t. 678 00:31:19,390 --> 00:31:22,950 És ez a böngésző bemutatása A kezem bélyegző. 679 00:31:22,950 --> 00:31:28,820 >> Tehát most, mint egy teaser, és majd beszélgetünk erről egy hét múlva, de a 680 00:31:28,820 --> 00:31:31,590 milyen módon jelent ez neked sebezhető, a Facebook számla 681 00:31:31,590 --> 00:31:34,137 sérülékeny, és más hasonló számlák sebezhető? 682 00:31:34,137 --> 00:31:35,510 >> Közönség: Ha valaki a cookie-t. 683 00:31:35,510 --> 00:31:36,750 >> DAVID MALAN: Igen, ha valaki van a cookie. 684 00:31:36,750 --> 00:31:39,920 Úgy értem igazán, ugyanúgy, mint néhányan volna bíróság elé, mint egy klub, vagy egy 685 00:31:39,920 --> 00:31:44,030 vidámpark, ha megpróbálja valami így másolni a bélyegző, bár 686 00:31:44,030 --> 00:31:47,560 visszafelé egy másik ember kezét, és akkor ő mutatja be azt 687 00:31:47,560 --> 00:31:53,250 saját, ha tényleg nem néz ki azonos, 123456789, akkor a web 688 00:31:53,250 --> 00:31:57,980 szerver látszólag csak megy, bízom benne, hogy a felhasználó maga. 689 00:31:57,980 --> 00:32:01,450 >> És ez valóban egy alapvető fenyegetés minden alkalommal, amikor a sütiket 690 00:32:01,450 --> 00:32:05,420 mert ha valaki csak úgy hamisít Beszélünk az Ön cookie-t, kitalálja, hogy mit 691 00:32:05,420 --> 00:32:08,660 is, akár azzal, hogy valóban másolás nézi a számítógép 692 00:32:08,660 --> 00:32:09,890 és mivel, mint a, OK. 693 00:32:09,890 --> 00:32:14,520 Dávid cookie JJ3JIK és így tovább, és akkor ők okos ahhoz, hogy tudja, 694 00:32:14,520 --> 00:32:18,080 hogyan, hogy egyfajta manuális küldeni, hogy a süti a böngésző vagy a 695 00:32:18,080 --> 00:32:22,350 programot írnak, tudtak teljesen jelentkezzen be a honlapon, mint te. 696 00:32:22,350 --> 00:32:28,560 Ez nem olyan nehéz, hogy magát a valaki, hacsak nem újra p-set 697 00:32:28,560 --> 00:32:30,790 két, amely bevezette az mi? 698 00:32:30,790 --> 00:32:32,065 >> Közönség: Kriptográfia. 699 00:32:32,065 --> 00:32:33,860 >> DAVID MALAN: A kis kis kriptográfia. 700 00:32:33,860 --> 00:32:36,550 Egyszerű kriptográfia, legalábbis a standard változat, de a titkosítási 701 00:32:36,550 --> 00:32:36,870 mégis. 702 00:32:36,870 --> 00:32:37,410 kevesebb. 703 00:32:37,410 --> 00:32:41,440 Így kiderül, ha titkosítja az összes Ezek a fejlécek a valami, amit 704 00:32:41,440 --> 00:32:48,770 talán most többet tudni meghitten ismerem, mint az SSL, Secure Socket Layer vagy https:// URL, 705 00:32:48,770 --> 00:32:51,890 akkor az összes ilyen dolgot már pillantva valóban titkosított, 706 00:32:51,890 --> 00:32:54,800 ami azt jelenti, hogy olyan, mint te nem tudja olvasni a pecsét. 707 00:32:54,800 --> 00:32:59,350 Csak a facebook.com lehet, vagy google.com, vagy ebben az esetben a készülék 708 00:32:59,350 --> 00:33:00,550 olvastam, hogy a pecsét. 709 00:33:00,550 --> 00:33:04,020 >> Tragikus azonban, és ez szintén túl szükséges a NSA cucc 710 00:33:04,020 --> 00:33:06,410 a végén még SSL feltörhető. 711 00:33:06,410 --> 00:33:09,850 És ez tényleg nem olyan nehéz még feltörni, hogy a titkosítás. 712 00:33:09,850 --> 00:33:12,040 Nem annyira a repedés a titkosítás, hanem a megtévesztett 713 00:33:12,040 --> 00:33:15,720 böngésző dekódoláshoz Az adatok idő előtt. 714 00:33:15,720 --> 00:33:17,880 De ismétlem, majd ugratni azzal, hogy hamarosan. 715 00:33:17,880 --> 00:33:21,242 Egyelőre csak féljen. 716 00:33:21,242 --> 00:33:23,070 Ez tragikusan olyan igaz. 717 00:33:23,070 --> 00:33:23,760 >> Rendben van. 718 00:33:23,760 --> 00:33:27,910 Szóval, hol ezt most hagyni minket? 719 00:33:27,910 --> 00:33:29,010 Hát, ezt. 720 00:33:29,010 --> 00:33:31,790 Menjünk előre, és egy gyors teaser mielőtt egy kis szünetet. 721 00:33:31,790 --> 00:33:33,790 És azt hiszem, mi időzzön egy kicsit ma, de fogunk belevetik magukat 722 00:33:33,790 --> 00:33:37,850 valami új és szexi, ami fen az étvágyat még. 723 00:33:37,850 --> 00:33:38,950 Szóval ez a teaser. 724 00:33:38,950 --> 00:33:41,520 >> Tehát SQL, elkezdtünk beszélni még oly rövid ideig utoljára. 725 00:33:41,520 --> 00:33:44,670 Majd igazán piszkos a kezed ez néhány p-set hét. 726 00:33:44,670 --> 00:33:46,480 És a laikus szempontból, mit SQL - 727 00:33:46,480 --> 00:33:47,110 S-Q-L - 728 00:33:47,110 --> 00:33:49,850 érted? 729 00:33:49,850 --> 00:33:50,310 Mi ez? 730 00:33:50,310 --> 00:33:51,546 Igen. 731 00:33:51,546 --> 00:33:53,240 >> Közönség: Nézzük meg hozzáférési adatait. 732 00:33:53,240 --> 00:33:53,360 >> DAVID MALAN: Igen. 733 00:33:53,360 --> 00:33:55,120 Azt nézzük meg hozzáférési adatait egy adatbázisban. 734 00:33:55,120 --> 00:33:56,710 Structured Query Language. 735 00:33:56,710 --> 00:33:59,890 És ez lényegében egy programozási nyelv. 736 00:33:59,890 --> 00:34:03,400 Vannak olyan jellemzői is, hogy mi nem is használja az osztályban. 737 00:34:03,400 --> 00:34:04,710 De akkor hatékonyan határozzák funkciókat. 738 00:34:04,710 --> 00:34:06,870 Ők az úgynevezett tárolt eljárások SQL. 739 00:34:06,870 --> 00:34:09,860 De majd tartani meglehetősen egyszerű, és csak felhasználhatják azt a bizonyos alapvető műveleteket 740 00:34:09,860 --> 00:34:14,320 mint kiválasztásával adatok adatbevitel az adatok frissítése, és az adatok törlését. 741 00:34:14,320 --> 00:34:17,400 >> És akkor tényleg azt hiszed egy adatbázis, mint egy SQL adatbázis, mint csak 742 00:34:17,400 --> 00:34:18,800 hogy a Microsoft Excel. 743 00:34:18,800 --> 00:34:21,989 Mivel az SQL utal, hogy a relációs adatbázis, ahol a 744 00:34:21,989 --> 00:34:23,480 kapcsolatban csak azt jelenti, táblákat. 745 00:34:23,480 --> 00:34:24,739 Sorok és oszlopok. 746 00:34:24,739 --> 00:34:27,929 Tehát bármi, amit fel tud állítani egy táblázatot mint ez vagy a Google Docs, 747 00:34:27,929 --> 00:34:32,460 meg tudná tenni egy SQL adatbázis úgy nyilatkozott, egy asztal. 748 00:34:32,460 --> 00:34:34,800 >> Nos, mit valójában elérheti ezt az információt? 749 00:34:34,800 --> 00:34:38,239 Nos, parancsok vagy lekérdezések, mint ez. 750 00:34:38,239 --> 00:34:40,199 SELECT, INSERT, UPDATE, és DELETE. 751 00:34:40,199 --> 00:34:44,489 És a legtöbb esetben, ezek a Négy egyetlen összetevője akkor kell 752 00:34:44,489 --> 00:34:47,370 valami nagyon erős A probléma meg hét. 753 00:34:47,370 --> 00:34:49,940 >> Most vissza a nap, akkor valóban kölcsönhatásba egy adatbázist a 754 00:34:49,940 --> 00:34:52,730 fekete-fehér terminál ablak villogó prompt, mint ez. 755 00:34:52,730 --> 00:34:56,370 És az adatbázis kifutunk az készüléket MySQL nevezik, ami 756 00:34:56,370 --> 00:34:58,560 a szabad és nyílt forráskódú adatbázis-motor. 757 00:34:58,560 --> 00:35:02,240 Ha a Google, és olvasd el a Wikipedia cikket, akkor tudja, hogy a neve 758 00:35:02,240 --> 00:35:05,060 egy kis átmenet néhány Linux rendszerekkel. 759 00:35:05,060 --> 00:35:10,460 Maria adatbázis valójában egy villa úgy mondjam a MySQL. 760 00:35:10,460 --> 00:35:12,740 >> Hosszú történet rövid, az Oracle megvásárolta a MySQL. 761 00:35:12,740 --> 00:35:13,870 Az Oracle egy nagy cég. 762 00:35:13,870 --> 00:35:17,010 Az emberek már attól, hogy ez már nem is annyira a nyílt forráskódú, 763 00:35:17,010 --> 00:35:20,930 így ez csak a MySQL egy példányát, ami még szabad, még nyílt forráskódú, és a 764 00:35:20,930 --> 00:35:23,550 telepített Fedora Linux alapértelmezés szerint. 765 00:35:23,550 --> 00:35:26,130 >> De ez a fajta fájdalom a nyak megismerkedni a 766 00:35:26,130 --> 00:35:27,310 adatbázis ezen a módon. 767 00:35:27,310 --> 00:35:30,560 Tehát mi is a CS50 készülék egy ingyenes, nyílt forráskódú eszköz, úgynevezett 768 00:35:30,560 --> 00:35:31,700 phpMyAdmin. 769 00:35:31,700 --> 00:35:33,940 Csak véletlen, hogy ez PHP-ben íródott. 770 00:35:33,940 --> 00:35:36,450 Nincs alapvető szükség van a PHP itt. 771 00:35:36,450 --> 00:35:40,090 De ez csak egy web-alapú eszköz, hogy ingyenesen letölthető, telepíthető 772 00:35:40,090 --> 00:35:43,850 A készülék, amely lehetővé teszi számunkra, hogy egy grafikus felhasználói felület, amely 773 00:35:43,850 --> 00:35:48,610 hogy vizsgálja meg a p-be hét adatbázis amely az új adatbázisokat, 774 00:35:48,610 --> 00:35:51,980 azt mondják, a saját végső projekt, ha azt hasonlók, és végül létrehozni 775 00:35:51,980 --> 00:35:55,900 dinamikus weboldalak, mint a CS50 Finance amely lehetővé teszi adatok lekérdezéséhez és 776 00:35:55,900 --> 00:35:58,140 frissítése az adatok dinamikusan. 777 00:35:58,140 --> 00:36:01,420 >> Ugye nem kell majd használni csak egy egyszerű szöveges fájl vagy CSV. 778 00:36:01,420 --> 00:36:05,950 Tudod valójában egy okos adatbázist program, így végre több 779 00:36:05,950 --> 00:36:10,240 bonyolult lekérdezések csak olvasó át mindent lineárisan. 780 00:36:10,240 --> 00:36:14,150 >> Így például, ez az, amit adni ki a dobozból a p-be a hét. 781 00:36:14,150 --> 00:36:18,280 Ez egy asztal, látszólag legalább három oszlopot, amelyek közül az egyik 782 00:36:18,280 --> 00:36:21,450 felhasználónév, amelyek közül az egyik hash, és a másik, amely azonosítója. 783 00:36:21,450 --> 00:36:26,200 >> De az érdekes dolog, és csak a kötekedik ki egy gondolat itt, felhasználónév 784 00:36:26,200 --> 00:36:29,270 feltehetőleg már egyedi, nem igaz? 785 00:36:29,270 --> 00:36:31,190 Úgy értem, a legtöbb minden olyan webhelyet, ha van egy felhasználónevet, ott 786 00:36:31,190 --> 00:36:32,370 akkor ne két Caesars. 787 00:36:32,370 --> 00:36:33,440 Nem lehet két Malans. 788 00:36:33,440 --> 00:36:34,950 Nem lehet két jharvards. 789 00:36:34,950 --> 00:36:35,600 Egyedülálló. 790 00:36:35,600 --> 00:36:38,610 Ellenkező esetben nem tudjuk, melyik jharvard valójában. 791 00:36:38,610 --> 00:36:42,710 Akkor mi lehet a motiváció is miután egy harmadik oszlop a bal oldalon 792 00:36:42,710 --> 00:36:46,970 ott az úgynevezett ID, ami úgy néz ki, mint egy szám, ami hasonlóan egyedi? 793 00:36:46,970 --> 00:36:51,300 Úgy érzi, egy kicsit redundáns nekem első pillantásra. 794 00:36:51,300 --> 00:36:54,910 Miért lehet az, hogy vonzó, hogy a nem csak egyedi felhasználónevek, 795 00:36:54,910 --> 00:36:56,837 hanem az egyedi számokat? 796 00:36:56,837 --> 00:36:59,460 >> Közönség: Lehetett volna ugyanazt a jelszót. 797 00:36:59,460 --> 00:37:01,720 >> DAVID MALAN: Az emberek lehet, hogy ugyanazt a jelszót, persze. 798 00:37:01,720 --> 00:37:03,900 Ez lehet teljesen történhet. 799 00:37:03,900 --> 00:37:08,270 De ha ezt az egyedülálló felhasználóneveddel, azt azt állítják, hogy ez nem igazán 800 00:37:08,270 --> 00:37:11,630 számít, mert ha írja be a felhasználónév, én csak azt kell ellenőrizni, hogy 801 00:37:11,630 --> 00:37:15,060 jelszót, a hash tartalmazza. 802 00:37:15,060 --> 00:37:15,970 Mi másért? 803 00:37:15,970 --> 00:37:17,950 >> Közönség: gyorsabb keresést. 804 00:37:17,950 --> 00:37:18,680 >> DAVID MALAN: gyorsabb keresést. 805 00:37:18,680 --> 00:37:19,548 Miért? 806 00:37:19,548 --> 00:37:21,460 >> Közönség: ID csak egy. 807 00:37:21,460 --> 00:37:24,040 >> DAVID MALAN: ID csak egy karakter, vagy pontosabban, ez a szám, 808 00:37:24,040 --> 00:37:26,910 így valószínűleg 32 bit vagy valami ilyesmi. 809 00:37:26,910 --> 00:37:30,270 Mivel a felhasználóneveddel, látszólag Jason Hirschhorn ott van valami 810 00:37:30,270 --> 00:37:33,900 nevetségesen hosszú, és ez fog engem sokkal több időt a húr 811 00:37:33,900 --> 00:37:40,910 összehasonlítani H-I-R-S-C-H-H-O-R-N, és talán a / 0, vagy valami ilyesmi, annak érdekében, 812 00:37:40,910 --> 00:37:45,100 felnézni Jason, szemben a csak mondván, adja meg a felhasználó a kettes számú. 813 00:37:45,100 --> 00:37:46,510 Ez a 32 bit. 814 00:37:46,510 --> 00:37:48,550 Ez egy INT, amely meg kell összehasonlítani. 815 00:37:48,550 --> 00:37:52,150 És valóban, pontosan ezért adatbázisok általában rendelni egyedi azonosítókat 816 00:37:52,150 --> 00:37:53,710 sorok őket. 817 00:37:53,710 --> 00:37:56,280 >> Most mi más adattípusok vannak mellett INT és látszólag 818 00:37:56,280 --> 00:37:57,160 húrok, mint ez? 819 00:37:57,160 --> 00:37:59,700 Nos, hogy helyesebb, SQL adatbázisok, mint a 820 00:37:59,700 --> 00:38:02,060 MySQL, van CHAR mezők. 821 00:38:02,060 --> 00:38:05,320 És tulaj egy kicsit félrevezető nem egy CHAR. 822 00:38:05,320 --> 00:38:10,290 A CHAR területen egy MySQL adatbázis egy vagy több karakter, de ez egy 823 00:38:10,290 --> 00:38:11,780 meghatározott számú karaktert. 824 00:38:11,780 --> 00:38:15,710 >> Így például, ha én megyek át phpMyAdmin mint azt már, vagy 825 00:38:15,710 --> 00:38:21,340 hamarosan a probléma meg hét, és megyek az az adatbázis, és csak a móka kedvéért, 826 00:38:21,340 --> 00:38:25,700 hozzunk létre egy új tábla neve tesztelni mindössze két oszlopot. 827 00:38:25,700 --> 00:38:27,160 Én majd kattintson a Mehet gombra. 828 00:38:27,160 --> 00:38:30,070 És ez lesz meglehetősen ismerős, különösen akkor bütykölni 829 00:38:30,070 --> 00:38:31,130 körül a saját. 830 00:38:31,130 --> 00:38:34,140 Itt is írja ID létrehozása Új tábla típusú INT. 831 00:38:34,140 --> 00:38:37,770 De itt azt is írja felhasználónév újra a korábbi táblázat. 832 00:38:37,770 --> 00:38:40,700 És észre, van egy csomó A típusok közül lehet választani. 833 00:38:40,700 --> 00:38:43,610 >> És ez is az oka phpMyAdmin a fajta szép. 834 00:38:43,610 --> 00:38:46,770 Ez egyfajta ön-tanítás, hogy csak ilyen pontot, és kattintson, és 835 00:38:46,770 --> 00:38:50,730 nézd meg legördülő menük, és arra következtetni, hogy milyen hatásköre SQL ad. 836 00:38:50,730 --> 00:38:54,090 >> És valóban, ha úgy döntök, CHAR, én majd meg kell határozni a hosszát, vagy hogyan 837 00:38:54,090 --> 00:38:55,940 sok értéket, hogy hány karakter. 838 00:38:55,940 --> 00:39:00,090 Tehát nagyon közös értékek olyan dolgok, mint a 255, de ez egy kicsit hosszú. 839 00:39:00,090 --> 00:39:02,250 Általában nyolc a felhasználónevet. 840 00:39:02,250 --> 00:39:03,590 De ez egy kicsit kicsi ezekben a napokban. 841 00:39:03,590 --> 00:39:05,430 Tehát ez egy tervezési döntés. 842 00:39:05,430 --> 00:39:08,630 Ez max. 8 karakter, 32, 255, 1000? 843 00:39:08,630 --> 00:39:09,830 Ez tényleg rajtad múlik. 844 00:39:09,830 --> 00:39:12,350 De egy CHAR mező egy rögzített szám. 845 00:39:12,350 --> 00:39:16,420 Úgy döntenek, túl kevés, és te milyen csavarozott ha akarsz egy hosszabb felhasználónevet. 846 00:39:16,420 --> 00:39:19,132 Válassza ki a túl sok, és mi a hátránya? 847 00:39:19,132 --> 00:39:20,820 >> Közönség: [hallható]. 848 00:39:20,820 --> 00:39:21,620 >> DAVID MALAN: Ez pazarló. 849 00:39:21,620 --> 00:39:24,835 Csakúgy, mint a C, ha van egy nagyobb darab memória mint amennyire szüksége van, akkor 850 00:39:24,835 --> 00:39:27,190 csak időt és kiesik hely. 851 00:39:27,190 --> 00:39:31,430 Tehát, mint egy alternatív, létezik VARCHAR, amely megoldja ezt a problémát, 852 00:39:31,430 --> 00:39:36,390 kezelése hossza nem fix hosszúságú, de a maximális hosszát, és egy 853 00:39:36,390 --> 00:39:40,990 változó karaktereinek számát, ami aztán inkább csak annyi KARAKTEREK, mint te 854 00:39:40,990 --> 00:39:42,710 valóban szükség van. 855 00:39:42,710 --> 00:39:43,670 Ez jól hangzik. 856 00:39:43,670 --> 00:39:45,640 >> Miért nem megszabadulni a CHAR adattípus akkor? 857 00:39:45,640 --> 00:39:48,500 Mi lehet a hátránya a VARCHARs, ami úgy hangzik, 858 00:39:48,500 --> 00:39:51,644 mintha ez egy szép győzelem? 859 00:39:51,644 --> 00:39:52,596 Igen? 860 00:39:52,596 --> 00:39:53,846 >> Közönség: [hallható]. 861 00:39:53,846 --> 00:39:57,360 862 00:39:57,360 --> 00:39:57,790 >> DAVID MALAN: OK, jó. 863 00:39:57,790 --> 00:40:01,101 Tehát, ha az összes adatot azonos hossza, mi az aggodalom? 864 00:40:01,101 --> 00:40:05,250 >> Közönség: Mert pazarlás adatok elmondja őket. 865 00:40:05,250 --> 00:40:09,060 >> DAVID MALAN: Tehát, ha az összes adat azonos hosszúságú, bár azt állítják, 866 00:40:09,060 --> 00:40:12,300 hogy megad egy maximális hosszúságú A VARCHAR nem különbözik 867 00:40:12,300 --> 00:40:16,070 megad egy fix hosszúságú CHAR esetén tudod, ez a szám előre. 868 00:40:16,070 --> 00:40:19,500 De valóban, én pedig valami kivonat, amely válasz a valóság 869 00:40:19,500 --> 00:40:22,610 hogy még mindig a max, ami bosszantó, különösen akkor, ha 870 00:40:22,610 --> 00:40:25,920 találkozik egy személy nevét, ami szokatlanul hosszú, hogy nem 871 00:40:25,920 --> 00:40:26,860 előre. 872 00:40:26,860 --> 00:40:31,420 És ez is egy kicsit kevésbé hatékony hogy ténylegesen keresni VARCHARs mint 873 00:40:31,420 --> 00:40:35,620 szemben a keresést karaktereket; különösen a hosszú asztal, amely sok- 874 00:40:35,620 --> 00:40:36,510 rengeteg adatot. 875 00:40:36,510 --> 00:40:40,060 Tehát itt is, tematikus ismét nincs nyilvánvaló választás. 876 00:40:40,060 --> 00:40:42,870 >> Szóval, csak hogy egyfajta más adattípusok, amelyek érdekesek lehetnek 877 00:40:42,870 --> 00:40:45,400 vagy p-set vagy hét A jövőben ott INT. 878 00:40:45,400 --> 00:40:47,270 Van BIGINT, amely olyan, mint a hosszú, hosszú. 879 00:40:47,270 --> 00:40:48,880 Úgy látszik, hogy a 64 bit. 880 00:40:48,880 --> 00:40:51,640 Van DECIMAL, amit majd látni a probléma halmaz, ami sokkal 881 00:40:51,640 --> 00:40:55,300 tisztább válasz a problémákra is felmerült úszó és lebegő 882 00:40:55,300 --> 00:40:55,980 pont pontatlanság. 883 00:40:55,980 --> 00:40:57,390 És akkor ott van DATETIME. 884 00:40:57,390 --> 00:41:01,530 Van szó adattípust, amely néz ki, mint egy év, egy hónap, egy nap, 885 00:41:01,530 --> 00:41:03,730 és egy óra, perc, másodperc. 886 00:41:03,730 --> 00:41:07,470 >> De az SQL adatbázisokat is dolgokat hívjuk indexek. 887 00:41:07,470 --> 00:41:11,630 És az index van valami, amit adja létrehozásakor az asztalra 888 00:41:11,630 --> 00:41:15,720 a keresések és egyéb műveletek hatékonyabb. 889 00:41:15,720 --> 00:41:18,550 Pontosabban, van valami neve Az elsődleges index, amit lehetett 890 00:41:18,550 --> 00:41:19,440 kijelentik az alábbiak szerint. 891 00:41:19,440 --> 00:41:22,330 >> Mi volt ez az Ön számára a felhasználók asztali adunk. 892 00:41:22,330 --> 00:41:26,160 De észre, ha én kézzel felüdítő A felhasználói tábla van adva 893 00:41:26,160 --> 00:41:27,110 ez a név a felhasználók. 894 00:41:27,110 --> 00:41:28,125 Már megadott azonosító. 895 00:41:28,125 --> 00:41:29,330 Én meg INT. 896 00:41:29,330 --> 00:41:32,000 Én meg felhasználónevet maximum 32 karakter. 897 00:41:32,000 --> 00:41:36,140 De ha folyamatosan görgetés ez a meglehetősen nagy ablak, észre van egy 898 00:41:36,140 --> 00:41:38,260 csomó más dolog, amit megadhat. 899 00:41:38,260 --> 00:41:40,950 >> Az egyik, hogy megadhatja attribútumok mint, tudod mit, ez a 900 00:41:40,950 --> 00:41:42,190 INT legyen előjel nélküli. 901 00:41:42,190 --> 00:41:45,510 Nem akarom, hogy a negatív számok, úgyhogy teszi aláíratlan. 902 00:41:45,510 --> 00:41:48,660 Null nem releváns itt, mert Azt akarom, hogy minden felhasználó 903 00:41:48,660 --> 00:41:49,640 egyedi számot. 904 00:41:49,640 --> 00:41:50,830 Én nem akarom, hogy null. 905 00:41:50,830 --> 00:41:52,330 >> De ez érdekes. 906 00:41:52,330 --> 00:41:57,780 Én is meghatározza, hogy azonosító vagy a elsődleges kulcs az adatbázisban, vagy ez a 907 00:41:57,780 --> 00:42:00,620 egyedi, vagy indexelt, vagy a teljes szöveget. 908 00:42:00,620 --> 00:42:05,630 Így a mai célokra, hosszú történet rövid, PRIMARY azt jelenti, hogy ez kell 909 00:42:05,630 --> 00:42:10,570 egyszerre elvi és gyakorlati területén, amit használunk, hogy egyedülálló módon 910 00:42:10,570 --> 00:42:12,140 azonosítja a felhasználót. 911 00:42:12,140 --> 00:42:16,140 >> Tehát, ha megnézzük a felhasználókat, hogy ez a fajta Az ígéret, hogy vizsgálja meg őket leginkább 912 00:42:16,140 --> 00:42:17,370 Ez az egyedi azonosító. 913 00:42:17,370 --> 00:42:21,930 És az adatbázis biztosítja, hogy ha egy felhasználói szám 3, akkor nem 914 00:42:21,930 --> 00:42:25,400 fizikailag be egy másik felhasználó azzal, hogy ugyanazt a 3-as. 915 00:42:25,400 --> 00:42:28,380 Az adatbázis csak megtagadja, a módosítások mentéséhez. 916 00:42:28,380 --> 00:42:32,310 Ami jó dolog, mert akkor védekezhet a magad. maga 917 00:42:32,310 --> 00:42:34,270 >> Alternatívaként a felhasználónevet. 918 00:42:34,270 --> 00:42:37,670 Tehát a második sorban, visszahívás, a felhasználónév mezőt. 919 00:42:37,670 --> 00:42:41,860 Tehát a második sorban itt a felhasználóneveddel, mint mi a bal szélen is. 920 00:42:41,860 --> 00:42:43,940 >> Szóval, mit is akarok adni? 921 00:42:43,940 --> 00:42:47,840 Nem vagyok szabad, szerint SQL, két megadott elsődleges kulcsokat. 922 00:42:47,840 --> 00:42:50,750 megadhat egy közös kulcsot, ahol nézd meg mindkét területen, de nem tudnak 923 00:42:50,750 --> 00:42:52,260 külön-külön lehet elsődleges kulcs. 924 00:42:52,260 --> 00:42:54,750 Szóval ez szóba sem jöhet. 925 00:42:54,750 --> 00:42:56,040 Szóval, ami akarok válasszam? 926 00:42:56,040 --> 00:42:59,710 >> Nos, EGYEDI hasonló szellemben a elsődleges kulcs ahol megadhatja ezt 927 00:42:59,710 --> 00:43:03,570 mező egyedi, de Nem lesz az egy 928 00:43:03,570 --> 00:43:04,410 Én használni az időt. 929 00:43:04,410 --> 00:43:08,450 És nem fogjuk használni ezt minden az idő, miért megint? 930 00:43:08,450 --> 00:43:10,490 Ez lassabb lehetséges, ha ez egy hosszú felhasználónevet. 931 00:43:10,490 --> 00:43:11,740 Ez csak időpocsékolás. 932 00:43:11,740 --> 00:43:16,140 >> INDEX eközben kimondja, hogy ez nem lesz egyedi, de szeretnék 933 00:43:16,140 --> 00:43:19,470 , hogy a munka a mágia alatt a Hood, hogy gyorsabban nekem 934 00:43:19,470 --> 00:43:21,420 keresni ezen a területen. 935 00:43:21,420 --> 00:43:23,320 Tehát ez valószínűleg nem releváns. 936 00:43:23,320 --> 00:43:26,500 A felhasználónév, azt állítják, hogy UNIQUE egy jó válasz. 937 00:43:26,500 --> 00:43:31,200 De tegyük fel, hogy mi történt a felhasználók nagyobb érdekesebb, mint felhasználónevek, 938 00:43:31,200 --> 00:43:32,430 hash és azonosító számokat. 939 00:43:32,430 --> 00:43:33,860 Mi lenne, ha adott az embereknek a teljes nevét? 940 00:43:33,860 --> 00:43:37,700 Mi van, ha nekik címek és egyéb adatokat róluk? 941 00:43:37,700 --> 00:43:43,360 >> Nos, ha meghatározza, hogy egy oszlopot a adatbázis indexelt, ami azt jelenti, hogy 942 00:43:43,360 --> 00:43:47,730 MySQL vagy az Oracle, vagy bármi adatbázis amit használ, meg kell trükközni 943 00:43:47,730 --> 00:43:51,300 és használja valamilyen divatos adatok szerkezet, mint egy fa, vagy egy trie vagy 944 00:43:51,300 --> 00:43:55,940 hash tábla, vagy valami, hogy garantálják hogy ha keres adatokat 945 00:43:55,940 --> 00:43:58,150 válassza ki az adott területen - 946 00:43:58,150 --> 00:44:01,310 mint mutasd meg mindenkinek, hogy él, az Oxford Street. 947 00:44:01,310 --> 00:44:02,540 A lekérdezés ilyesmi. 948 00:44:02,540 --> 00:44:06,250 Ha meg előre, hogy Ön is szeretne egy index a területen, a 949 00:44:06,250 --> 00:44:09,050 keresések lesz sokkal, sokkal gyorsabban. 950 00:44:09,050 --> 00:44:12,090 >> Ha nem ad meg egy indexet, a legjobb amit tehetünk, lineáris keresést, ha 951 00:44:12,090 --> 00:44:13,030 ez nincs rendezve. 952 00:44:13,030 --> 00:44:16,220 De ha adja INDEX, az intelligens emberek, akik az adatbázis - 953 00:44:16,220 --> 00:44:19,340 emberek, mint te, aki már tudjuk fák és országokban és hash táblák - 954 00:44:19,340 --> 00:44:23,220 automatikusan építeni egy ilyen adatok struktúra RAM, hogy megbizonyosodjon arról, hogy az 955 00:44:23,220 --> 00:44:26,050 ezek keresések sokkal gyorsabb. 956 00:44:26,050 --> 00:44:29,660 >> FULLTEXT közben hasonló szellemben, de lehetővé teszi, hogy helyettesítő 957 00:44:29,660 --> 00:44:35,480 keresések, mint mutasd meg mindenkinek, hogy él utcákon, hogy kezdődik a 958 00:44:35,480 --> 00:44:36,960 O betű bármilyen okból. 959 00:44:36,960 --> 00:44:38,850 Meg tudod csinálni helyettesítő karakterek ilyesmi. 960 00:44:38,850 --> 00:44:45,880 Vagy vonzóbb dolgok, mint a show- nekem mindenki, aki a szó - 961 00:44:45,880 --> 00:44:49,400 mutasd meg mindenkinek, akinek a neve kezdődik egy adott levelet. 962 00:44:49,400 --> 00:44:51,880 Kereshet kulcsszavak ezen a módon. 963 00:44:51,880 --> 00:44:52,630 Rendben van. 964 00:44:52,630 --> 00:44:55,760 >> Tehát, design lehetőségeket ott lehetséges. 965 00:44:55,760 --> 00:44:57,740 Vannak mások, hogy fogok hullám a kezét. 966 00:44:57,740 --> 00:45:00,530 Kiderül, hogy lehet különböző tárolási motorok. 967 00:45:00,530 --> 00:45:04,390 És ez több, titokzatos, mint amennyi szükséges természetesen a probléma meg hét. 968 00:45:04,390 --> 00:45:06,920 Alapértelmezésben srácok használ úgynevezett InnoDB. 969 00:45:06,920 --> 00:45:10,910 Majd meglátod említik ezt valahol phpMyAdmin felülete legvalószínűbb. 970 00:45:10,910 --> 00:45:14,130 De tudom, hogy vannak más tervezési határozatokat, amelyek potenciális 971 00:45:14,130 --> 00:45:18,030 érdeklődés jön a végső projekteket, amennyiben teszel valamit, web-alapú. 972 00:45:18,030 --> 00:45:19,330 >> De nézzük ezt. 973 00:45:19,330 --> 00:45:23,130 Menjünk előre, és hogy ezt a képernyőn, mint a teaser a történetet 974 00:45:23,130 --> 00:45:26,330 bele magát, a szobatársam, és egy pohár tejet. 975 00:45:26,330 --> 00:45:28,240 Vessünk egy két perces vagy úgy szünet itt. 976 00:45:28,240 --> 00:45:31,060 És ha maradok, hadd jöjjön vissza, egy kicsit többet SQL, és 977 00:45:31,060 --> 00:45:35,160 majd egy kis JavaScript p-be nyolc szem előtt tartva. 978 00:45:35,160 --> 00:45:36,120 >> Rendben van. 979 00:45:36,120 --> 00:45:40,420 Szóval, most, hogy gondolsz a sarok esetben, nagyon könnyen felmerülhet 980 00:45:40,420 --> 00:45:44,240 keretében egy adatbázis segítségével, vagy őszintén szólva, még a valós életben a dolgok 981 00:45:44,240 --> 00:45:46,280 mint ATM kap pénzt. 982 00:45:46,280 --> 00:45:47,640 Tehát itt van a hűtőszekrény. 983 00:45:47,640 --> 00:45:50,040 Tegyük fel, hogy van egy túl-ben a kollégiumi, vagy a ház. 984 00:45:50,040 --> 00:45:54,990 És van egy szobatársa, és mind a Tényleg szeretem a tejet például. 985 00:45:54,990 --> 00:45:57,210 >> Szóval jön haza osztály egy nap. 986 00:45:57,210 --> 00:45:58,490 Ő nincs még vissza. 987 00:45:58,490 --> 00:45:59,180 Kinyitod a hűtőt. 988 00:45:59,180 --> 00:46:00,870 Szeretné egy nagy pohár tejet. 989 00:46:00,870 --> 00:46:01,820 Nincs tej. 990 00:46:01,820 --> 00:46:02,920 Szóval, mit csinálsz? 991 00:46:02,920 --> 00:46:03,840 Bezárja a hűtőben. 992 00:46:03,840 --> 00:46:04,670 Fogd meg a kulcsokat. 993 00:46:04,670 --> 00:46:05,930 Menj ki a térre. 994 00:46:05,930 --> 00:46:09,240 És kapsz a sorban CVS azokon saját pénztár dolgokat, melyek mindig 995 00:46:09,240 --> 00:46:11,180 hosszabb időt vesz igénybe, mint a ténylegesen miután pénztárosok. 996 00:46:11,180 --> 00:46:11,820 Egyébként. 997 00:46:11,820 --> 00:46:15,490 >> Tehát, eközben pont pont pont, a szobatársa hazajön, és ő 998 00:46:15,490 --> 00:46:17,440 Hasonlóképpen van egy vágyódás A kis tejet. 999 00:46:17,440 --> 00:46:20,380 Így ő kinyitja a hűtőt, úgy néz ki belülről, és ó, a fenébe. 1000 00:46:20,380 --> 00:46:21,160 Nincs tej. 1001 00:46:21,160 --> 00:46:24,750 Így ő fejek ki, előfordul, hogy menjen a többi CVS, ami csak egy 1002 00:46:24,750 --> 00:46:27,900 háztömbnyire valamilyen okból, és ő vagy ő lesz a sorban, hogy vásároljon néhány tejet. 1003 00:46:27,900 --> 00:46:30,480 >> Közben, gyere haza, ő vagy jön haza, és mit 1004 00:46:30,480 --> 00:46:31,980 akkor végül is? 1005 00:46:31,980 --> 00:46:33,080 Kétszer annyi tejet. 1006 00:46:33,080 --> 00:46:34,620 De nem igazán szeret tejet, hogy sok. 1007 00:46:34,620 --> 00:46:37,300 Tehát most már annyi tejet, hogy most egyikük csak fog menni savanyú 1008 00:46:37,300 --> 00:46:37,820 végül. 1009 00:46:37,820 --> 00:46:39,370 Tehát ez egy nagyon rossz kérdés. 1010 00:46:39,370 --> 00:46:39,900 Nem igaz? 1011 00:46:39,900 --> 00:46:41,990 >> Szóval, mi történt? 1012 00:46:41,990 --> 00:46:44,810 Tehát alapvetően ez a fajta Egy nevetséges példa. 1013 00:46:44,810 --> 00:46:48,580 De a motorháztető alatt, amit már volt történik, itt mind a ketten ellenőrzött 1014 00:46:48,580 --> 00:46:52,390 az állam néhány darab memória, a hűtőszekrény. 1015 00:46:52,390 --> 00:46:54,420 Mindketten ellenőrizte az állam néhány változó. 1016 00:46:54,420 --> 00:46:57,360 Mindketten felhívta a következtetésre hogy majd cselekedett. 1017 00:46:57,360 --> 00:47:01,420 De sajnos, miközben a szobatársa volt a boltban, az állam, hogy a 1018 00:47:01,420 --> 00:47:05,670 változó megváltozott, ő jött vissza és most meg akarja változtatni az állam, de 1019 00:47:05,670 --> 00:47:07,480 ez már megváltozott az őt. 1020 00:47:07,480 --> 00:47:11,120 És persze, ő nem lett volna elment a boltba, ha tudnák 1021 00:47:11,120 --> 00:47:13,010 hogy már úton van. 1022 00:47:13,010 --> 00:47:16,430 >> Így a valós világban, hogy tehetted elkerülni ezt a problémát, feltételezve, hogy van 1023 00:47:16,430 --> 00:47:18,940 hűtőszekrény, van egy szobatársa, és hogy tényleg szeretem a tejet? 1024 00:47:18,940 --> 00:47:19,760 >> Közönség: Kommunikáció. 1025 00:47:19,760 --> 00:47:20,580 >> DAVID MALAN: Kommunikáció. 1026 00:47:20,580 --> 00:47:21,160 OK. 1027 00:47:21,160 --> 00:47:22,500 De hogyan lehet, hogy kommunikál? 1028 00:47:22,500 --> 00:47:23,990 >> Közönség: Hagy egy megjegyzés. 1029 00:47:23,990 --> 00:47:25,480 >> DAVID MALAN: Hagyjuk a figyelmét, nem igaz? 1030 00:47:25,480 --> 00:47:28,025 Mindig hagy egy megjegyzés, a rajongók a show. 1031 00:47:28,025 --> 00:47:31,580 Rendben, mindig hagy egy megjegyzést, vagy fel igazán, mint a lakat, vagy valami 1032 00:47:31,580 --> 00:47:35,440 A hűtőszekrényben, hogy megtartja a szobatársa a ellenőrző állam 1033 00:47:35,440 --> 00:47:36,540 a változó. 1034 00:47:36,540 --> 00:47:40,800 >> Nos, miért lehet ez valaminek megfelelő probléma meg hét, vagy ATM-ek. 1035 00:47:40,800 --> 00:47:46,780 Nos, képzeljük el egy olyan világot, ahol az ATM lehet, hogy menjen fel egy ATM 1036 00:47:46,780 --> 00:47:48,920 gép itt, és egy másik ATM itt. 1037 00:47:48,920 --> 00:47:50,680 És ez elég gyakran megtörténik. 1038 00:47:50,680 --> 00:47:54,150 És tegyük fel, hogy két ATM-kártyák, ami lehetséges. 1039 00:47:54,150 --> 00:47:57,420 És belép két gép hatékonyan egyszerre, remélhetőleg 1040 00:47:57,420 --> 00:47:58,660 Bár senki sem néz. 1041 00:47:58,660 --> 00:48:01,260 És akkor írja be a PIN-kódot nagyjából egyszerre. 1042 00:48:01,260 --> 00:48:06,280 És akkor te az egyensúlyt lekérdezést , hogy mennyi készpénz van. 1043 00:48:06,280 --> 00:48:08,920 És tegyük fel, hogy van 100 $ maradt a fiókjában. 1044 00:48:08,920 --> 00:48:13,310 Tehát lényegében egyszerre, akkor mondjuk egy, nulla, nulla, írja. 1045 00:48:13,310 --> 00:48:16,000 És remélhetőleg vissza egy kis pénzt. 1046 00:48:16,000 --> 00:48:18,440 >> De, hogy mennyi pénzt lehet kapsz vissza? 1047 00:48:18,440 --> 00:48:21,710 Most számítógépek a végén a nap, különösen, ha ők beszél 1048 00:48:21,710 --> 00:48:27,360 kiszolgálók, nem feltétlenül a dolgok abban a sorrendben, ami várható. 1049 00:48:27,360 --> 00:48:30,860 >> Tegyük fel, hogy mi történik, mert az bármilyen hálózati sebesség problémák vannak 1050 00:48:30,860 --> 00:48:34,530 vagy, vagy CPU problémák vannak, vagy ilyesmi, tegyük fel, hogy a 1051 00:48:34,530 --> 00:48:38,530 első ATM ellenőrzi az egyensúlyt és lát, ó, ez a személy 100 dollárt. 1052 00:48:38,530 --> 00:48:41,840 De akkor lesz zavart, mert lehet, a biztonsági mentés történik, és így 1053 00:48:41,840 --> 00:48:42,500 lassul. 1054 00:48:42,500 --> 00:48:45,080 Vagy talán ellenőrzése közben, a hálózat kapcsolat egy kicsit lassabban, mert 1055 00:48:45,080 --> 00:48:45,910 ez csak úgy megtörténik. 1056 00:48:45,910 --> 00:48:47,100 Ők fizikai eszközök. 1057 00:48:47,100 --> 00:48:49,330 Tehát Eközben a második ATM kéri ugyanezt a kérdést. 1058 00:48:49,330 --> 00:48:53,030 Mennyi pénz nem David van? 100 $ a válasz. 1059 00:48:53,030 --> 00:48:58,930 De mivel az első ATM még nem az üzenetet küldte kivonás $ 100, mind a 1060 00:48:58,930 --> 00:49:03,000 ATM-ek már megvizsgálta a bank boltozat, látta ott 100 $ ott, és most 1061 00:49:03,000 --> 00:49:07,160 mindkét gép potenciálisan az majd kiköp a választ. 1062 00:49:07,160 --> 00:49:12,240 >> Nos, ez jó neked bizonyos értelemben ha az, amit a bank nem végül 1063 00:49:12,240 --> 00:49:17,200 A változás az összeg mínusz 100- beállítottam egyenlő a 1064 00:49:17,200 --> 00:49:21,570 bankszámla egyenlő 0, szemben csinál mínusz 100. 1065 00:49:21,570 --> 00:49:24,410 Most a legrosszabb esetben a bank - 1066 00:49:24,410 --> 00:49:27,470 vagy a legjobb a bank, időközben kapsz 200 $, és 1067 00:49:27,470 --> 00:49:31,690 bankszámlaszám megjeleníti negatív $ 100, ami igazán nem 1068 00:49:31,690 --> 00:49:32,950 javára van egyáltalán. 1069 00:49:32,950 --> 00:49:36,500 De a lényeg az, hogy ez a faj feltétele két szobatárs egyre 1070 00:49:36,500 --> 00:49:40,660 tej, vagy két ATM-ek próbálnak készpénzt és változtatni az állam a Vault 1071 00:49:40,660 --> 00:49:44,510 ugyanabban az időben létezik semmilyen alkalommal, amikor egy adatbázis. 1072 00:49:44,510 --> 00:49:48,290 >> Most meg hét probléma, ez a kérdés merül fel abban az értelemben, hogy ha veszel egy 1073 00:49:48,290 --> 00:49:52,110 részesedése a Facebook állomány, majd a Például veszel egy második része 1074 00:49:52,110 --> 00:49:55,160 Facebook állomány, meg kell, hogy a döntést, mint a programozó. 1075 00:49:55,160 --> 00:49:58,710 Annak eldöntésére, hogy hogyan kell frissíteni a adatbázis esély fogsz 1076 00:49:58,710 --> 00:50:02,250 Van egy sor ezen állomány, és ez a az egyik módja annak végrehajtására. 1077 00:50:02,250 --> 00:50:06,640 És fogsz egy részét FB, amely a tőzsdei rövidítést 1078 00:50:06,640 --> 00:50:10,120 Ennek felhasználónév vagy a felhasználó ID, az egyedi azonosító. 1079 00:50:10,120 --> 00:50:12,340 >> De ugyanaz a történet megtörténhet itt. 1080 00:50:12,340 --> 00:50:15,800 Ha a SELECT SQL, mint látni fogod A probléma meg hét, ha látod, 1081 00:50:15,800 --> 00:50:18,460 ó, David van egy részvény A Facebook állomány. 1082 00:50:18,460 --> 00:50:23,240 Hadd most változtatni, hogy ez két részvény, mert azt akarja, hogy vesz egy 1083 00:50:23,240 --> 00:50:24,120 második részét. 1084 00:50:24,120 --> 00:50:27,860 De tegyük fel, David tulajdonképpen két böngészőablakot nyitva, vagy tegyük fel, hogy 1085 00:50:27,860 --> 00:50:32,150 ez egy közös számlára két házastárs, és mindkettő szeretné végrehajtani 1086 00:50:32,150 --> 00:50:36,770 ugyanazt a műveletet, ott is, a fennáll a döntés, hogy 1087 00:50:36,770 --> 00:50:39,670 alapján készült korábbi állapota a világ - 1088 00:50:39,670 --> 00:50:41,290 a számla egy részvény - 1089 00:50:41,290 --> 00:50:45,630 és a két ember, vagy mindkettő szerver, most próbálja mondani, megnöveljük a két részvény. 1090 00:50:45,630 --> 00:50:49,020 De ebben az esetben, lehet, hogy feltöltött nekem pénzt mind a részvények, de 1091 00:50:49,020 --> 00:50:50,830 növekszik, hogy csak egyszer. 1092 00:50:50,830 --> 00:50:54,730 >> Tehát röviden, az alapvető probléma itt, mint a viccet hagyva 1093 00:50:54,730 --> 00:50:58,750 megjegyezni, vagy amivel egy lakat azt, Ha két ember, vagy két szál - 1094 00:50:58,750 --> 00:50:59,930 Szerintem vissza a semmiből - 1095 00:50:59,930 --> 00:51:03,220 tudja ellenőrizni az állam néhány változó és próbálja megváltoztatni a változót, 1096 00:51:03,220 --> 00:51:07,950 de ez a két dolog nem történik a időben, de lehet kapni megszakadt 1097 00:51:07,950 --> 00:51:11,500 más dolog történik, az adatok kap egy nagyon furcsa állapot. 1098 00:51:11,500 --> 00:51:15,450 És akkor előnyös, vagy szenved abban az értelemben, a pénz példa. 1099 00:51:15,450 --> 00:51:18,110 >> Így probléma meg hét, adunk ez egy sor kód, amely hosszú 1100 00:51:18,110 --> 00:51:21,000 történet rövid, megoldja ezt a probléma a MySQL. 1101 00:51:21,000 --> 00:51:24,950 Ez nagyon hosszú utasítás, amely nem még elférjenek egyetlen vonal a 1102 00:51:24,950 --> 00:51:30,370 képernyő itt biztosítja, hogy a működés az úgynevezett atom. 1103 00:51:30,370 --> 00:51:33,720 Mindez történik egyszerre, vagy ez nem így történik minden. 1104 00:51:33,720 --> 00:51:37,530 Ez a nagyon hosszú mondatok nem fognak megszakadni részben. 1105 00:51:37,530 --> 00:51:39,840 >> És mit csinál a szó szoros mit mond. 1106 00:51:39,840 --> 00:51:44,200 Helyezze a néhány tábla a következő három területen az adott értékek 1107 00:51:44,200 --> 00:51:47,280 de ismétlődő kulcs, nem csinál egy betét. 1108 00:51:47,280 --> 00:51:48,280 Csinálj egy update. 1109 00:51:48,280 --> 00:51:52,450 Tehát ez olyan, mint csinál egy SELECT és INSERT úgymond egyszerre. 1110 00:51:52,450 --> 00:51:55,150 És mi az a kulcs, amely valószínűleg előterjesztésétől itt? 1111 00:51:55,150 --> 00:51:58,300 1112 00:51:58,300 --> 00:52:01,380 >> Kiderül, és látni fogod ezt probléma meg Hetes spec, mert 1113 00:52:01,380 --> 00:52:06,040 már bejelenteni, hogy egy egyedi kulcs ezen a bizonyos asztalra, hogy 1114 00:52:06,040 --> 00:52:08,480 nem lehet több sorban ugyanazon felhasználó a 1115 00:52:08,480 --> 00:52:10,150 azonos penny állomány szimbólum - 1116 00:52:10,150 --> 00:52:13,780 ebben a példában, DVN.V van egy buta penny állomány, hogy mi 1117 00:52:13,780 --> 00:52:14,980 lásd a spec. 1118 00:52:14,980 --> 00:52:17,860 Mert már kijelentette, hogy egyedi, Ez azt jelenti, hogy ha 1119 00:52:17,860 --> 00:52:23,580 próbálja beilleszteni a kettős sorban, akkor inkább fogja frissíteni nélkül 1120 00:52:23,580 --> 00:52:27,020 másnak az alkalom, hogy változtatni az állam a világ sem. 1121 00:52:27,020 --> 00:52:29,400 Tehát röviden, ez biztosítja, dolgok atomi. 1122 00:52:29,400 --> 00:52:32,530 >> Általánosabban azonban, adatbázisok mint a MySQL - 1123 00:52:32,530 --> 00:52:35,460 és akkor nem kell ezt a funkciót a p-set hét, de tartsa szem előtt a 1124 00:52:35,460 --> 00:52:36,200 A jövőben - 1125 00:52:36,200 --> 00:52:38,870 támogatják az úgynevezett tranzakció, ahol lehet mondani 1126 00:52:38,870 --> 00:52:40,990 START tranzakció szó. 1127 00:52:40,990 --> 00:52:43,270 Ezután végre két SQL. 1128 00:52:43,270 --> 00:52:45,710 És egy SQL utasítást, mint látni fogod A p-set hét, úgy néz ki, egy kicsit 1129 00:52:45,710 --> 00:52:46,750 valami ilyesmi. 1130 00:52:46,750 --> 00:52:48,820 Frissítés egy asztal nevű számlára. 1131 00:52:48,820 --> 00:52:52,550 Egyensúlyának beállítása oszlop azonos bármilyen Az Egyenleg oszlopban jelenleg 1132 00:52:52,550 --> 00:52:57,280 mínusz 1,000, ahol ez a szám, számlaszám, mint például a felhasználói azonosító, 1133 00:52:57,280 --> 00:53:00,830 értéke 2, majd frissítse számla dot dot dot. 1134 00:53:00,830 --> 00:53:04,350 >> Így a laikus szempontból, mit jelentenek ezek a két lekérdezések úgy tűnik, hogy ennek a 1135 00:53:04,350 --> 00:53:05,840 valós értelemben vett banki? 1136 00:53:05,840 --> 00:53:07,440 >> Közönség: átvitele a megtakarításokat. 1137 00:53:07,440 --> 00:53:08,020 >> DAVID MALAN: Pontosan. 1138 00:53:08,020 --> 00:53:10,470 Pénzeszközök átcsoportosítását egyik figyelembe a másik. 1139 00:53:10,470 --> 00:53:14,400 És ez egy másik példa, ahol szeretné ezt a két dolgot történni 1140 00:53:14,400 --> 00:53:15,570 vagy nem történik meg. 1141 00:53:15,570 --> 00:53:18,880 Nem akarsz valamit, hogy a közepén, és potenciálisan összezavar 1142 00:53:18,880 --> 00:53:22,220 a matematika, vagy összezavar mennyi pénz van, vagy mennyi 1143 00:53:22,220 --> 00:53:23,170 pénzt a bank. 1144 00:53:23,170 --> 00:53:26,890 Szóval, ami igazán szép a tranzakció A MySQL az, és 1145 00:53:26,890 --> 00:53:30,160 adatbázisok általában az, hogy és okos emberek, akik már megvalósított 1146 00:53:30,160 --> 00:53:33,670 ezeket a funkciókat kitalálni, hogyan lehet meg arról, hogy mind a két dolog történik 1147 00:53:33,670 --> 00:53:35,120 vagy egyáltalán nem. 1148 00:53:35,120 --> 00:53:38,580 >> És ha igazán törekvő, hogy egy weboldal, amely által használt emberek 1149 00:53:38,580 --> 00:53:41,490 campus, az emberek a világban, ezzel valamit a startup értelemben 1150 00:53:41,490 --> 00:53:43,300 ezek a fajta tervezési döntések 1151 00:53:43,300 --> 00:53:45,020 lesz valaha is olyan fontos. 1152 00:53:45,020 --> 00:53:48,240 Ellenkező esetben, ha elkezdi elveszíteni adatokat, elveszti felhasználók számára, vagy a legrosszabb esetben 1153 00:53:48,240 --> 00:53:51,800 láttunk itt, esetleg pénzt veszít. 1154 00:53:51,800 --> 00:53:56,180 Tehát még egyszer, erről bővebben a probléma meg hét, valamint talán néhány 1155 00:53:56,180 --> 00:53:57,530 Ön a végső projektekben. 1156 00:53:57,530 --> 00:54:01,870 >> Szóval változtatni azt a képet kellett Egy pillanattal ezelőtt csak egy újabb módja. 1157 00:54:01,870 --> 00:54:04,070 Hadd valóban látni, ha tudok - 1158 00:54:04,070 --> 00:54:06,030 Nem, hogy elment. 1159 00:54:06,030 --> 00:54:06,690 Ott van. 1160 00:54:06,690 --> 00:54:09,020 >> Szóval, ez az, ahol hagytuk utoljára. 1161 00:54:09,020 --> 00:54:12,390 És kiderül, megyünk dobás még egy dolog, a mix itt - 1162 00:54:12,390 --> 00:54:14,510 a nyelv a JavaScript. 1163 00:54:14,510 --> 00:54:18,060 Így JavaScript valóban illik ebbe a darab - 1164 00:54:18,060 --> 00:54:22,086 és én nem egészen elegendő helyet, így ez most nem a skála. 1165 00:54:22,086 --> 00:54:23,900 OK, ez tényleg szánalmas. 1166 00:54:23,900 --> 00:54:27,075 OK, hogy a JavaScript. 1167 00:54:27,075 --> 00:54:27,340 Rendben van. 1168 00:54:27,340 --> 00:54:28,760 Én igazán tesz egy rossz. 1169 00:54:28,760 --> 00:54:29,390 Rendben van. 1170 00:54:29,390 --> 00:54:34,790 >> Tehát egy másik JavaScript programozási nyelv, és az utolsó, ha ez segít 1171 00:54:34,790 --> 00:54:37,770 megnyugtatni, hogy nem sokkal több A tűzcsap itt. 1172 00:54:37,770 --> 00:54:41,100 Tehát JavaScript szintén értelmezett nyelv, ami azt jelenti, hogy nem 1173 00:54:41,100 --> 00:54:42,670 fordítsd le a nullák és egyesek. 1174 00:54:42,670 --> 00:54:43,690 Csak futtatni. 1175 00:54:43,690 --> 00:54:47,680 De mi alapvetően különbözik a JavaScript általában az, hogy 1176 00:54:47,680 --> 00:54:49,815 ne futtatni a webszervert. 1177 00:54:49,815 --> 00:54:52,570 Nem kap fut a készülék önmagában. 1178 00:54:52,570 --> 00:54:57,490 Inkább lesz letölthető a felhasználó HTTP be a böngésző - 1179 00:54:57,490 --> 00:55:00,260 Chrome, Safari, Internet Explorer, Firefox, bármi - 1180 00:55:00,260 --> 00:55:03,860 és ez a böngésző, amely végrehajtja a adott programozási nyelv. 1181 00:55:03,860 --> 00:55:08,000 >> Tehát egyértelmű, PHP eddig volt végre akár a parancssorban 1182 00:55:08,000 --> 00:55:11,290 A fekete és a fehér ablak, a szerveren mint a készülék, egy számítógép 1183 00:55:11,290 --> 00:55:14,490 mint a készülék, vagy már által végrehajtott webszerver 1184 00:55:14,490 --> 00:55:15,860 fut a számítógépen. 1185 00:55:15,860 --> 00:55:20,490 De a téma az, hogy a PHP eddig végrehajtásra került szerver-oldali, így 1186 00:55:20,490 --> 00:55:24,820 a felhasználó és a felhasználó böngészője soha nem látja egy sor PHP kódot. 1187 00:55:24,820 --> 00:55:28,530 >> Sőt, ha valaha is nyit egy böngésző a honlapon, vagy egy másik, és 1188 00:55:28,530 --> 00:55:32,400 valóban látni PHP kódot az ablakot, valaki elcseszte. 1189 00:55:32,400 --> 00:55:34,950 Mert ez nem azt jelentette, hogy küldött a böngészőben. 1190 00:55:34,950 --> 00:55:38,150 Állítólag végre kell hajtani, és megfordult valami, mint a HTML. 1191 00:55:38,150 --> 00:55:40,120 >> De a JavaScript lényegében az ellenkezőjét. 1192 00:55:40,120 --> 00:55:44,350 Ez azt jelentette, hogy futtatni általában belül A felhasználó böngésző ablakot. 1193 00:55:44,350 --> 00:55:46,840 És milyen weboldalak használata JavaScript akkor ezekben a napokban? 1194 00:55:46,840 --> 00:55:49,640 1195 00:55:49,640 --> 00:55:52,180 >> Mint a szó szoros értelmében minden népszerű weboldal. 1196 00:55:52,180 --> 00:55:55,430 Minden honlap, hogy a srácok valószínűleg a naponta használja a JavaScript alkalmazást 1197 00:55:55,430 --> 00:55:57,330 legegyszerűbb és még a legszexisebb funkciók. 1198 00:55:57,330 --> 00:55:59,800 >> Tehát valami, mint a Facebook Chat ha már így. 1199 00:55:59,800 --> 00:56:01,040 Hogyan, hogy valóban működik? 1200 00:56:01,040 --> 00:56:05,090 Hát eddig, az összes cuccot voltunk kész HTML és PHP feltételezi, hogy a 1201 00:56:05,090 --> 00:56:08,750 húzza fel egy URL-t, és nyomja meg az Enter, és látod, néhány HTML tartalmat. 1202 00:56:08,750 --> 00:56:11,970 És rákattint a linkre, amely megváltoztatja a URL, megváltoztatja az oldalt, és újratölti 1203 00:56:11,970 --> 00:56:12,740 néhány új tartalmat. 1204 00:56:12,740 --> 00:56:16,340 Kattintson egy URL, vagy be egy űrlapot, akkor kap felvert egy másik oldalra, és 1205 00:56:16,340 --> 00:56:17,420 látni néhány új tartalmat. 1206 00:56:17,420 --> 00:56:22,710 >> De a valami, mint a Facebook Chat, vagy Gchat, vagy a Google Maps, ritkán 1207 00:56:22,710 --> 00:56:27,350 nem az egész oldalt frissíteni, hogy látsz egy fehér képernyő egy pillanatra és 1208 00:56:27,350 --> 00:56:28,470 majd az új tartalmat. 1209 00:56:28,470 --> 00:56:32,610 Inkább weboldalak ma dinamikusan egyre frissíteni újra 1210 00:56:32,610 --> 00:56:35,570 újra és újra minden fajta a színfalak mögött. 1211 00:56:35,570 --> 00:56:38,560 És kiderül, hogy ha nem megy a valami, mint a Facebook, vagy a Gchat, 1212 00:56:38,560 --> 00:56:43,050 vagy a Gmail, és az oldal frissítések automatikusan újratöltése nélkül 1213 00:56:43,050 --> 00:56:47,630 egész képernyőt, mi történt, hogy a böngésző tett egyfajta titokban 1214 00:56:47,630 --> 00:56:49,410 További HTTP kérések - 1215 00:56:49,410 --> 00:56:52,740 nem a teljes weboldalakat, de csak kis mennyiségű adatot, mint például a 1216 00:56:52,740 --> 00:56:55,740 azonnali üzenetet, hogy a barátja éppen küldött, vagy az állapot frissítés 1217 00:56:55,740 --> 00:56:58,210 valaki csak küldte, vagy a tweet hogy valaki csak küldött. 1218 00:56:58,210 --> 00:57:02,120 Ez csak azzal, hogy kis kérelmek adatokat, majd a JavaScript, ez 1219 00:57:02,120 --> 00:57:06,370 programozási nyelv, a változás milyen Az internetes oldal úgy néz ki, mint anélkül, hogy a 1220 00:57:06,370 --> 00:57:09,860 server segít, anélkül, hogy a szerver generál, hogy a HTML. 1221 00:57:09,860 --> 00:57:13,820 >> Tehát röviden, JavaScript is kell használni, akkor nem csak letölteni az új adatokat 1222 00:57:13,820 --> 00:57:16,750 a szerver újratöltése nélkül az egész oldalon vagy benyújtása formában. 1223 00:57:16,750 --> 00:57:20,060 Azt is fel lehet használni, hogy a változás az úgynevezett DOM - 1224 00:57:20,060 --> 00:57:21,520 Document Object Model - 1225 00:57:21,520 --> 00:57:24,620 ami csak a képzelet utat mondván, a fa a HTML 1226 00:57:24,620 --> 00:57:26,220 hogy láttuk utoljára. 1227 00:57:26,220 --> 00:57:31,640 >> Tehát, hogy megnyugtassa, JavaScript szintaktikailag annyira hasonlít a C is. 1228 00:57:31,640 --> 00:57:32,820 Nincs fő funkciója. 1229 00:57:32,820 --> 00:57:35,430 Csak írjuk be a kódot és ez lesz végre, vagy 1230 00:57:35,430 --> 00:57:36,900 értelmezhető megfelelően. 1231 00:57:36,900 --> 00:57:38,660 Feltételek fog kinézni. 1232 00:57:38,660 --> 00:57:41,230 Nem más, mint a C vagy a PHP, ami azt illeti. 1233 00:57:41,230 --> 00:57:43,890 Logikai kifejezések or-ed együtt fog kinézni. 1234 00:57:43,890 --> 00:57:45,590 Kapcsolatba kerülnek együtt nézni, mint ez. 1235 00:57:45,590 --> 00:57:47,750 >> Kapcsolók fog kinézni. 1236 00:57:47,750 --> 00:57:49,440 A hurkok fog kinézni. 1237 00:57:49,440 --> 00:57:51,060 Bár a hurkok fog kinézni. 1238 00:57:51,060 --> 00:57:53,316 Ne while fog kinézni. 1239 00:57:53,316 --> 00:57:54,780 >> Ez az új. 1240 00:57:54,780 --> 00:57:58,753 Tehát JavaScript még nem a foreach konstrukció önmagában, de ez a konstrukció 1241 00:57:58,753 --> 00:58:03,870 az i változó a tömb, és én ebben a esetben válik index értéke. 1242 00:58:03,870 --> 00:58:06,880 Tehát ez egy kicsit más, mint foreach, bár újabb verziói 1243 00:58:06,880 --> 00:58:10,280 JavaScript jönnek ki minden alkalommal, így még e nyelvi funkciók 1244 00:58:10,280 --> 00:58:10,880 fejlődnek. 1245 00:58:10,880 --> 00:58:16,920 >> És mint félre, JavaScript ezekben a napokban is fel lehet használni a szerveren, mint 1246 00:58:16,920 --> 00:58:19,920 PHP egy olyan kerettel nevű Node.js. 1247 00:58:19,920 --> 00:58:24,670 Az egyik CS50 a TF, Kevin, vezetett a szeminárium Node.js ami elérhető 1248 00:58:24,670 --> 00:58:26,440 cs50.net/seminars. 1249 00:58:26,440 --> 00:58:28,830 Tehát, ha kíváncsi vagy, tudod, hogy Használhatja ezt a szerver oldalon 1250 00:58:28,830 --> 00:58:33,870 is, de ez egy viszonylag új keletű trend, de erőteljes egyet, hogy a. 1251 00:58:33,870 --> 00:58:35,270 >> Ez egy kicsit más. 1252 00:58:35,270 --> 00:58:37,910 Ez egy tömb a JavaScript. 1253 00:58:37,910 --> 00:58:40,115 És mi a sztrájk, mint a különböző szemben a C vagy PHP? 1254 00:58:40,115 --> 00:58:43,890 1255 00:58:43,890 --> 00:58:47,420 Van néhány gyors történet meg tudjuk mondani itt. 1256 00:58:47,420 --> 00:58:49,367 Mi hiányzik szemben PHP? 1257 00:58:49,367 --> 00:58:51,652 >> Közönség: [hallható]. 1258 00:58:51,652 --> 00:58:52,110 >> DAVID MALAN: Igen? 1259 00:58:52,110 --> 00:58:53,322 Sajnálom, ismételje meg? 1260 00:58:53,322 --> 00:58:54,740 >> Közönség: Nem kijelentve a változó típusa. 1261 00:58:54,740 --> 00:58:56,390 >> DAVID MALAN: Mi nem nyilvánítja a változó típusa. 1262 00:58:56,390 --> 00:58:59,630 Tehát tulajdonképpen nagyon, mint a PHP, nem vagyunk meghatározzák a fajta ezt a változót. 1263 00:58:59,630 --> 00:59:02,670 Inkább mi több, általánosságban mondván var változó. 1264 00:59:02,670 --> 00:59:06,690 Nincs PHP kellemetlen a dollár jelet, ami ugyan unalmas 1265 00:59:06,690 --> 00:59:09,160 típusú, nem teszi világossá, hogy valami változó. 1266 00:59:09,160 --> 00:59:11,830 Míg itt vagyunk, valami vissza C megközelítése mellett csak hívja a 1267 00:59:11,830 --> 00:59:14,500 változó a neve akarunk hogy ez, mint a számok. 1268 00:59:14,500 --> 00:59:17,170 És azt is, mint a PHP, mi szögletes zárójelben a 1269 00:59:17,170 --> 00:59:19,170 értékek benne, hogy a tömb. 1270 00:59:19,170 --> 00:59:22,490 >> Így változók JavaScript is így néz ki. 1271 00:59:22,490 --> 00:59:26,900 Vegyük észre, itt egy string nevű s, de hasonlóképpen tettünk nincs megadva 1272 00:59:26,900 --> 00:59:28,750 hogy ez a szöveg. 1273 00:59:28,750 --> 00:59:33,160 Itt azonban az a jellemzője, hogy nem léteznek pontosan ugyanúgy a PHP, 1274 00:59:33,160 --> 00:59:34,460 de egy kicsit hasonló. 1275 00:59:34,460 --> 00:59:36,530 Ez egy objektum JavaScript. 1276 00:59:36,530 --> 00:59:42,110 És tárgyak fajta a svájci hadsereg Kés egy adat struktúra, amit 1277 00:59:42,110 --> 00:59:43,900 használja őket tetszőleges számú dolog. 1278 00:59:43,900 --> 00:59:46,860 >> Itt például, mi kijelentve változó nevű árajánlatot. 1279 00:59:46,860 --> 00:59:49,110 Az a fajta, amely változó egy objektum. 1280 00:59:49,110 --> 00:59:53,550 Azt hiszem, hogy ez egy C struct amely a kulcsokat és értékeket. 1281 00:59:53,550 --> 00:59:55,250 Symbol kulcsfontosságú. 1282 00:59:55,250 --> 00:59:57,350 FB egy olyan érték, látszólag állomány szimbólum. 1283 00:59:57,350 --> 00:59:57,930 Vessző. 1284 00:59:57,930 --> 01:00:02,180 Az ár egy gombot, és értéke látszólag egy lebegőpontos, vagy a 1285 01:00:02,180 --> 01:00:06,510 szám általában a JavaScript, a 49,26 $. 1286 01:00:06,510 --> 01:00:09,030 >> Tehát a PHP nem rendelkezik - 1287 01:00:09,030 --> 01:00:12,980 még nem láttam a PHP objektum elég mint ez, de nem látni egy analóg, 1288 01:00:12,980 --> 01:00:14,093 ami volt? 1289 01:00:14,093 --> 01:00:14,980 >> Közönség: [hallható]. 1290 01:00:14,980 --> 01:00:16,110 >> DAVID MALAN: asszociatív tömbök. 1291 01:00:16,110 --> 01:00:19,990 Tehát míg a PHP asszociatív tömbök melynek szintaxisa mindig kicsit olyan 1292 01:00:19,990 --> 01:00:20,370 más - 1293 01:00:20,370 --> 01:00:21,780 láttuk, a szögletes zárójelek. 1294 01:00:21,780 --> 01:00:23,860 Láttuk a furcsa nyilak szimbólumok. 1295 01:00:23,860 --> 01:00:27,330 JavaScript tárgyak, de ez többnyire szemantikai különbséget, és a 1296 01:00:27,330 --> 01:00:29,260 különböző szinonimája most. 1297 01:00:29,260 --> 01:00:35,060 Azonban, mint egy félre, PHP is tárgyak oly módon, hogy a Java és egyéb 1298 01:00:35,060 --> 01:00:37,810 nyelvben tárgyak objektum-orientált programozás. 1299 01:00:37,810 --> 01:00:40,440 De majd használni ezeket csak az adattípusok most. 1300 01:00:40,440 --> 01:00:42,170 Objektumok és asszociatív tömbök. 1301 01:00:42,170 --> 01:00:44,140 >> Ez lehet, hogy ez egy kicsit világos. 1302 01:00:44,140 --> 01:00:45,890 Itt van, hogy miért egy tárgy hasznos. 1303 01:00:45,890 --> 01:00:48,760 Ha azt szeretné, hogy állapítsa meg a diák, mint Zamyla, mi is valójában 1304 01:00:48,760 --> 01:00:52,630 felölelik úgyszólván benne, hogy a objektumot zárójelek mint 1305 01:00:52,630 --> 01:00:55,060 mielőtt egy egész kulcscsomót és értékek itt. 1306 01:00:55,060 --> 01:00:59,150 Van egy azonosítót, egy házat, és egy nevet Zamyla, majd egy pontosvessző, mint 1307 01:00:59,150 --> 01:01:00,690 szokásos a végén. 1308 01:01:00,690 --> 01:01:04,840 >> Itt lent is, ez kissé különböző, de nagyon erős 1309 01:01:04,840 --> 01:01:05,690 ezekben a napokban. 1310 01:01:05,690 --> 01:01:08,780 Itt van egy sor, és tudom, hogy azért, mert van egy szögletes zárójel fel 1311 01:01:08,780 --> 01:01:11,090 felső és egy szögletes zárójel az alján. 1312 01:01:11,090 --> 01:01:16,050 És ez egy sor, amit az adatok írja látszólag JavaScript? 1313 01:01:16,050 --> 01:01:21,260 Ez egy tömb úgy néz ki, mint a három tárgyat. 1314 01:01:21,260 --> 01:01:24,580 És tudom, hogy egy tárgy csak mert a kapcsos zárójelek. 1315 01:01:24,580 --> 01:01:28,760 És észre, ott nyitott zárójel, néhány dolgot, közel zárójel, vessző, 1316 01:01:28,760 --> 01:01:31,180 majd egy kicsit, vessző, majd egy kicsit. 1317 01:01:31,180 --> 01:01:33,800 Szóval ez a három érv elválasztott két vessző. 1318 01:01:33,800 --> 01:01:36,810 >> Tehát ez egy sor három tárgyat. 1319 01:01:36,810 --> 01:01:39,940 És minden egyes ilyen tárgyak úgy tűnik, hogy egy diák vagy a személyzet tagja valamilyen 1320 01:01:39,940 --> 01:01:42,370 sort, mindegyik egy azonosítót, ház, és a nevét. 1321 01:01:42,370 --> 01:01:45,060 De Hívtam ezt a valamit úgynevezett JSON - 1322 01:01:45,060 --> 01:01:47,450 JavaScript Object Notation. 1323 01:01:47,450 --> 01:01:52,060 És ez egy olyan adatformátum, amely ténylegesen olyan nagyon népszerű, és 1324 01:01:52,060 --> 01:01:55,100 divatos manapság, hogy ha írsz egy alkalmazás, amely a Facebook 1325 01:01:55,100 --> 01:01:59,150 API, a Twitter API, tényleg majdnem bármely API ott ezekben a napokban, 1326 01:01:59,150 --> 01:02:02,820 CS50 köztük saját, a adatok vissza nem 1327 01:02:02,820 --> 01:02:04,720 old school CSV formátumban. 1328 01:02:04,720 --> 01:02:06,780 >> Mivel emlékeztetnek arra, hogy CSV szuper egyszerű. 1329 01:02:06,780 --> 01:02:10,230 Ez csak oszlopok egymástól vesszővel. 1330 01:02:10,230 --> 01:02:13,190 JSON adatokat ad további metaadatokat. 1331 01:02:13,190 --> 01:02:17,800 Ez hozzárendel egy kulcs minden értéket, nem kell, hogy csak feltételezni, hogy 1332 01:02:17,800 --> 01:02:22,460 A nulladik oszlop egy értéket, oszlop Egy másik, oszlop két másik. 1333 01:02:22,460 --> 01:02:26,790 Mindent egy JSON objektum itt van valami Az ön-leíró, mert minden 1334 01:02:26,790 --> 01:02:30,940 az egyik neve ebben a fájlban van szó neve előtt, hogy ez egy 1335 01:02:30,940 --> 01:02:32,510 idézett szöveg. 1336 01:02:32,510 --> 01:02:34,950 >> Szóval vessünk egy pillantást pár jó példa. 1337 01:02:34,950 --> 01:02:36,800 Hadd menjek be a készüléket. 1338 01:02:36,800 --> 01:02:41,000 És hadd menjen be a vhost könyvtár a nyilvánosság. 1339 01:02:41,000 --> 01:02:45,590 És hadd menjen be a JavaScript könyvtár. 1340 01:02:45,590 --> 01:02:49,610 És menjünk előre, és nyissa fel dom-0.html, ahol a DOM csak azt jelenti, 1341 01:02:49,610 --> 01:02:51,010 Document Object Model. 1342 01:02:51,010 --> 01:02:53,490 Ez a fa anyag, amely Utaltam korábban. 1343 01:02:53,490 --> 01:02:54,950 >> És hadd az alábbiakat javasoljuk. 1344 01:02:54,950 --> 01:02:57,720 Itt egy weboldal, melynek test nagyon egyszerű. 1345 01:02:57,720 --> 01:03:00,170 Tehát itt az alján, észre, van egy űrlap. 1346 01:03:00,170 --> 01:03:01,500 Már láttam ezeket korábban. 1347 01:03:01,500 --> 01:03:07,600 Két bemenettel, melyek közül az egyik van egy ID neve, amelyek közül az egyik egy olyan típusú 1348 01:03:07,600 --> 01:03:09,830 be, és az első ember típusa szöveget. 1349 01:03:09,830 --> 01:03:11,900 Szóval ez tényleg úgy hangzik, nagyon egyszerű. 1350 01:03:11,900 --> 01:03:13,090 >> Menjünk itt. 1351 01:03:13,090 --> 01:03:15,390 Térjünk vissza erre az oldalra itt. 1352 01:03:15,390 --> 01:03:21,030 Menjünk be localhost, és bemegy JavaScript könyvtár, és menj 1353 01:03:21,030 --> 01:03:24,640 dom-0, és itt van ebben a formában. 1354 01:03:24,640 --> 01:03:26,550 Szóval ez látszólag Minden ezen az oldalon nem. 1355 01:03:26,550 --> 01:03:28,740 Ez egy név mező a Küldés gombot. 1356 01:03:28,740 --> 01:03:30,340 De én nem fogom használni a PHP itt. 1357 01:03:30,340 --> 01:03:34,310 Fogok tenni mindent kliens oldalon hogy úgy mondjam a JavaScript alábbiak szerint. 1358 01:03:34,310 --> 01:03:39,100 >> Figyeljük meg, hogy én valóban kapta a nevét területén a bemenet egy egyedi 1359 01:03:39,100 --> 01:03:42,350 azonosító, amely ténylegesen mentsen meg egy bizonyos időt egy pillanatra. 1360 01:03:42,350 --> 01:03:45,480 És észre, amit be egy másik tag a fejét a weboldalamon, a 1361 01:03:45,480 --> 01:03:46,565  tag. 1362 01:03:46,565 --> 01:03:50,120 >> Tehát ebben az értelemben, hogy a JavaScript a kliens-oldali programozási nyelv. 1363 01:03:50,120 --> 01:03:55,020 Ebben az esetben, mint a CSS, tettem egyenesen belsejében a HTML. 1364 01:03:55,020 --> 01:03:58,810 De észre én nyilvánította a funkciót úgy néz ki, egy kicsit, mint a PHP 1365 01:03:58,810 --> 01:04:01,530 szintaktikailag, de ez valójában JavaScript, mert megint, ez 1366 01:04:01,530 --> 01:04:03,920 kliens oldali a böngészőben. 1367 01:04:03,920 --> 01:04:07,590 És akkor gondolom, hogy ez mit fog igen, még akkor is, ha néhány, a szintaxis 1368 01:04:07,590 --> 01:04:09,338 itt az új. 1369 01:04:09,338 --> 01:04:11,760 >> Közönség: Köszönj bárki. 1370 01:04:11,760 --> 01:04:14,020 >> DAVID MALAN: Meg fog köszönni annak, aki meglátogatja ezt az oldalt. 1371 01:04:14,020 --> 01:04:15,120 Igen, hogyan? 1372 01:04:15,120 --> 01:04:18,070 >> Tehát észre, kiderül a JavaScript van egy alert () függvényt. 1373 01:04:18,070 --> 01:04:22,840 Ez egy nagyon egyfajta szomorú funkció tényleg csak inkább bosszantani felhasználók számára. 1374 01:04:22,840 --> 01:04:25,440 Ez nem az egyik akkor tényleg használni általában, de ez egy gyors és piszkos 1375 01:04:25,440 --> 01:04:27,710 módon egyfajta nyomtatás valamit a grafikus felhasználói 1376 01:04:27,710 --> 01:04:29,180 felület, mint egy böngésző. 1377 01:04:29,180 --> 01:04:31,400 Figyeljük meg, hogy itt van egy karakterláncot aposztrófot. 1378 01:04:31,400 --> 01:04:36,010 Kiderül, hogy ellentétben a C, JavaScript lehet ténylegesen használni egy 1379 01:04:36,010 --> 01:04:38,730 idézi, és őszintén szólva ez csak egyfajta A stilisztikai egyezmény között 1380 01:04:38,730 --> 01:04:41,180 JavaScript programozó egyszerű idézőjeleket. 1381 01:04:41,180 --> 01:04:43,750 PHP, valójában valamivel mást jelent. 1382 01:04:43,750 --> 01:04:45,810 De most, csak tudom, hogy ez az egyetlen oka. 1383 01:04:45,810 --> 01:04:49,270 Az egyezmény a JavaScript gyakran a egyszerű idézőjeleket, de használjuk 1384 01:04:49,270 --> 01:04:50,950 idézőjelek mindkét helyen is. 1385 01:04:50,950 --> 01:04:52,610 >> Szóval ez érdekes. 1386 01:04:52,610 --> 01:04:56,430 Emlékezzünk vissza, utoljára, hogy mi volt, hogy kép a képernyőn, hogy felhívta a fa 1387 01:04:56,430 --> 01:04:59,720 ahol már a HTML csomópont, és a fej csomópont, és a test csomópont, 1388 01:04:59,720 --> 01:05:00,800 majd néhány szöveget. 1389 01:05:00,800 --> 01:05:04,700 De volt egy speciális csomópont a legtetején, hogy felhívtam a dokumentumot. 1390 01:05:04,700 --> 01:05:08,260 Nos, kiderült a JavaScript, minden alkalommal, amikor írni egy programot JavaScript 1391 01:05:08,260 --> 01:05:11,040 a böngészőben, van hozzáférése egy speciális globális változó. 1392 01:05:11,040 --> 01:05:14,130 Hasonló szellemben a PHP szuperglobális, ezt hívják 1393 01:05:14,130 --> 01:05:16,050 csupa kisbetűvel dokumentumot. 1394 01:05:16,050 --> 01:05:21,480 >> Olyan, mint egy struct, de ez a struktúra feladatokat is ellát belsejébe. 1395 01:05:21,480 --> 01:05:23,790 Tehát egy C struct csak meg az adatok általában. 1396 01:05:23,790 --> 01:05:29,060 De egy JavaScript objektumot, mert ez Technikailag a feladatokat is ellát, 1397 01:05:29,060 --> 01:05:31,830 más néven módszerekkel, belsejébe. 1398 01:05:31,830 --> 01:05:35,750 És akkor hívja a függvényt belsejében ezt az objektumot a szó szoros értelmében végzi a 1399 01:05:35,750 --> 01:05:39,610 név, pont, majd a nevét a funkciót, vagy újra módszer. 1400 01:05:39,610 --> 01:05:41,160 Ez csak egy szinonimája, de tényleg. 1401 01:05:41,160 --> 01:05:42,450 >> És mit jelent ez a funkció nem? 1402 01:05:42,450 --> 01:05:43,840 Ön milyen kitalálni a neve. 1403 01:05:43,840 --> 01:05:45,590 Get elemet azonosító. 1404 01:05:45,590 --> 01:05:50,040 Tehát ez fog keresni a weblapon, keresni azt a fát, keres 1405 01:05:50,040 --> 01:05:55,210 bármilyen csomópont, AKA elem, egy egyedi azonosítója idézet idézet vége nevét. 1406 01:05:55,210 --> 01:05:56,560 És akkor mit fogok csinálni? 1407 01:05:56,560 --> 01:06:00,350 Megyek, hogy az értéke belsejében a csomópont a fában, és meg fogom 1408 01:06:00,350 --> 01:06:02,580 valahogy köszönni ezt a nevet. 1409 01:06:02,580 --> 01:06:05,360 >> Tehát hogy a találgatás, bár most már nem látott még, mit a plusz 1410 01:06:05,360 --> 01:06:07,396 jelek itt és itt talán? 1411 01:06:07,396 --> 01:06:08,230 >> Közönség: Concatenate. 1412 01:06:08,230 --> 01:06:09,220 >> DAVID MALAN: Concatenate. 1413 01:06:09,220 --> 01:06:11,290 Igen, és ezek csak fajta tervezési döntések 1414 01:06:11,290 --> 01:06:12,280 nép évvel ezelőtt. 1415 01:06:12,280 --> 01:06:15,190 A PHP-ban összefűzi dolgok pöttyökkel. 1416 01:06:15,190 --> 01:06:18,800 A C, akkor ugrik a több karika és A funkciók, mint a strcopy () vagy 1417 01:06:18,800 --> 01:06:20,600 strcat (), vagy más hasonló funkciókat. 1418 01:06:20,600 --> 01:06:22,060 De JavaScript, használja pluses. 1419 01:06:22,060 --> 01:06:24,770 Tehát ez csak összefűző három húrok - 1420 01:06:24,770 --> 01:06:27,850 hello, egy nevet, majd egy felkiáltójel. 1421 01:06:27,850 --> 01:06:30,390 >> Szóval, mikor és miért van ez a funkció neve is? 1422 01:06:30,390 --> 01:06:33,150 Nos, akkor gondolom a HTML az alján. 1423 01:06:33,150 --> 01:06:35,810 Miért köszönt () nevű vagy mikor? 1424 01:06:35,810 --> 01:06:39,730 1425 01:06:39,730 --> 01:06:44,030 >> Úgy látszik, amennyire én tudom, a be, amikor az űrlapot elküldték, 1426 01:06:44,030 --> 01:06:47,200 Azt fogom tenni, amit a belül ilyen idézetek. 1427 01:06:47,200 --> 01:06:50,900 És különösen, fogom hívni köszönt (), majd vissza hamis. 1428 01:06:50,900 --> 01:06:53,090 >> Nos, lássuk, mi a net hatás itt először. 1429 01:06:53,090 --> 01:06:58,290 Hadd megy előre, és írja be , mondjuk, Loren, elküldése. 1430 01:06:58,290 --> 01:06:59,440 Helló Loren. 1431 01:06:59,440 --> 01:07:02,990 Lássuk, lehet, hogy ez csak szerencsés végrehajtását. 1432 01:07:02,990 --> 01:07:03,200 Nem. 1433 01:07:03,200 --> 01:07:05,990 Szóval ez írja ki, amit név, amit ténylegesen oda. 1434 01:07:05,990 --> 01:07:07,970 >> De vegyük észre, mi nem változik. 1435 01:07:07,970 --> 01:07:10,360 Az URL-cím mindig dom-0.html. 1436 01:07:10,360 --> 01:07:11,820 Nincs register.php. 1437 01:07:11,820 --> 01:07:13,110 Nincs másik fájlt. 1438 01:07:13,110 --> 01:07:14,930 Nincs művelet attribútum. 1439 01:07:14,930 --> 01:07:19,720 Szóval mi ez a return false feltehetően csinálsz? 1440 01:07:19,720 --> 01:07:23,660 Miért hívom üdvözlöm (), majd vissza hamis talán? 1441 01:07:23,660 --> 01:07:26,420 Amit általában történik, ha rákattint Küldje el olyan formában, hogy még van 1442 01:07:26,420 --> 01:07:27,854 látott az elmúlt héten? 1443 01:07:27,854 --> 01:07:29,900 >> Közönség: [hangtalan]. 1444 01:07:29,900 --> 01:07:30,860 >> DAVID MALAN: Magától valahol, nem igaz? 1445 01:07:30,860 --> 01:07:32,720 Magától néhány cél URL. 1446 01:07:32,720 --> 01:07:34,120 De nem akarom, hogy ez megtörténjen itt. 1447 01:07:34,120 --> 01:07:37,620 Azt akarom, hogy a weboldal, hogy teljesen dinamikus, mint a Gmail, ahol ha egyszer már 1448 01:07:37,620 --> 01:07:38,650 ott, maradj ott. 1449 01:07:38,650 --> 01:07:42,900 Az URL nem változik oly módon, hogy jelzi, hogy a teljes oldal újratöltése. 1450 01:07:42,900 --> 01:07:46,680 Inkább csak azt, hogy valamit változtatni mint a nyomtatás valamit 1451 01:07:46,680 --> 01:07:48,320 itt a képernyőn. 1452 01:07:48,320 --> 01:07:49,630 >> Hát hadd tisztítsa a egy kicsit. 1453 01:07:49,630 --> 01:07:55,370 Hadd nyissam fel nem dom-0, de hadd nyit dom-2. 1454 01:07:55,370 --> 01:07:57,350 Csak így már láttam néhány szintaxis itt. 1455 01:07:57,350 --> 01:08:02,080 >> Kiderül, hogy amit most nem használ nyers JavaScript. 1456 01:08:02,080 --> 01:08:04,420 Tehát ez valóban a nyelv JavaScript. 1457 01:08:04,420 --> 01:08:07,340 Néhányan talán tudják a könyvtár nevű jQuery. 1458 01:08:07,340 --> 01:08:09,980 >> Tehát jQuery nem ugyanaz dolog, mint a JavaScript. 1459 01:08:09,980 --> 01:08:14,110 Ez csak egy könyvtár, egy nagyon okos férfi írta, és népszerűsítette az ilyen 1460 01:08:14,110 --> 01:08:18,100 , hogy szinte mindenki a világ most használ, jQuery használatakor JavaScript. 1461 01:08:18,100 --> 01:08:20,890 És első pillantásra, őszintén szólva, ez úgy néz ki, egy kicsit rejtélyes. 1462 01:08:20,890 --> 01:08:24,990 De rájössz, különösen akkor, ha megy ott a végső projekt web 1463 01:08:24,990 --> 01:08:29,029 fejlesztés, akkor rájössz, hogy ez tisztítja a dolgokat, és takarít meg elég 1464 01:08:29,029 --> 01:08:30,229 néhány sornyi kódot. 1465 01:08:30,229 --> 01:08:33,189 >> Úgyhogy csak pillantást, hogy milyen ebben a formában működik. 1466 01:08:33,189 --> 01:08:35,664 Figyeljük meg, mi nem tudom eltávolítani látszólag az én HTML-t? 1467 01:08:35,664 --> 01:08:38,240 1468 01:08:38,240 --> 01:08:40,630 Nincs a submit handler hogy úgy mondjam. 1469 01:08:40,630 --> 01:08:41,470 Nincs attribútum. 1470 01:08:41,470 --> 01:08:43,359 Mert tudod, milyen Én nem nagyon szeretem? 1471 01:08:43,359 --> 01:08:45,640 Úgy éreztem, hogy hullottak a régi szokások is. 1472 01:08:45,640 --> 01:08:49,340 Csakúgy, mint azt kezdte érezni hanyag összekeveredni a CSS-t és 1473 01:08:49,340 --> 01:08:52,149 HTML, mert te olyan dobás különböző nyelven jelent meg a 1474 01:08:52,149 --> 01:08:56,180 helyen, hasonlóan volt ez kezd érezni mint egy rossz út, hogy menjen le, ahol 1475 01:08:56,180 --> 01:09:01,069 Teszlek JavaScript kódot belül az én HTML helyett faktoring ki. 1476 01:09:01,069 --> 01:09:02,279 >> Szóval ez a tanulság. 1477 01:09:02,279 --> 01:09:05,080 A dom-2.html vagyok faktoring ki. 1478 01:09:05,080 --> 01:09:07,399 És én a dolgokat kissé másképp. 1479 01:09:07,399 --> 01:09:09,630 Most, megyek hullám kezem , hogy mi ez a valóban 1480 01:09:09,630 --> 01:09:10,590 a motorháztető alatt. 1481 01:09:10,590 --> 01:09:14,210 De csak most fel, hogy az első sort ebben a könyvtárban 1482 01:09:14,210 --> 01:09:18,170 úgynevezett jQuery éppen azt jelenti, ha a dokumentum elkészült, tegye a következőket. 1483 01:09:18,170 --> 01:09:20,080 >> Mivel a weboldalak is eltarthat egy ideig betölteni. 1484 01:09:20,080 --> 01:09:23,029 Lehet, hogy a lassú internet kapcsolat, és lehet, hogy forog 1485 01:09:23,029 --> 01:09:25,290 és fonás, és végül van töltve. 1486 01:09:25,290 --> 01:09:29,060 Ez a vonal a kód csak azt mondja várni az egész oldal készen áll, a dokumentum 1487 01:09:29,060 --> 01:09:31,189 kész, végrehajtása előtt ezt a kódot. 1488 01:09:31,189 --> 01:09:34,390 >> És most észre, ez valószínűleg a leghasznosabb első 1489 01:09:34,390 --> 01:09:36,189 elvenni jQuery. 1490 01:09:36,189 --> 01:09:42,140 Ez a vonal itt nagyon hasonló szellemben hogy ez sokkal hosszabb sort itt. 1491 01:09:42,140 --> 01:09:46,920 Mivel nyers JavaScript kódot, ott létezik egy dokumentum teljes objektum 1492 01:09:46,920 --> 01:09:50,460 egy függvényt nevű getElementById () az emberek, aki azt írta, 1493 01:09:50,460 --> 01:09:55,720 jQuery egyszerűsített hogy csak mondani, dollár jelet, majd a belső 1494 01:09:55,720 --> 01:10:00,250 zárójelben fel két idézet, majd hogy egy hash szimbólumot, majd a 1495 01:10:00,250 --> 01:10:02,250 egyedi azonosítója, aki megragad. 1496 01:10:02,250 --> 01:10:06,170 Tehát ez egyenértékű document.getElementById. 1497 01:10:06,170 --> 01:10:11,090 >> Közben. Submit csak azt jelenti, a benyújtása bármilyen formában te 1498 01:10:11,090 --> 01:10:14,240 utalva a bal oldalon, menj előre, és végre ezt. 1499 01:10:14,240 --> 01:10:16,600 De ez most már a kíváncsiság is. 1500 01:10:16,600 --> 01:10:19,560 Mi a furcsa, hogy mi Már kiemelt itt? 1501 01:10:19,560 --> 01:10:23,840 1502 01:10:23,840 --> 01:10:28,594 Nem csak ez a fajta szintaktikai új, van még valami hiányzik. 1503 01:10:28,594 --> 01:10:29,558 >> Közönség: Ez csak hívott függvény? 1504 01:10:29,558 --> 01:10:31,970 Ez nem hívják figyelmeztetés? 1505 01:10:31,970 --> 01:10:32,440 >> DAVID MALAN: Igen. 1506 01:10:32,440 --> 01:10:35,450 Nos, alert () nem működik itt, hogy tisztességes. 1507 01:10:35,450 --> 01:10:39,520 De nincs említés a név, mint tudod, foo vagy 1508 01:10:39,520 --> 01:10:40,980 valamit itt. 1509 01:10:40,980 --> 01:10:43,830 És valóban, ez az egyik jellemzője A JavaScript ez elég 1510 01:10:43,830 --> 01:10:45,370 erős, de teljesen új. 1511 01:10:45,370 --> 01:10:47,460 És a PHP valójában ezt is. 1512 01:10:47,460 --> 01:10:49,500 >> Hadd menjek előre, és nem valami gyorsan. 1513 01:10:49,500 --> 01:10:52,030 Hadd menjek előre, és hogy ezt itt. 1514 01:10:52,030 --> 01:10:52,600 Hadd csináljam én. 1515 01:10:52,600 --> 01:10:53,690 Funkció. 1516 01:10:53,690 --> 01:10:56,455 Nevezzük ezt handler (). 1517 01:10:56,455 --> 01:10:58,290 A függvény úgy mondjam. 1518 01:10:58,290 --> 01:11:00,110 Valami, ami kezeli, működését. 1519 01:11:00,110 --> 01:11:02,700 Hadd mossam le a behúzás. 1520 01:11:02,700 --> 01:11:04,380 És hogy ezt itt. 1521 01:11:04,380 --> 01:11:06,090 És tedd, hogy itt van. 1522 01:11:06,090 --> 01:11:06,470 Aha. 1523 01:11:06,470 --> 01:11:07,060 OK. 1524 01:11:07,060 --> 01:11:10,300 >> Tehát most van egy függvényt nevű handler (), hogy én nem igazán tudom 1525 01:11:10,300 --> 01:11:10,890 mit csinál még. 1526 01:11:10,890 --> 01:11:12,710 Csak még a cucc. 1527 01:11:12,710 --> 01:11:13,900 Hoppá. 1528 01:11:13,900 --> 01:11:15,820 Tuk túl sok. 1529 01:11:15,820 --> 01:11:18,490 Csináljuk ezt. 1530 01:11:18,490 --> 01:11:18,990 Rendben van. 1531 01:11:18,990 --> 01:11:20,240 Bocsánat. 1532 01:11:20,240 --> 01:11:23,140 1533 01:11:23,140 --> 01:11:23,690 Rendben van. 1534 01:11:23,690 --> 01:11:24,720 Hadd tegyem ezt. 1535 01:11:24,720 --> 01:11:25,020 OK. 1536 01:11:25,020 --> 01:11:27,040 Úgy néz ki, szép és egyenes elő most. 1537 01:11:27,040 --> 01:11:29,090 Hadd tegyem ezt. 1538 01:11:29,090 --> 01:11:29,860 Tedd ezt. 1539 01:11:29,860 --> 01:11:30,950 És az OK gombra. 1540 01:11:30,950 --> 01:11:33,080 Tehát most, tegyük ezt itt. 1541 01:11:33,080 --> 01:11:35,840 1542 01:11:35,840 --> 01:11:37,270 Nincs több programozási menet közben. 1543 01:11:37,270 --> 01:11:37,900 OK. 1544 01:11:37,900 --> 01:11:40,000 >> Tehát most, menjünk vissza a , ahol a történet elkezdődött. 1545 01:11:40,000 --> 01:11:43,530 Korábban azt mondtam, hogy ez a sor itt azt jelenti, ha a dokumentum elkészült, menjen 1546 01:11:43,530 --> 01:11:44,380 előre, és erre a célra. 1547 01:11:44,380 --> 01:11:45,660 Mit akarok? 1548 01:11:45,660 --> 01:11:49,070 Hát konkrétan akarok menni előre, és tegye a következőket. 1549 01:11:49,070 --> 01:11:53,700 Végre ezt a kódsort, majd mit akarok, hogy nem is hívja ezt a 1550 01:11:53,700 --> 01:11:56,370 működik, ha az űrlap elküldése. 1551 01:11:56,370 --> 01:11:57,730 >> Most ez az, ami érdekes. 1552 01:11:57,730 --> 01:11:59,170 Ez nem maga a funkciót. 1553 01:11:59,170 --> 01:12:02,540 Figyeljük meg, én nem hozta zárójel Itt a szokásos módon. 1554 01:12:02,540 --> 01:12:06,800 Én szó szerint halad egy függvény neve handler () másik funkció 1555 01:12:06,800 --> 01:12:10,800 nevezett be () az argumentumot bár ez olyan, mint egy változó. 1556 01:12:10,800 --> 01:12:14,290 És ez az egyik jellemzője a JavaScript, a függvények önmagukban 1557 01:12:14,290 --> 01:12:15,710 tényleg csak tárgyak. 1558 01:12:15,710 --> 01:12:18,350 Sőt, ők tényleg csak változók valamilyen. 1559 01:12:18,350 --> 01:12:21,340 És ha a neve a függvény handler (), nincs ok, amiért nem 1560 01:12:21,340 --> 01:12:23,390 adja át az argumentumként itt. 1561 01:12:23,390 --> 01:12:27,530 És ez azt jelenti, ha az űrlap Az ID a demo 1562 01:12:27,530 --> 01:12:29,320 nyújtott be, ezt a funkciót. 1563 01:12:29,320 --> 01:12:32,770 >> De most, ha kibont mindezt, akkor miért azt talán nem 1564 01:12:32,770 --> 01:12:34,850 ez egy perce? 1565 01:12:34,850 --> 01:12:36,840 Nos, ez egy névtelen függvény. 1566 01:12:36,840 --> 01:12:41,080 Mert őszintén, rájöttem, miért vagyok a fáradságot, hogy vesztegeti az idejét nyilvánító 1567 01:12:41,080 --> 01:12:45,540 nevű függvényt handler () csak a hívás ez az egyik, és csak egy helyen? 1568 01:12:45,540 --> 01:12:48,640 Ha nem kell a nevét, és én nem kell hívni, hogy több helyen, 1569 01:12:48,640 --> 01:12:51,200 nézzük csak végrehajtja a funkciót ott, ahol szükségem van rá. 1570 01:12:51,200 --> 01:12:55,190 És így JavaScript és a PHP támogatást milyen az úgynevezett anonim funkciók 1571 01:12:55,190 --> 01:12:57,900 engedje meg, hogy pontosan erre van. 1572 01:12:57,900 --> 01:12:59,570 >> De mi csak vakarja a felületet. 1573 01:12:59,570 --> 01:13:02,430 Nézzük kötekedik csak egy pár végső példák itt. 1574 01:13:02,430 --> 01:13:04,600 >> Ha bemegy quote.php. 1575 01:13:04,600 --> 01:13:07,160 1576 01:13:07,160 --> 01:13:11,870 Vegyük észre, hogy ez valójában egy PHP funkció, a PHP program, hogy én írtam 1577 01:13:11,870 --> 01:13:15,270 , hogy arra számít, HTTP nevű paramétert szimbólum, és én is át a 1578 01:13:15,270 --> 01:13:16,730 érték, mint a FB. 1579 01:13:16,730 --> 01:13:20,010 És ha tényleg nézd meg a forrást kód, ez lekérdezése egy ingyenes weboldalon 1580 01:13:20,010 --> 01:13:23,680 nevű Yahoo Finance, mint p-set hét, és ez vissza nekem 1581 01:13:23,680 --> 01:13:26,580 valami látszólag a formátum ismert, JSON - 1582 01:13:26,580 --> 01:13:28,010 JavaScript Object Notation. 1583 01:13:28,010 --> 01:13:28,810 Ez csak egy tárgy. 1584 01:13:28,810 --> 01:13:32,500 Figyeljük meg a kapcsos zárójelek, idézőjelek, a vastagbél, és a vessző. 1585 01:13:32,500 --> 01:13:34,720 >> Most közben, ez elég jó. 1586 01:13:34,720 --> 01:13:38,520 Mert valószínűleg használni egy programozási nyelv generálására URL 1587 01:13:38,520 --> 01:13:40,370 hogy néz ki dinamikusan, ugye? 1588 01:13:40,370 --> 01:13:43,340 Tudok változtatni ezt a Google és kap vissza a Google 1589 01:13:43,340 --> 01:13:47,930 részvényárfolyam a $ 1,017.55. 1590 01:13:47,930 --> 01:13:49,640 Tehát lássuk, ha nem tudjuk használni ezt most. 1591 01:13:49,640 --> 01:13:56,590 >> Hadd menjen ajax-0 itt, ami úgy néz ki, mint a következő. 1592 01:13:56,590 --> 01:13:59,750 Ez csak egy honlap, amely egy űrlapot egy gombot. 1593 01:13:59,750 --> 01:14:05,860 Hadd itt megy előre, és írja be a YHOO a Yahoo részvényei szimbólum, kattintson a Get 1594 01:14:05,860 --> 01:14:10,530 Idézet, és most észre kaptam figyelmeztetést a 32,86. 1595 01:14:10,530 --> 01:14:14,050 >> Hadd valóban megy egy szakértő változata ezen az oldalon, verzió kettő, 1596 01:14:14,050 --> 01:14:17,530 írja be mondjuk a Microsoft, MSFT. 1597 01:14:17,530 --> 01:14:18,410 Get Idézet. 1598 01:14:18,410 --> 01:14:19,850 És most veszi észre, nem állnak. 1599 01:14:19,850 --> 01:14:22,770 Figyeld meg, amikor azt mondja ár meg kell határozni? 1600 01:14:22,770 --> 01:14:27,060 Ott van a legegyszerűbb példa, hogy utal, amit Gchat, és a Facebook 1601 01:14:27,060 --> 01:14:30,070 Chat, és a Gmail és más hasonló weboldalak csinálnak a valóban 1602 01:14:30,070 --> 01:14:31,290 változik a weboldalt. 1603 01:14:31,290 --> 01:14:31,800 >> Figyeljük meg ezt. 1604 01:14:31,800 --> 01:14:33,120 Hadd töltse újra a lapot. 1605 01:14:33,120 --> 01:14:35,080 Hadd nyissa meg a Chrome felügyelő. 1606 01:14:35,080 --> 01:14:36,890 Hadd menjek, hogy az elemek fület itt. 1607 01:14:36,890 --> 01:14:42,310 Most már észre, ha nagyítani ide, és nyissa ki, észre, hogy ez az én 1608 01:14:42,310 --> 01:14:44,500 HTML DOM - a Document Object Model. 1609 01:14:44,500 --> 01:14:45,920 Ez az én HTML. 1610 01:14:45,920 --> 01:14:48,750 De most észre, annak ellenére, hogy a helyzet hogy egy kicsit nehéz, hogy azt a két 1611 01:14:48,750 --> 01:14:52,080 helyen egyszerre, ha azt írja az FB itt, nézd meg az alján 1612 01:14:52,080 --> 01:14:54,110 csak a képernyő. 1613 01:14:54,110 --> 01:14:57,720 >> Ez ténylegesen változik a HTML menet közben. 1614 01:14:57,720 --> 01:15:01,670 És ez ezt egyszerűen csinál valamit, mint ez. 1615 01:15:01,670 --> 01:15:06,800 Ha nyit ajax-2, értesítés végrehajtási valami olyan szexi, mint 1616 01:15:06,800 --> 01:15:09,560 , hogy annak ellenére, hogy elég csúnya, de olyan bonyolult, mint, hogy 1617 01:15:09,560 --> 01:15:11,910 funkcionálisan, van néhány HTML az alján. 1618 01:15:11,910 --> 01:15:13,810 De észre én is tag. 1619 01:15:13,810 --> 01:15:16,640 Már nem használt ilyet, de ez mint egy, de ez nem kényszeríti 1620 01:15:16,640 --> 01:15:17,840 Mindent rá egy új sort. 1621 01:15:17,840 --> 01:15:20,830 Ez csak azért egy téglalap alakú terület ugyanabban a sorban lényegében. 1622 01:15:20,830 --> 01:15:22,870 >> Figyeljük meg, hogy én adtam azonosító az ár. 1623 01:15:22,870 --> 01:15:26,800 És kiderül, ugyanazzal a JavaScript könyvtár, van egy funkcióval 1624 01:15:26,800 --> 01:15:30,440 úgynevezett quote (), hogy hívják, amikor Az űrlap elküldése. 1625 01:15:30,440 --> 01:15:31,800 És mit csinálok ez. 1626 01:15:31,800 --> 01:15:35,730 Én nyilvánító változó JavaScript úgynevezett url, megtakarítás az érték 1627 01:15:35,730 --> 01:15:38,650 quote.php? szimbólum =. 1628 01:15:38,650 --> 01:15:44,220 Más szóval, én magam is kezdem hogy készítsen egy HTTP kérést, majd a 1629 01:15:44,220 --> 01:15:49,250 Én összefűző rá, hogy a plusz bármilyen elem az azonosító 1630 01:15:49,250 --> 01:15:54,190 A szimbólum, amely észre, hogy text field itt lent. 1631 01:15:54,190 --> 01:15:56,630 Tehát ugyanúgy, mint volt formában a múltban. 1632 01:15:56,630 --> 01:16:01,450 >> És akkor kiderül a jQuery, ha hívni. val (), hogy hívja a val 1633 01:16:01,450 --> 01:16:05,900 függvény egy értéket a funkció, hogy lesz amit a felhasználó gépelt be 1634 01:16:05,900 --> 01:16:08,920 És akkor az összes hálózati forgalom hogy történik ez. 1635 01:16:08,920 --> 01:16:11,230 $. GetJSON. 1636 01:16:11,230 --> 01:16:13,720 >> És mint félre, dollár jel csak egy rövidített írásmódot. 1637 01:16:13,720 --> 01:16:16,860 Ez tényleg jQuery.getJSON. 1638 01:16:16,860 --> 01:16:21,520 Vigyél a JSON erről a címről, és mikor A kérés érkezik vissza, hívja ezt a 1639 01:16:21,520 --> 01:16:26,550 funkciót, és adja át az érvelés bármi jött vissza a szerver. 1640 01:16:26,550 --> 01:16:31,205 >> Más szóval, ha visszamegyek a a böngésző, és megyek vissza quote.php, 1641 01:16:31,205 --> 01:16:35,590 amit a böngésző tesz, hogy ez a darab az adatok. 1642 01:16:35,590 --> 01:16:38,930 És amikor elmegyek erre a weboldalra itt, észre, ha inkább megy a hálózat 1643 01:16:38,930 --> 01:16:43,820 fülre, és törölje azt, majd írja be valami hasonló GOOG a Google és a Get 1644 01:16:43,820 --> 01:16:46,340 Idézet észre a lap nem változott. 1645 01:16:46,340 --> 01:16:50,990 De egy HTTP kérelmet, és mi jött vissza ide, ha megnézzük a 1646 01:16:50,990 --> 01:16:56,130 válasz egy csomó JSON hogy elérhető végre a 1647 01:16:56,130 --> 01:16:58,070 ezt az egyszerű vonal itt. 1648 01:16:58,070 --> 01:17:00,150 >> Az adatok, mi ütött a szerverről. 1649 01:17:00,150 --> 01:17:02,120 Az ár a neve kulcs érdekel. 1650 01:17:02,120 --> 01:17:05,230 Tehát data.price ad nekem. 1651 01:17:05,230 --> 01:17:07,540 >> Most időközben, és ez a az utolsó példa. 1652 01:17:07,540 --> 01:17:09,280 Meg tudod csinálni még többet az oldalon. 1653 01:17:09,280 --> 01:17:12,440 Egy valóban jól kettő. 1654 01:17:12,440 --> 01:17:14,780 Mi hozhat vissza tag, ha emlékezni erre. 1655 01:17:14,780 --> 01:17:15,850 Ez a JavaScript. 1656 01:17:15,850 --> 01:17:17,110 Meg tudjuk csinálni. 1657 01:17:17,110 --> 01:17:17,690 Nagyon izgalmas. 1658 01:17:17,690 --> 01:17:18,800 Majd hagyjuk, hogy a Cliffhanger. 1659 01:17:18,800 --> 01:17:21,590 >> De még izgalmasan, akkor a dolgok, mint ez. 1660 01:17:21,590 --> 01:17:25,940 Ha elmegyek a térinformatikai-1, kiderül, hogy a Chrome tudja, hogy mi vagyunk 1661 01:17:25,940 --> 01:17:30,672 szélességi hosszúsági 42,37. -71,10. 1662 01:17:30,672 --> 01:17:32,940 Tehát van még több is az Ön rendelkezésére. 1663 01:17:32,940 --> 01:17:34,290 De erről bővebben a jövő héten. 1664 01:17:34,290 --> 01:17:35,540 Hétfőn találkozunk. 1665 01:17:35,540 --> 01:17:37,558