Nov 1, 2009 2 komentāri

Brīdinājuma stāsts par bēdas: Bug Tas Got Away

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

Pagājušajā nedēļā es izlaidusi atjaunināto versiju mana Satura Creator spraudnis WordPress. Es lepnums sevi manā kodēšanas, vainu atrast un testēšanas spējas. Ka viss nāca crashing leju vienā naktī.

Lai izgrieztu garš stāsts īss, jauna pārskatīšana nepieciešama palīgs funkciju, lai parādītu post ierakstus. Palīgs funkcija bija tikai sauc par vienu funkciju, un tāpēc es izvēlējās iekļaut palīgs funkciju, kā bērns šīs funkcijas. Tas ir ierasta prakse daudzās valodās, kā tas glīti iepako visas funkcijas un to palīgiem tuvumā. Mātes funkcijas, ko tā sauc katru reizi lapa tiek parādīta, un izbeidzas nekavējoties, ja šī lapa neietilpst lapas karte iniciators tagu.

Ok. Laiks iet. Tagad ir 02:00. Kods tagad ir gatavi pārbaudīt. Es zinu, ka mātes funkciju izejām uzreiz, ja tā neatrod iniciators tagu. Tas ir iepriekš strādājis, un es devos ne tuvu tam, lai tā būtu jāturpina strādāt. Labi? Es pārbaudu lapas karte lapu, izmēģināt visu jauno un veco iespējas un pierādīt, ka kods darbojas kā paredzēts. Es ātri sinhronizēt SVN repozitoriju un aizdrāzties gulēt iegūt dažas miega, pirms saule nāk uz augšu.

Nākamajā rītā es nolemt pārbaudīt liela vieta es zinu, kas izmanto manu spraudni. Nav par reālās pasaules testēšanu aizstāt. Yeah, tas viss izskatās labi. Tajā brīdī es pamanīju amatā lapas karte, kas izskatījās interesanti. Es noklikšķinājis uz kategoriju saites un iepazīstināja ar pirmo amatā kategorijā, un tad lielā šķebinošs php kļūdas ziņojumu. Mmm. Es paskatījos citu lielu vietu. Mmm. Varbūt sagadīšanās. Lets apskatīt vienu vairāk. Ak nē!

Tātad, kas nogāja greizi? Atcerieties, ka bērnu funkciju? Esmu dzirdējis tā teica, ka bērni var būt ļauna un tā izrādījās taisnība šajā gadījumā. Ja emuāra lapā, kategoriju lapas, tag lapu vai pat mājas lapā redzams, vairāki amati parādīta vienā lapā. WordPress vai tas, izliekoties, ka katrs amats ir mini-lapa un sasaista visus mini-lapas kopā, lai veidotu vienu lielu lapu. Tas nozīmē, ka mana mātes funkciju sauc vairākas reizes. Parasti nav problēma. Bet tagad kā funkcija ir bērnu funkcijas, šīs bērnu funkcijas tiek veidotas katru reizi mātes funkcija sauc (pat ja tās netiek izmantotas). Tāpēc, kad pēc tam 2. amats tiek parādīts, lapa avārijās ar dubultu funkciju vārdu kļūdas ziņojumu. NETTO rezultāts bija tāds, ka neliels bug šķietami nesaistīts funkciju izraisīja vairākas ļoti lielas mājas lapas iet uz leju.

Morāle stāsts: ja jūs esat mājas lapā administrators, pārliecinieties, ka jūs palaist pilnu komplektu testu pēc katras spraudnis atjaunināšanas, nav svarīgi, cik liels vai mazs, ka spraudnis var būt.


SpinChimp Leaderboard 728x90