Изпълнение на custom scripts в SharePoint 2013 с включен MDS модул

ВЪВЕДЕНИЕ

SharePoint е практически изграден на базата на JavaScript.
Скриптовият език се използва за всичко – от смяна на видимото съдържание, до най-различни козметични ефекти.
Тъй-като MDS е сложна обвивка(wrapper) около основната част(ядро или core) на SP, писането на JS бива леко усложнено.
Проблемите възникват предимно поради слабата документация около MDS и неговият програмен интерфейс(API).
В тази статия ще ви напиша основните неща, които трябва да се разгледат при писане на JS за SP2013.

КАКВО Е MDS?

Minimal Download Strategy(MDS) е технология, която позволява значително намаляване на трафика,
необходим за изпълнение и визуализация на SharePoint страници. Това става, като се изчислят само
регионите на страницата които имат нужда от обновяване и се зареди информация само за тях.
Например, ако разглеждаме една галерия, няма нужда да се презареждат навигационните бутони и менютата,
а само снимките за различните страници. Това спестява трафик и повишава производителността на сайта.

ПРОБЛЕМИТЕ

MDS работи много добре с настройките и скриптовете, активирани по подразбиране в SP2013.
Какво се случва, ако добавим собствен код?
Ако скриптовете, които се опитваме да изпълним на някоя SP2013 страница, не са пригодени за MDS,
не само, че няма да видим повишение на производителността, но е възможно и тя да намалее.

Има два възможни варианта, когато стане дума за custom скриптове:
1) MDS престава да работи
2) Вашият скрипт не се изпълнява, както сте искали

Всеки front-end developer е виждал скриптове, които се изпълняват при зареждане на страницата.
Това е възможно защото браузърът “хвърля” събитие(DOM Ready), когато приключи със зареждането на HTML кодът
и така, всеки скрипт следящ за това събитие може да се изпълни.
Проблемът при MDS е, че това събитие се изпълнява веднъж – при първоначално зареждане на страницата в браузъра.
При преминаване към всяка следваща страница, се изпълнява JavaScript код, които променя само част от съдържанието
и такова събитие не бива изпълнено от браузъра.

КАК ДА РАЗБЕРЕМ, ЧЕ ИМА ПРОБЛЕМ С MDS

Понякога, като добавим своите скриптове, нормалната работа на MDS бива прекъсната. Най-често това се забелязва, като при сърфиране между страниците се наблюдава “проблясък”, т.е. всяка страница зарежда по два пъти, като първият път тя се зарежда празна.

РЕШЕНИЕ НА ПРОБЛЕМА

Има две неща на които трябва да се обърне специално внимание.

Проблемът с Garbage Collector-ът
Първото, което трябва да се знае, е че MDS има вграден Garbage Collector.
Това е система, която следи и почиства паметта от неизползвани променливи за да предотврати т.н. изтичане на памет(Memory Leak).
При преминаване между страниците, MDS затрива всички ненужни променливи в window областта(scope).
За да избегнем това, трябва да регистрираме скриптовете си, като namespace.
Ако имаме обект “MyObject”, това става по следният начин:

По този начин ние задаваме MyObject като променлива от тип Microsoft Ajax и
указваме на Garbage Collector-ът да не я закача при преминаване между различните страници.

Проблем в изпълнението на MDS
При някои случаи, е възможно MDS да не може да се задейства, след което SharePoint се връща
към стандартно изпълнение на страницата и я презарежда изцяло с изключен MDS. Това увеличава
ресурсите нужни за изпълнение и зареждане на страницата, понеже тя практически се изпълнява
два пъти – веднъж с включен MDS и веднъж с изключен. Възможните причини за това са колизии(collisions)
или неправилно променени SP2013 файлове(например добавен код в master файлове).
За да се избегнат колизиите, винаги обвивайте скриптовете си в обекти(ако е нужно и анонимни функции)
с уникални имена, такива че да няма възможност те да презаписват обект по подразбиране в SP2013.
Относно промяната на стокови SP файлове – някои ще каже “да ама, няма как да не ги променяме – нали трябва
да включим собствените си скриптове в страницата”. Наистина е така, но трябва да се следи за изпълнението на някои правила.
Аз препоръчвам включването на скриптове да става динамично със скрипт написан и добавен в init.js
init.js се изпълнява на всяка страница, както master файловете, но не пречи на MDS затова е идеално място за поставяне на кода.
Примерен JS код:

Ако все пак се наложи да добави скриптът си използвайки master файловете, ползвайте следният код:

ИЗПЪЛНЕНИЕ ПРИ ВКЛЮЧЕН MDS
Ако сте изпълнили написаното по-горе, значи сте свършили половината работа, за да накарате скриптовете си да работят с MDS.
Това, което направихме до сега ни дава основа за работа, но остава още едно нещо – да зададем на кодът си, че трябва да се изпълни при смяна на страницата.
Как става това?
Когато страниците се сменят, MDS презарежда част от съдържанието, след което start.js хвърля събитие, че свичко е говото.
За да се абонираме за това събитие, разработчиците от Microsoft са създали специална функция – ExecuteOrDelayUntilScriptLoaded
Ето и примерен код как се използва тя:

