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

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

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

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

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

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

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