Записки на лету

21-го марта прошла встреча клуба директоров по разработке, членом которого я являюсь с недавних пор.

Для меня это была первая встреча и тема встречи была ROI: Исследование эффективности внедрения инструментария ALM.
Встреча организовывалась компанией Microsoft и проходила на территории офиса компании в очень интересном формате. За основу была взята презентация подготовленная заранее организаторами, но, время от времени, выходил кто-то из аудитории, кто хотел поделиться опытом, и рассказывал, показывал и т.д. Все это сопровождалось бурными дискуссиями. И презентация из 13 слайдов растянулась часа на два и потом продолжилась за ужином.

Отличное мероприятие, очень приятные и интересные люди, было и о чем поговорить и с кем.

ChiefInDevLogo

Обновился портал для разработчиков MS Dynamics CRM, поменяли дизайн на «Метро» естественно, но вот на счет наполнения не очень уверен.
Но, по крайней мере, сейчас найти на нем что-то стало легче.

http://msdn.microsoft.com/en-us/dynamics/crm/

NewCRMDevCenter

Ищем консультанта/аналитика по MS Dynamics CRM 2011.

Вакансия здесь Аналитик (MS Dynamics CRM).

Кому интересно откликивайтесь на вакансию или пишите мне.

Вышел накопительный пакет обновлений №13 (KB 2791312) для Microsoft Dynamics CRM 2011.
Скачать можно здесь http://www.microsoft.com/ru-ru/download/details.aspx?id=37133.

Добавлена поддержка Windows Server 2012 и AD FS 2.1., подробнее здесь Microsoft Dynamics CRM Compatibility List .

Инструкции по обновлению: How to upgrade a Microsoft Dynamics CRM Server application to Windows Server 2012.

Модуль создания отчетов Microsoft Dynamics CRM 2011 теперь поддерживает Microsoft SQL Server Data Tools и Visual Studio 2010.

Добавлена браузерная совместимость для Firefox, Chrome и Safari но, по-моему,  это уже было в UR12 v.2, на всякий случай добавлю табличку.

 

Платформа Internet Explorer Firefox Chrome Safari
Windows XP Version 7* Посл. версия Посл. версия Не поддерживается
Windows Vista Version 8 and 9 Посл. версия Посл. версия Не поддерживается
Windows 7 Version 8, 9, and 10 Посл. версия Посл. версия Не поддерживается
Windows 8 Version 10 for the desktop** Посл. версия Посл. версия Не поддерживается
Apple OS X 10.7 (Lion) Не поддерживается Не поддерживается Не поддерживается Посл. версия
Apple OS X 10.8 (Mountain Lion) Не поддерживается Не поддерживается Не поддерживается Посл. версия

*IE7 не поддерживается онлайн версией Microsoft Dynamics CRM Online, пользователям Windows XP необходимо обновится до IE8.
**Для IE10 совместимость ограничена  десктоп версией и не поддерживается тач-ориентированная версия.
***Windows RT не поддерживается.

 Так же, обновился SDK до версии 5.0.15, скачать можно здесь http://www.microsoft.com/en-us/download/details.aspx?id=24004

Все начинается с малого, как и скрипты на форме сущности, сначала одна функция, затем еще одна и т.д.

На одном проекте, я помню, дошло до того, что общий размер файлов скриптов пошел на мегабайты и количество функций перевалило за сотню. Все это находилось в разных файлах и писалось разными людьми и в результате всего этого так называемого «Спагетти кода» полезли ошибки, появлялись функции и переменные с одинаковыми именами и т.д.

В общем, хаос рос с объемом кода. 🙂

Чтобы решить эту проблему я задумался, какой же способ организации скриптов, называя более умными словами — паттерн, применить.

Сначала пришла мысль взять так называемый Неймспейс паттерн (Namespace Pattern), который используется, можно сказать, у нас прямо под носом, в примерах SDK.

Выглядит он так:

if (typeof (MYCODE) == "undefined")
{ MYCODE = { __namespace: true }; }
MYCODE.QuoteFormEvents = {
    //Приватные функции
    _doSomethingPrivate: function (param) {

    },
    //Публичные функции
    doSomethingPublic: function (param) {

    },
    __namespace: true
};

Грубо говоря, запихиваем функции в объект, который внутри другого объекта, которые олицетворяют пространства имен. На самом деле, приватные функции все равно доступны, также встает вопрос, где хранить приватные переменные, чтобы они были доступны только для приватных функций.

Для меня ответ пришел, когда я начал разрабатывать приложения для Windows 8 на HTML5 и JScript, а именно начал разбираться, как там принято писать на JScript. Естественно, в этих приложениях очень много скриптов, и также среда исполнения накладывает некоторые ограничения. Так вот, организованы они там по паттерну раскрывающийся модуль, мой вольный перевод — Revealing Module Pattern.

Немного переделанный для использования в CRM он выглядит так:

var QuoteFormEvents = function () {
    //Переменные
    var tempString = "";
    var userId = Xrm.Page.context.getUserId();

    //Функции
    function doSomething() {

    }

    function formOnLoad() {
        doSomething();
    }
    //Объявления
    return {
        UserId: userId,
        FormOnLoad: formOnLoad
    };
}();

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

Если Вы собираетесь написать что-то вроде библиотеки, которая будет использоваться в нескольких местах и для которой понадобится возможность переопределения функций, я бы предложил паттерн раскрывающийся прототип (Revealing Prototype Pattern) как более подходящий.

Про Revealing Module Pattern подробнее здесь: Revealing Module Pattern: Structuring JavaScript Code – Part III

Про Revealing Prototype Pattern подробнее здесь: Revealing Prototype Pattern: Structuring JavaScript Code – Part IV

 

Ричард Кнудсон выпустил виде, где раскрывает что же все-таки нового в 12-м апдейте.

Смотреть здесь Polaris Basics, Polaris Visual Processes и Polaris Session 3

Пару недель назад был приглашен в Клуб директоров по разработке , что, конечно, должно поспособствовать моему развитию в области методологий разработки.
В марте будет встреча, узнаю и расскажу поподробнее. 🙂

ChiefInDev

Также, могу похвастаться публичной ссылкой на свой профиль в клубе.

Вышел обновленный SDK для MS Dynamics CRM SDK версии 5.0.14.

Качать здесь: http://www.microsoft.com/en-us/download/details.aspx?id=24004
Из нового я заметил MS Dynamics CRM Developer Toolkit для 12-й студии, а то как я не пытался поставить тулкит для 10-й на 12-ю, он не ставился а когда поставился, то работать не захотел.

Лежит в папке sdk\tools\developertoolkit\

Полный список обновлений здесь (eng): http://msdn.microsoft.com/en-us/library/jj916625.aspx

Наконец-то в TFS появился более-менее нормальный OData API, который поддерживает достаточно много всего.

Всю информацию смотрите здесь https://tfsodata.visualstudio.com/.

Статья Брайна Келлера Bringing OData to Team Foundation Service.

Уже есть пару приложений для Windows 8 TFS Dashboard и для Windows Phone OData Service for Team Foundation Server v2 Beta.

Наконец-то выложили запись моего первого выступления на конференции ALM Summit 2012. Это, кстати, вообще мое первое выступление.

Я, конечно, здесь больше молчал и показывал а говорил мой коллега Денис Пасечник.

Посмотреть можно здесь http://www.techdays.ru/videos/6377.html