Този код, казва на ядрото да изпълни функцията MyCustomFunction, като start.js приключи зареждането на страницата.

ЗАКЛЮЧЕНИЕ
Тази статия ви показа, как да настроите собственият си JavaScript код, така че да работи с нововъведената
функция в SharePoint 2013 – Minimal Download Strategy.
Намирането на тази информация беше трудно и ми отне значително време, затова се надявам да го спестя някому.

Източник:
http://www.wictorwilen.se/the-correct-way-to-execute-javascript-functions-in-sharepoint-2013-mds-enabled-sites
http://stackoverflow.com/questions/2506021/register-include-javascript-within-renderingtemplate

Какъв е смисълът да си правим Counter-Strike сайт и да пускаме сървъри?

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

Разбира се, ако имате сървър, винаги може да помолите, някоя от големите вериги сървъри да ви заемат името и потребителите си, като хоствате за тях. Така почти всичко ви идва на готово.
прочети още…

Торентите и филмите

Някога чудили ли сте се защо по торентите един филм се появява по няколко пъти и всеки път в името му има най-различни допълнителни думи? Е тази публикация има за цел да обясни защо се получава така.

Освен името на филма, често се пише под какъв формат е качен в интернет и групата, която го е “издала”.
Следва обяснение на форматите:

  • CAM – Запис с видеокамера от киносалон. Качеството на картината обикновено е добро, но звукът най-често е изключително лош и речта е трудно разбираема.
  • Telesync (TS) – Запис от киносалон със скъпа видеокамера и със звук, получен от различен източник (така че публиката да не се чува). Отличават се с много добро качество и стават за гледане.
  • Telecine (TC) – Осъществяват се по няколко начина, но всички чрез снемане от кинолентата. Рипват се в широкоекранен (letterbox) или пълноекранен (pan and scan) формат с отличен звук и картина. Най-разпространеният начин за създаването им е като се включи устройство към киномашината, което сваля продукцията на VHS лента (наричат се telecine устройства, нo има и такива, които генерират изходните данни в цифров формат и след това се вкарват в лаптоп или видеокасетофон за да се получат VCD-та).
  • Screener (SCR) – Скрийнъри. Записват от промоционални видеокасети, които се разпращат на цензуриращи екипи, филмови критици и др. Качеството обикновено е като на нормалното пазарно копие, с изключение на това, че може да се появяват съобщения за запазени права по време на филма, черно-бели отрязъци, моментна липса на звук и др.
  • DVD-Screener (DVDscr) – Подобно на SCREENER, но оригиналът е DVD. Обикновено форматът на картината е широкоекранен, но липсват допълнителните материали и екстри, които пазарното копие би съдържало.
  • DVDRip/LD – Запис от DVD или Laserdisc версии на филм, с максимално добро качество.
  • VHSRip – Записи от видеокасета. Използва се предимно за разпространение на спортни и XXX продукции.
  • Workprint (WP) – Всеки кадър от филма е снет от целулоидния (или друг) източник. Това обикновено са непълни варианти на филми. Звукът може да е перфектен, а качеството на картината варира. Рядко срещани.
    High Definition Digital Television (HDTV) – Записи от цифров източник – 720p (60 fps) или 1080i (30 fps).
  • Pure/Pirated Digital Television (PDTV) – Записи, извличани директно от цифров поток на предаване чрез DVB-{S,T} или HDTV карта. Включват и всички цифрови записи, които не са в HDTV формат.
  • TVRip – Записи от аналогов телевизионен източник или от цифров с междинно аналогово преобразуване, например цифров (аналогов) сателитен (телевизионен) приемник със S-Video изход към TV-Tuner Capture карта.
  • DivX/XviD Re-Enc – Преенкоднат запис с по-малък обем (200-300MB), направен от друг DivX/XviD с по-високо качество. Не се препоръчват за сваляне, освен с цел информативен преглед на даден филм.
  • Asian Silvers/PDVD – “Азиатски станиоли” – копия на филми, които никога не са издавани или са предпродукция. PDVD е същото нещо, но с DVD източник.
  • Subbed – Запис с вградени субтитри, най-често на един език и доста малки. В други случаи обаче, има на 2 или повече езика, които заемат голяма част от картината.
  • Watermarks – Записи със символи (BD, A, Z и др.), вградени във филма. Обикновено вградени от хората, които са направили записа.
  • Straight To Video (STV) – Филми, без кинопремиера (дори кинопрожекции), разпространени направо върху носители за домашно видео.

За групите, мисля че няма смисъл да пиша, защото те са прекалено много, за да бъдат изброени.
Ако видите някоя дума, която не е изброена в горния списък, това най-вероятно е името на екипа, който е създал и пуснал филма в дадения му формат.

Скорост и Красота

Преди малко си сложих тема за Уиндоус XP/2003/NT която наподобява интерфейса на Виста.
Въпреки многото слухове които вървят, че допълнителните теми само товарят излишно компютъра изглежда няма никакво видимо забавяне. Някой програми(като Firefox, Internet Explorer, Skype) дори зареждат по-бързо от преди. За изгледа няма какво да ви говоря, а просто ще ви покажа:
vista-inspiration
vista-inspiration
vista-inspiration

За да видите още снимки и да изтеглите темата натиснете тук.