1. november 2009 2 Komentarji

Opozorila pred Tale of Gorje: hrošč, ki Got Away

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

Prejšnji teden sem izdal posodobljeno različico svojega Kazalo Creator plugin za WordPress. Sam sem ponosen na moje kodiranje, ugotavljanje napak in preizkušanje sposobnosti. To vse je prišel treskav v eni sami noči.

Če želite izrezati zgodbo, nova revizija potrebna pomočnik funkcijo za prikaz pošti vnosov. Helper funkcijo je bil imenovan le z eno funkcijo, in sem zato izvoljen za vključitev helper funkcije kot otrok s to funkcijo. To je običajna praksa v številnih jezikih, kot je lepo pakete vseh funkcij in njihovi pomočniki v neposredni bližini. Matična funkcijo tako se imenuje vsakič, ko se prikaže stran, in preneha veljati takoj, če je ta stran ne vključuje pobudnik kazalo tag.

Ok. Čas teče. Zdaj je 02:00. Koda je zdaj pripravljen za test. Vem, da izstopi funkcijo staršev takoj, če ne najdejo pobudnik tag. To je prej delal, in sem šel nikjer v bližini, je, tako da je treba nadaljevati z delom. Right? Preverim stran zemljevid strani, preizkusite vse stare in nove možnosti, in dokazati, da je koda deluje, kot je bilo predvideno. Sem hitro sinhronizacijo SVN repozitorij in hitenja off v posteljo, da bi dobili nekaj spanja, preden vzide sonce.

Naslednje jutro sem se odločil, da preverite velika mesta Vem, da uporablja moj plugin. Ni nadomestek za resnično testiranje svetu. Ja, vse izgleda dobro. Takrat sem opazil na delovno mesto v kazalo, da je videti zanimiva. Sem kliknil na povezavo kategoriji in je bil predstavljen s prvo mesto v kategoriji, nato pa velik grdo php sporočilo o napaki. Mmm. Pogledal sem na drugem velikem mestu. Mmm. Mogoče naključje. Omogoča pogled na še eno. O, ne!

Torej, kaj je šlo narobe? Ne pozabite, da otrok funkcijo? Slišal sem, da je dejal, da se lahko otroci zlo in se je izkazalo, da je res v tem primeru. Če je bil prikazan blog stran, kategorija stran, tag stran ali celo domače strani, so več delovnih mest prikazan na eno stran. WordPress počne tako, da se pretvarja, da je vsako delovno mesto je mini-strani in povezuje vse mini-strani, tako da tvorijo eno veliko stran. To pomeni, da je moja matična funkcijo imenovano večkrat. Običajno ni vprašanje. Toda zdaj, kot funkcija vsebuje otroka funkcije, so te funkcije otrok ustvarjena vsakič, ko staršev funkcija se imenuje (tudi če se ne uporabljajo). Zato, ko pa se prikaže second post, stran zruši s podvojeno ime funkcije sporočilo o napaki. Rezultat je bil, da nett majhen bug v navidez nepovezanih funkcijo povzročilo nekaj zelo velikih spletnih strani, da gredo dol.

Morala zgodbe: če ste administrator spletne strani, poskrbite, da boste zagnali polno serije testov, po vsaki posodobitvi plugin, ne glede na to kako velika ali majhna, da se plugin.


SpinChimp Leaderboard 728x90