1. studeni 2009 2 Komentari

Upozoravajuća priča o jao: Bug koji je dobio daleko

http://markbeljaars.com/wp-content/plugins/sociofluid/images/digg_48.png http://markbeljaars.com/wp-content/plugins/sociofluid/images/reddit_48.png http://markbeljaars.com/wp-content/plugins/sociofluid/images/stumbleupon_48.png http://markbeljaars.com/wp-content/plugins/sociofluid/images/delicious_48.png http://markbeljaars.com/wp-content/plugins/sociofluid/images/furl_48.png http://markbeljaars.com/wp-content/plugins/sociofluid/images/technorati_48.png http://markbeljaars.com/wp-content/plugins/sociofluid/images/facebook_48.png http://markbeljaars.com/wp-content/plugins/sociofluid/images/yahoobuzz_48.png http://markbeljaars.com/wp-content/plugins/sociofluid/images/mixx_48.png http://markbeljaars.com/wp-content/plugins/sociofluid/images/twitter_48.png

Prošli tjedan sam objavio ažuriranu verziju svog Sadržaj Stvoritelja čep za WordPress. Ja sam ponos u mom kodiranje, traženje greške i testiranje sposobnosti. To sve je došao pad sustava u jednom noći.

Da biste izrezali duge kratke priče, nova revizija potreban pomagač funkcija za prikazivanje nakon unosa. Pomagač funkcija je samo pozvao jedna funkcija, a ja zato izabran uključiti pomagač funkciju kao dijete tu funkciju. To je uobičajena praksa u mnogim jezicima kao što je uredno paketa svim funkcijama i njihovim pomagačima u neposrednoj blizini. Roditelja funkcija usput se zove svaki put stranica je prikazana i prestaje odmah, ako ta stranica ne uključuje inicijator oznaku site map.

Ok. Vrijeme prolazi. Sada je 02:00. Kod je sada spreman za test. Znam da roditelj funkciju izlazi odmah ako ne pronaći inicijator oznaku. Ovo je prethodno radio, a ja sam otišao nigdje u blizini, pa ga treba nastaviti raditi. Pravo? Ja provjeriti stranica karta stranice, isprobati sve nove i stare opcije i dokazati da je kod radi onako kako smo zamislili. Brzo sam sinkronizirati SVN repozitorij i odjuriti u krevet kako bi dobili neki spavati prije nego što sunce dolazi gore.

Sljedeće jutro sam se odlučite za provjeru velikog stranice znam da koristi moj čep. Nema zamjena za testiranje u stvarnom svijetu. Da, sve to izgleda dobro. U tom trenutku sam primijetio post u site map koja je izgledala zanimljivo. Ja kliknuo na kategorije vezu i predstavljen je s prvi post u kategoriji, a zatim veliki gadan php poruku o pogrešci. Mmm. Pogledao sam na još jedan veliki mjestu. Mmm. Možda slučajnost. Omogućava pogled na još jednu. O, ne!

Dakle, ono što je pošlo po zlu? Imajte na umu da funkcija dijete? Čuo sam da je rekao da djeca mogu biti zla i ispostavilo se da bi bilo istinito u ovom slučaju. Ako blog stranici, kategorija stranica, oznake stranicu ili čak početnu stranicu je prikazana, više radnih mjesta prikazani su na jednoj stranici. WordPress to čini praveći se da svaki post je mini-stranicu i povezuje sve mini-stranica zajedno da se formira jednu veliku stranicu. To znači da je moj roditelj funkcija se zove više puta. Obično nije problem. No, sada kao funkcija sadrži funkcije dijete, te dijete funkcije stvara svaki put roditelj funkcija se zove (čak i ako se ne koristi). Stoga, kada je tadašnji drugi post je prikazan, stranica pad s funkcije duplikat ime poruku o pogrešci. Neto rezultat je bio da mali bug u naizgled nepovezanih funkciju zbog nekoliko vrlo velikih web-mjesta da ide prema dolje.

Moral priče: Ako ste administrator web stranice, provjerite da li ste pokrenuti cijeli paket ispitivanja nakon svakog plugina ažurirati, bez obzira koliko veliki ili mali da čep može biti.


SpinChimp Leaderboard 728x90