1 00:00:00,000 --> 00:00:09,647 2 00:00:09,647 --> 00:00:11,730 Előadó: Most merülés az elosztó kódot 3 00:00:11,730 --> 00:00:14,470 és nézd meg, összefüggésben amelyben a kódot írsz 4 00:00:14,470 --> 00:00:15,780 fog működni. 5 00:00:15,780 --> 00:00:17,350 Végén a nap, fogsz végre 6 00:00:17,350 --> 00:00:18,710 a teljes egészében a webszerver. 7 00:00:18,710 --> 00:00:20,460 De már feltéve, Ön a csontváz 8 00:00:20,460 --> 00:00:24,090 kód, amely valamilyen funkciót, különösen a kapcsolódó hálózatok. 9 00:00:24,090 --> 00:00:25,390 Vessünk egy pillantást. 10 00:00:25,390 --> 00:00:27,560 >> Tehát itt teteje felé A fájl egy rakás 11 00:00:27,560 --> 00:00:30,020 A szolgáltatás tesztelése makro követelményeknek. 12 00:00:30,020 --> 00:00:33,570 Most ez csak egy eleme a C, ahol szerint egy csomó embert oldalak 13 00:00:33,570 --> 00:00:36,410 meg kell adnunk néhány ezek az állandók, hogy igaz legyen 14 00:00:36,410 --> 00:00:39,920 vagy még konkrét számokat, hogy akkor a hozzáférést bizonyos funkciókhoz. 15 00:00:39,920 --> 00:00:42,470 Ellenkező esetben akkor lesz a be nem jelentett és akkor nem férnek hozzá. 16 00:00:42,470 --> 00:00:45,340 Ezért csináltam ezt a útján Az olvasó a man oldalakat. 17 00:00:45,340 --> 00:00:48,410 Most lent, a vonalak 15 és 17, akkor 18 00:00:48,410 --> 00:00:50,550 Van egy csomó korlátok nyilvánította. 19 00:00:50,550 --> 00:00:53,370 >> És mi kölcsönzött ezeknek egy népszerű web szerver úgynevezett Apache. 20 00:00:53,370 --> 00:00:54,650 És ezek csak számok mennek 21 00:00:54,650 --> 00:00:56,810 tetejébe száma bájtok, amelyek jogosultak 22 00:00:56,810 --> 00:01:01,930 különböző összefüggésekben a HTTP request A böngésző, küldhet nekem. 23 00:01:01,930 --> 00:01:04,310 Ezután definiáljuk oktettnél. 24 00:01:04,310 --> 00:01:07,790 Most egy oktett csak egy divatos módon A mondván egy byte, vagy nyolc bit. 25 00:01:07,790 --> 00:01:10,720 Kiderült, hogy a múlt egy byte Nem feltétlenül nyolc bit, 26 00:01:10,720 --> 00:01:12,339 így oktettben mindig nyolc bit. 27 00:01:12,339 --> 00:01:14,880 Tehát ebben az esetben mi már elfogadott mi közös a hálózati 28 00:01:14,880 --> 00:01:17,410 világába hív nyolc byte egy oktett. 29 00:01:17,410 --> 00:01:21,840 >> Itt adtam meg, hogy oktettnél lesz 512, hogy ugyanúgy, mint a kriminalisztika 30 00:01:21,840 --> 00:01:24,170 amikor azt olvassuk egy csomó byte-os, itt is, 31 00:01:24,170 --> 00:01:27,390 fogunk olvasni a csomó oktett egy időben. 32 00:01:27,390 --> 00:01:28,922 Next egy csomó header fájlokat. 33 00:01:28,922 --> 00:01:30,255 Hogyan tudom, hogy ezeket a? 34 00:01:30,255 --> 00:01:32,730 Hát én egyszerűen csak olvasni a férfi oldalakon számos funkciót 35 00:01:32,730 --> 00:01:35,620 hogy fel fogjuk használni ebben az elosztó kódot, és tartalmazza azokat, 36 00:01:35,620 --> 00:01:37,390 Azt az utasítást kapta, hogy. 37 00:01:37,390 --> 00:01:39,090 >> És most van az adat típusát. 38 00:01:39,090 --> 00:01:41,470 Már nyilvánították oktetben egy char. 39 00:01:41,470 --> 00:01:44,040 És majd meglátjuk, hogy később ez használják szerte a kódot. 40 00:01:44,040 --> 00:01:45,670 És mi már nyilvánították csomó prototípusok, 41 00:01:45,670 --> 00:01:47,961 és megyünk keresztül gyorsan Minden ilyen funkciókat. 42 00:01:47,961 --> 00:01:50,400 Végül, és talán a legtöbb Fontos, hogy a 43 00:01:50,400 --> 00:01:52,520 bánja ezen a ponton a történet, hogy van 44 00:01:52,520 --> 00:01:54,520 vannak, valójában egy egész csomó globális változók 45 00:01:54,520 --> 00:02:00,430 a tetején a fájl, gyökér, CFD, SFD, kérésére, a fájl és a test. 46 00:02:00,430 --> 00:02:03,960 >> Most általában, a sok globális változók, illetve globális változók egyáltalán, 47 00:02:03,960 --> 00:02:05,280 nem a hátsó gyakorlat. 48 00:02:05,280 --> 00:02:09,090 De kiderül, mi is egy nevű technológia jelkezelés később 49 00:02:09,090 --> 00:02:11,930 a kódot, amely lehetővé teszi számunkra, hogy érzékeli, ha a felhasználó az valami 50 00:02:11,930 --> 00:02:15,080 mint a CTRL C és állítsa le A kiszolgáló kecsesen. 51 00:02:15,080 --> 00:02:18,240 És annak érdekében, hogy ezt, hogy kecsesen és valójában szabad memóriát, 52 00:02:18,240 --> 00:02:20,800 mi szükség van hozzáférése ezek a globális változók. 53 00:02:20,800 --> 00:02:24,510 >> És most vessünk egy pillantást a fő, amely hajtja a teljes egészében ezt a programot. 54 00:02:24,510 --> 00:02:27,720 Először is, a tetején itt Van egy hiba száma változó 55 00:02:27,720 --> 00:02:29,570 hogy a jelek szerint nem Van egy fajtája, de ez 56 00:02:29,570 --> 00:02:31,500 mert valójában meghatározott nevű fájlt 57 00:02:31,500 --> 00:02:34,800 error errno.h amely tartalmazza feljebb. 58 00:02:34,800 --> 00:02:38,780 Ha ezt az ember hibakod ténylegesen definícióját lásd e dolog, 59 00:02:38,780 --> 00:02:41,230 látni fogod, hogy ez egy speciális globális változó, 60 00:02:41,230 --> 00:02:43,350 van beállítva egy csomó A funkciók nem írt 61 00:02:43,350 --> 00:02:48,730 Az általunk, de a szerzők a Linux és más rendszerek állítása 62 00:02:48,730 --> 00:02:52,400 Egy szám, amely a változó amikor valami elromlik, így globálisan 63 00:02:52,400 --> 00:02:54,830 kitalálni, hogy mit csinált rosszul. 64 00:02:54,830 --> 00:02:58,540 >> Most lent megjelenik egy új technika talán használ getopt, 65 00:02:58,540 --> 00:03:01,790 olyan funkció, amely segít parse parancsot argumentumaiba, hogy mi nem 66 00:03:01,790 --> 00:03:05,540 kell bajlódnia időhúzás kitalálni hogyan lehet feldolgozni valamit, mint 8080, 67 00:03:05,540 --> 00:03:08,350 vagy kötőjel p, vagy gondolatjel h segítséget kérni. 68 00:03:08,350 --> 00:03:10,300 getopt lényegében ezt teszi számunkra. 69 00:03:10,300 --> 00:03:11,750 Lásd a man oldalt további. 70 00:03:11,750 --> 00:03:13,960 >> Ezután teszünk egy kis hiba Ellenőrizzük, hogy 71 00:03:13,960 --> 00:03:17,420 hogy a port száma belül A megadott tartományon a spec. 72 00:03:17,420 --> 00:03:20,240 Ezután megjelenik egy függvény hívása kezdeni, amelyek definíciója fogunk 73 00:03:20,240 --> 00:03:24,040 nézd meg egy pillanatra, és mint a neve sugallja, ez elindítja a webszervert. 74 00:03:24,040 --> 00:03:26,960 Itt van egy hívás, hogy egy függvény nevezett jelet, amely azt mondja, 75 00:03:26,960 --> 00:03:30,750 ha és amikor hallod kontroll C-re A felhasználó billentyűzet, megy előre, és hívja 76 00:03:30,750 --> 00:03:34,650 olyan függvény is kezelőt, amely folyik hogy végül tisztán a dolgokat, és hagyja abba 77 00:03:34,650 --> 00:03:35,500 a szerver. 78 00:03:35,500 --> 00:03:39,470 >> Az alábbiakban ez az, amit úgy tűnik, hogy egy végtelen ciklusba, az első sorban, amely 79 00:03:39,470 --> 00:03:41,660 hatékonyan egy hívást hogy olyan függvény is 80 00:03:41,660 --> 00:03:45,110 visszaállítása, amelyet mi magunk végrehajtja a későbbiekben annak érdekében, 81 00:03:45,110 --> 00:03:47,470 szabadítson fel a globális Államokban. 82 00:03:47,470 --> 00:03:50,480 Ezután egy sor kód, amely feltételesen 83 00:03:50,480 --> 00:03:52,576 ellenőrzi, a visszatérés értéke csatlakoztatott. 84 00:03:52,576 --> 00:03:55,700 Most csatlakozik néz ki, mint egy állítmány, valamit, ami visszaadja igaz vagy hamis. 85 00:03:55,700 --> 00:03:58,040 És igen, de van valami különleges csatlakoztatott 86 00:03:58,040 --> 00:03:59,960 hogy ez egy blokkoló hívás. 87 00:03:59,960 --> 00:04:03,180 Ez lesz ott ülni és várni amíg a felhasználó böngészőjének 88 00:04:03,180 --> 00:04:05,860 megpróbál csatlakozni ehhez a web szerver és csak ezt követően lesz 89 00:04:05,860 --> 00:04:10,160 vissza igaz vagy hamis, hogy mi járjunk a belsejében ez, ha a nyilatkozatot. 90 00:04:10,160 --> 00:04:13,870 >> Egyszer ott, észre ezt a funkciót a nevű függvény értelmezési, amit írtam, 91 00:04:13,870 --> 00:04:17,230 amely értelmezi az összes oktettre, minden A bájt érkező böngésző 92 00:04:17,230 --> 00:04:21,010 a szerverre, hogy mi is kézzel vissza végül egy értéket egy 93 00:04:21,010 --> 00:04:24,420 e globális változót tárolja a byte-ban csak 94 00:04:24,420 --> 00:04:26,630 fejlécének, hogy kérést, nem a test 95 00:04:26,630 --> 00:04:28,920 ha lenne valójában egy testet hozzá. 96 00:04:28,920 --> 00:04:32,980 >> Most lent elkezdünk elemezni azokat a fejlécek kivonat 97 00:04:32,980 --> 00:04:35,490 egy részhalmazát az információ hogy törődünk. 98 00:04:35,490 --> 00:04:37,740 Pontosabban, egy a mellett, az első 99 00:04:37,740 --> 00:04:40,580 akarta kérni vonal, amely a Csak, hogy az első sorban, hogy 100 00:04:40,580 --> 00:04:45,710 remélhetőleg mond valamit, mint get perjel, vagy valami útnak, majd HTTP 1.1. 101 00:04:45,710 --> 00:04:48,150 Mi ezzel a metafora Egy tűt a szénakazalban 102 00:04:48,150 --> 00:04:50,370 keresni különösen karakter vagy címeket. 103 00:04:50,370 --> 00:04:53,120 És valóban, van egy száma funkciók disztribúciós kódot 104 00:04:53,120 --> 00:04:56,930 hogy te is hasznosnak bizonyulhatnak ha keres különösen értékeket. 105 00:04:56,930 --> 00:05:00,630 >> Végső soron azt másolni ezeket a byte- egy változó nevű sort, 106 00:05:00,630 --> 00:05:03,510 amely észre is volt, most már adható, a stack 107 00:05:03,510 --> 00:05:05,890 útján egy dinamikusan méretű tömbben. 108 00:05:05,890 --> 00:05:08,350 És mi szándékosan próbálják Kerülendő hívja malloc 109 00:05:08,350 --> 00:05:11,100 mert újra, mert Ellenőrző C lenni 110 00:05:11,100 --> 00:05:14,630 potenciális ennek a programnak, amit Nem akarom, hogy ezt a kódot hirtelen 111 00:05:14,630 --> 00:05:17,479 a felhasználó által megszakítva ütő Kontroll C, melynek eredménye 112 00:05:17,479 --> 00:05:20,270 az, hogy talán nem lesz esélye ingyen valamit, amit malloced. 113 00:05:20,270 --> 00:05:23,660 Szóval próbálok a lehető legtöbb A verem tudok itt. 114 00:05:23,660 --> 00:05:26,040 >> Következik, egy csomó, hogy dos. 115 00:05:26,040 --> 00:05:28,930 A specifikáció fejti hogy pontosan mi várható itt, 116 00:05:28,930 --> 00:05:31,800 de a hozzászólások kapsz egy csipetnyi mi vár ránk. 117 00:05:31,800 --> 00:05:33,830 Először is ki kell érvényesíti a kérést vonalon 118 00:05:33,830 --> 00:05:37,760 és győződjön meg róla, hogy úgy néz ki, mint a specifikációk nyelvtan, hogy úgy mondjam, 119 00:05:37,760 --> 00:05:38,541 azt mondja, hogy kellene. 120 00:05:38,541 --> 00:05:41,290 Ezután csomagold ki valamit nevű lekérdezés, a cucc 121 00:05:41,290 --> 00:05:44,200 után egy kérdőjel, mint a láttuk a Google például 122 00:05:44,200 --> 00:05:46,320 futólag egy HD paramétert. 123 00:05:46,320 --> 00:05:49,050 Ezután összefűzni össze a gyökér a webkiszolgáló 124 00:05:49,050 --> 00:05:52,520 A path ez a a kérésnek első sorban 125 00:05:52,520 --> 00:05:56,010 és ezek képezik a teljes elérési útját A kívánt file keresni. 126 00:05:56,010 --> 00:06:00,300 >> Ezt követően fogunk győződjön meg róla, hogy a fájl létezik és olvasható. 127 00:06:00,300 --> 00:06:05,100 És akkor mi lesz kicsomagolni fájl kiterjesztését, a .html vagy a .php, 128 00:06:05,100 --> 00:06:09,920 vagy valami hasonló kiterjesztése ez a Nagyon végén a szöveg kért. 129 00:06:09,920 --> 00:06:11,940 Következik egy egész csomó kódot írtunk 130 00:06:11,940 --> 00:06:15,800 hogy valóban létre PHP generált tartalom az Ön számára. 131 00:06:15,800 --> 00:06:18,010 Dióhéjban ez a code veszi a nevét 132 00:06:18,010 --> 00:06:20,250 A kívánt fájlt PHP értelmezni. 133 00:06:20,250 --> 00:06:24,630 Elhaladunk azért valamivel úgynevezett a csövet a PHP interpreter. 134 00:06:24,630 --> 00:06:28,060 Menj vissza a válasz, mintha A válasz volt egy fájlt magát. 135 00:06:28,060 --> 00:06:32,110 És akkor mi végighaladni, hogy fájl bájt, húzza őket egy puffer 136 00:06:32,110 --> 00:06:34,180 hogy így végső soron nyomtassa ki őket. 137 00:06:34,180 --> 00:06:37,230 >> Valójában, az összes ilyen felszólítja ide dprintf 138 00:06:37,230 --> 00:06:40,110 lehetővé teszi, hogy nyomtatni valamit nevű fájl leíró, amely 139 00:06:40,110 --> 00:06:42,350 csak egy egész szám , ami egy fájl. 140 00:06:42,350 --> 00:06:45,360 Nagyon hasonló szellemben, de alapvetően különbözik egy fájlt 141 00:06:45,360 --> 00:06:46,620 csillagos pointer. 142 00:06:46,620 --> 00:06:50,260 Figyeljük meg, hogyan lehet használni, mint a szintaxis printf itt, így én is dinamikusan 143 00:06:50,260 --> 00:06:54,000 helyezze olyasmi, mint a hossza Az értéke egy HTTP fejléc 144 00:06:54,000 --> 00:06:55,270 úgynevezett Content-Length. 145 00:06:55,270 --> 00:06:57,990 És végül használtam funkciót jogot, hogy ténylegesen írni 146 00:06:57,990 --> 00:07:00,040 A testület a kérést. 147 00:07:00,040 --> 00:07:03,750 >> Sajnos csak végre támogatja a dinamikusan 148 00:07:03,750 --> 00:07:05,350 generált PHP fájlokat. 149 00:07:05,350 --> 00:07:08,520 Mi nem hajtotta végre támogatása statikus fájlokat, mint a gif, és JPEG, 150 00:07:08,520 --> 00:07:10,660 és CSS és HTML fájlokat. 151 00:07:10,660 --> 00:07:14,450 Hogy sajnos, marad meg hogy válaszoljon a kliens cél 152 00:07:14,450 --> 00:07:15,090 ennek köze. 153 00:07:15,090 --> 00:07:20,050 Szóval ott megtalálod, hogy van Nem sok inspirációt belül a blokk, 154 00:07:20,050 --> 00:07:23,520 de ha egy kicsit feljebb, hogy milyen mentünk a tolmácsolási PHP kódot, 155 00:07:23,520 --> 00:07:25,520 A funkciók fogsz használni egy kicsit más. 156 00:07:25,520 --> 00:07:27,561 >> Sőt, lehet kölcsönözni néhány, a funkcionalitás 157 00:07:27,561 --> 00:07:29,620 Talán a kriminalisztika problémát meg, mert 158 00:07:29,620 --> 00:07:32,860 A nap végére csak annyit kell nem itt van, ha tudod, hogy mit fájlt megnyitni 159 00:07:32,860 --> 00:07:35,690 és ha tudod, hogy az úgynevezett MIME-típus vagy a tartalom típusa, 160 00:07:35,690 --> 00:07:39,040 el kell olvasni a bájtok és valahogy köpni őket vissza. 161 00:07:39,040 --> 00:07:41,190 >> És most Ismerkedj meg az fájl egyéb funkciók. 162 00:07:41,190 --> 00:07:43,820 Első csatlakozik, amely egyszerűen igazat ad vissza 163 00:07:43,820 --> 00:07:47,350 amikor végre meghallja a kapcsolat egy felhasználótól. 164 00:07:47,350 --> 00:07:48,786 Következik a hibát. 165 00:07:48,786 --> 00:07:52,296 Hiba, eközben függvényében mi írta kezelni az összes különböző 400 166 00:07:52,296 --> 00:07:55,360 és 500 HTTP státusz kódokat, hogy érdemes 167 00:07:55,360 --> 00:07:58,500 küld vissza a felhasználónak, valamint egy szabványos üzenet. 168 00:07:58,500 --> 00:08:01,950 >> Következik a terhelést, különösen húsos funkció, amelynek célja az életben 169 00:08:01,950 --> 00:08:06,920 van, hogy olvasni egy fájlt csillagos mutató A A fájl tartalma egy globális buffer 170 00:08:06,920 --> 00:08:09,000 hogy kijelentette világszerte a fenti [? fő. ?] 171 00:08:09,000 --> 00:08:12,649 Ez egy kicsit bonyolultabb, mert kell olvasni a bájt fájl 172 00:08:12,649 --> 00:08:14,690 de nézd meg az egyes iterációs hogy mi már 173 00:08:14,690 --> 00:08:17,600 hit a végén a fájl vagy valami más baj van. 174 00:08:17,600 --> 00:08:21,210 És az általunk használt realloc, hogy győződjön meg arról, hogy amit buffer mi használ növekszik 175 00:08:21,210 --> 00:08:24,440 és egyre csak nőtt, és mindig tartózkodó előtt a bájtok számát 176 00:08:24,440 --> 00:08:25,675 hogy meg kell, hogy beleférjen ott. 177 00:08:25,675 --> 00:08:27,550 Handler, eközben A funkció, hogy lesz 178 00:08:27,550 --> 00:08:30,630 nevű útján, amelynek bejegyzett kontroll C, mint egy jel 179 00:08:30,630 --> 00:08:32,140 hogy szeretnénk, hogy elkapjam. 180 00:08:32,140 --> 00:08:34,070 Figyeljük meg itt handler hogy végső soron 181 00:08:34,070 --> 00:08:36,780 hívások megállítani, ami persze megáll a webszerver. 182 00:08:36,780 --> 00:08:39,750 És sajnos, keresés nem hajtják végre. 183 00:08:39,750 --> 00:08:41,940 Ebben szellem, ez egy meglehetősen egyszerű funkció. 184 00:08:41,940 --> 00:08:44,900 Mivel a fájl kiterjesztését, szüksége vissza ez az úgynevezett MIME 185 00:08:44,900 --> 00:08:46,320 típusú vagy a tartalom típusát. 186 00:08:46,320 --> 00:08:49,260 És mi adja a specifikáció hogy mi mapping kell lennie. 187 00:08:49,260 --> 00:08:52,330 De meg kell lefordítani Végső soron a c-kódot. 188 00:08:52,330 --> 00:08:56,490 >> Következik a mi hasonlóan tartalmas funkció nevű parse, amelynek célja az életben 189 00:08:56,490 --> 00:08:59,350 az, hogy olvasni, nem egy fájlból, de a hálózati kapcsolat. 190 00:08:59,350 --> 00:09:03,510 Különösen, beolvasni és feldolgozni a HTTP kérés, hogy jött egy böngészőből 191 00:09:03,510 --> 00:09:05,940 hogy a szerver, hogy végső soron tudjuk feldolgozni 192 00:09:05,940 --> 00:09:09,530 éppen a fejlécét a kérelmet vonal és visszafordítására Önnek 193 00:09:09,530 --> 00:09:12,720 útján egy globális puffert tartalmaz, amely azt a fenti nyilatkozat [? fő. ?] 194 00:09:12,720 --> 00:09:14,880 >> Alaphelyzetbe, eközben egy funkciót, hogy mi határozza 195 00:09:14,880 --> 00:09:18,730 hogy lesz úgynevezett iteratív belül A fő minden alkalommal fogsz 196 00:09:18,730 --> 00:09:20,799 indulásra készen hallgat Egy új kapcsolat 197 00:09:20,799 --> 00:09:22,840 így mindig tudjuk, az állam a mi változók 198 00:09:22,840 --> 00:09:24,870 és így már azt is megszabadult minden memória 199 00:09:24,870 --> 00:09:28,070 Lehet osztottak Egy korábbi hálózati kapcsolat. 200 00:09:28,070 --> 00:09:30,060 A következő a sorban kezdeni, az funkció, amit írt 201 00:09:30,060 --> 00:09:31,920 amely tartalmaz egy egész Sok hálózati kód 202 00:09:31,920 --> 00:09:34,420 hogy végül elindítja a webszervert. 203 00:09:34,420 --> 00:09:36,680 >> Utolsó akár a funkciót nevű megállója, amely 204 00:09:36,680 --> 00:09:38,770 pontosan ezt teszi, akkor megáll a webszerver. 205 00:09:38,770 --> 00:09:42,270 De előbb felszabadul egy olyan memória hogy még kiosztásra került. 206 00:09:42,270 --> 00:09:45,850 De ez végül is kéri exit anélkül, hogy visszatér-szabályozás 207 00:09:45,850 --> 00:09:47,480 a fő funkciója. 208 00:09:47,480 --> 00:09:49,480 Végül, az egyik a legfontosabb technikák 209 00:09:49,480 --> 00:09:52,680 végrehajtása során webszerver lesz egy kis próbálgatással, 210 00:09:52,680 --> 00:09:55,886 amelynek egy böngésző ablakot nyitva A jobb oldalon és egy terminál ablakot 211 00:09:55,886 --> 00:09:57,760 balra, a szerverek konzol ablakot, így 212 00:09:57,760 --> 00:10:00,420 Láthatjuk az üzeneteket, amelyek jelenik meg a képernyőn. 213 00:10:00,420 --> 00:10:04,170 >> De még jobb lenne egy harmadik ablak, a második terminál ablak, 214 00:10:04,170 --> 00:10:07,135 amelyben a Telnet használatával, a használati amelyre írják a spec. 215 00:10:07,135 --> 00:10:09,640 És Telnet csak egy nagyon egyszerű hálózati program 216 00:10:09,640 --> 00:10:12,660 amely lehetővé teszi, hogy úgy tesznek, mintha egy böngészőt az egyik ablakban 217 00:10:12,660 --> 00:10:14,540 beszélgetés közben a másik ablakba. 218 00:10:14,540 --> 00:10:16,830 Így láthatjuk Pontosan a szöveges parancsok 219 00:10:16,830 --> 00:10:18,700 hogy jönnek vissza a szervertől a kliensek 220 00:10:18,700 --> 00:10:20,810 anélkül, hogy dugta körül Chrome fejlesztői 221 00:10:20,810 --> 00:10:24,010 eszközöket az egyébként clunkier felület. 222 00:10:24,010 --> 00:10:29,099