Kreiptis pagalbos

Atsakome el. paštu, dažniausiai per dvi dienas.

Google reCAPTCHA tikrina šį pateikimą, kad apsaugotų nuo piktnaudžiavimo; duomenys siunčiami Google. Scenarijus įkeliamas tik atvėrus šią formą.

← Visi įrašai

Su curl tikrinama ne tai, ką reikia

Apie turinį ir jo patikrą

Šiame straipsnyje

Skaitiklio užklausa be naršyklės tapatybės įrašo į dvi iš dvylikos vietų, kurias įprastai paliečia užskaitytas apsilankymas. Ji atsako 200. Grąžina galiojantį skaitiklio paveikslėlį. Niekas niekur nepasako, kad dešimt iš dvylikos praleistos.

be naršyklės identifikavimo eilutės — 2 iš 12 numatytoji curl — 2 iš 12 naršyklės tapatybė — 10 iš 12 visi trys atsakė 200 su veikiančiu skaitiklio paveikslėliu

Kam skirtas filtras ir kiek jis kainuoja

Čia esantys skaitikliai atskiria robotus nuo žmonių, o atskiriama pagal tapatybę, kuria prisistato klientas. Žymenų sąrašas trumpas ir sąmoningai nedviprasmiškas, o curl/ į jį įtrauktas. Kaip ir tuščia tapatybė, remiantis tuo, kad užklausa visai be naršyklės identifikavimo eilutės nėra naršyklė.

Abu atvejai teisingi. Paslauga neklysta laikydama paprastą curl robotu; tai jis ir yra. Problema ta, kad curl valdantis žmogus paprastai tikrina ne robotų aptikimą. Jis tikrina, ar veikia skaičiavimas, ir tyliai paprašė robotų eigos.

Ką gauna: dienos peržiūrų suma padidėja vienetu, robotų stulpelis padidėja vienetu, ir viskas. Jokios unikalaus lankytojo eilutės, taigi nieko apie lankytojus. Jokio įrašo prisijungusiųjų sąraše. Jokio puslapio, šalies, naršyklės, operacinės sistemos, įrenginio, valandos. Sistemos dalys, kurias iš tiesų norėtųsi patikrinti, yra tos, kurios nebuvo vykdytos.

Gedimas neturi simptomo

Šią dalį verta apmąstyti. Testas, kuris nieko nematuoja, paprastai apie tai praneša: klaida, tuščias rezultatas, nulis vietoj skaičiaus. Čia atsakymas 200. Turinys – tikras skaitiklio paveikslėlis, 3 361 baito. Skaičius jame net padidėjo, nes peržiūrų suma yra vienas iš dviejų dalykų, kurie iš tiesų įvyko.

Taigi bandymas atrodo sėkmingas. Viskas, kas iš jo išplaukia — „skaičiavimo eiga veikia“, „naujas stulpelis įrašomas“, „pakeitimas nieko nesugadino“ — yra išvada iš paleidimo, praleidusio didžiąją dalį kodo, kurį turėjo išbandyti.

Tai nutiko rašant šį tekstą

Pirmoji šio įrašo matavimo versija prašė /c/<number>. Tai ne skaitiklio paveikslėlio adresas; tikrasis turi dizainą ir plėtinį, /c/<number>-<design>.png. Užklausa grąžino 404.

Scenarijus tris kartus parašė: įrašo į 0 iš 12 vietų. Tai tiesa, ir kartu būtent taip iš pirmo žvilgsnio atrodytų veikiantis robotų filtras. 404 buvo išvestyje, toje pačioje lentelėje, viena eilute virš nulių. Minutę liko neperskaitytas, nes nuliai buvo įdomioji dalis ir atitiko lūkesčius.

Tai ta pati klaida, apie kurią šis įrašas, tik lygiu aukščiau: matavimas, davęs įtikinamą atsakymą dėl niekieno nepatikrintos priežasties. Jis aptiktas tik todėl, kad scenarijus skaičiavo eilutes dvylikoje lentelių, o ne pasitikėjo užklausa — nepavykusi ir išfiltruota užklausos iš išorės atrodo vienodai.

Ką daryti vietoj to

Siųskite naršyklės tapatybę. Viena žyma -A su tikra naršyklės identifikavimo eilute, ir ta pati užklausa įrašo į dešimt iš dvylikos vietų vietoj dviejų.

Ir ką nors suskaičiuokite kitoje pusėje. Atsakymo kodas pasako, kad užklausa atėjo; nepasako, ką ji padarė. Kai esmė yra šalutinis poveikis — skaitiklis, eilė, žurnalo eilutė, kokia nors duomenų eilutė, — bandymas turi žiūrėti į šalutinį poveikį. Skaičiavimai prieš ir po visose susijusiose lentelėse čia užėmė dvidešimt eilučių ir dukart pavertė dviprasmį rezultatą nedviprasmiu: kartą filtrui, kartą 404.

Dvi iš dvylikos vietų liko tuščios net su naršyklės tapatybe: robotų stulpelis, teisingai, ir nukreipiančių puslapių sąrašas, neužregistravęs išsiųsto nukreipiančio puslapio. Antras atvejis čia nepaaiškintas, nes dar neištirtas. Jis pateikiamas, nes alternatyva – paskelbti vienuolikos eilučių lentelę ir vadinti ją dvylikos.

Reklama