1 ноември 2009 г. 2 Коментари

Поучителна история на Горко: грешки, които се разпадат

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

Миналата седмица пусна обновена версия на моята маса Съдържание Creator плъгин за WordPress. Аз се гордеем в моя кодиране, намирането на вина и тестване на способности. Че всички се сгромолясаха, в една-единствена нощ.

За да отрежете дълга история кратко, нова ревизия изисква помощник функция за показване на публикуване на записи. Помощник функция е наречен само от една функция и затова избра да се включи функцията на помощник, като дете на тази функция. Това е обичайна практика в много езици, тъй като спретнато пакети всички функции и техните помощници в непосредствена близост. Майка функция от начина, по който се нарича всеки път, когато страница се показва и се прекратява незабавно, ако тази страница не включва инициатор карта на сайта маркер.

Ok. Времето минава. Вече е 2 часа през нощта. Код вече е готов за тестване. Знам, че изходите за родител на функция незабавно, ако тя не намери етикет инициатор. Това преди това е работил, и аз отидох никъде в близост до него, така че трябва да продължи да работи. Така ли е? Проверя карта на сайта, опитайте се, всички нови и стари опции и да докаже, че кодът работи по предназначение. Бързо да синхронизирате SVN хранилището и се втурват в леглото да поспя, преди слънцето изгрява.

На следващата сутрин реши да провери голям сайт, аз знам, че използва плъгин ми. Няма заместител за тестване на реалния свят. Да, всичко изглежда добре. В този момент забелязах пост в карта на сайта, който изглеждаше интересна. Аз кликнали върху връзката категорията, и бе представен с първия пост в категорията и тогава голям гаден съобщение PHP грешка. Ммм. Аз погледнах в друг голям сайт. Ммм. Може би е случайно. Нека разгледаме още един. О, не!

И така, какво се обърка? Не забравяйте, че функция на детето? Чувал съм го каза, че децата може да бъде злото и се оказа, за да е истина в този случай. Ако се показва страница, блог страница категория, страница тагове или дори на начална страница, няколко длъжности са показани на една страница. WordPress прави това, като се преструва, че всеки пост е мини-страница и връзки на всички мини-страници заедно, за да образуват една голяма страница. Това означава, че родителите ми функция се нарича многократно. Обикновено не е проблем. Но сега, тъй като функцията съдържа детска функции, тези функции на дете се създават всеки път, когато майка функция се нарича (дори ако те не се използват). Ето защо, когато след втория пост се показва страницата катастрофи с дубликат на съобщение за грешка на името на функцията. Нето Резултатът е, че малък бъг в привидно несвързани функция, причинени няколко много големи уеб сайтове, за да слезеш надолу.

Морала на историята: ако вие сте администратора на сайта, уверете се, пуснете пълния пакет от тестове след всеки плъгин за актуализация, без значение колко големи или малки, че плъгин може да бъде.


SpinChimp Leaderboard 728x90