среда, 24 октября 2012 г.

Вызов веб-сервиса без кода: DataFormWebPart!

No-code решения – очень полезны и нужны. Часто их использовать проще и правильнее, чем писать серверный код. А иногда, без них просто не обойтись: например, если портал хостится в облаке и нужно пройти 10 инстанций и ревью, чтобы что-то серьезное туда задеплоить. Я лично столкнулся с такой ситуацией на работе, в связи с чем и родился этот пост.
В общем-то, скажете вы, веб-сервис дернуть ведь проблемы нет, берешь jQuery (или например уже заточенные под это SPServices) и дергаешь… К сожалению, не всегда всё так просто. Например, что если веб-сервис требует авторизацию (а пароли на клиенте хранить ну уж никак нельзя, согласитесь), или же доступ к веб-сервису ограничен и он доступен только для определенных IP-адресов (т.е. принципиально возможен только server-side вызов). А бывает и так, что даже стандартные веб-сервисы SharePoint из _vti_bin недоступны извне (их часто блокируют). Что делать в этом случае?

четверг, 27 сентября 2012 г.

Сменил работу

Множество интересных событий произошло у меня за последние пару месяцев, много накопилось интересных постов про SharePoint, но к сожалению, не хватает времени толком писать в блог (надеюсь исправлюсь в какое-то более-менее ближайшее время).

И всё потому, что сменил работу! :) Теперь работаю в Хельсинки, на должности Senior SharePoint Consultant в компании NED Software Consulting Oy. Подробно о впечатлениях от жизни и работы в Финляндии пишу в Facebook.

 

image

понедельник, 20 августа 2012 г.

Callouts (popovers) в SharePoint 2013 Preview

В прошлую пятницу читал в своем отделе доклад по юзабилити, и среди прочего рассказывал об элементе интерфейса под названием “popover” (терминология Apple), еще называемом “callout” (терминология MS). Далее по тексту я буду использовать терминологию Microsoft, хотя хочется отметить, что у Apple popover’ы описаны и проработаны намного лучше.

Если вкратце, callout очень похож на “раздутый” tooltip, только еще обязательно включает “стрелку”, указывающую на вызвавший callout-элемент. Callout может содержать не только текст и иконки, но вообще говоря почти любые контролы – ссылки, edit box’ы, и т.д.

Callout’ы на сегодня используются всеми мировыми софтверными лидерами – Google, MS, Apple, ну и в мелких проектах конечно тоже. Очень хороший пример грамотного и удобного callout’а – кнопка +1 от Google+:

image

Callout может вызываться по щелчку или при наведении курсора на исходный элемент, и закрывается при щелчке на любом месте приложения вне пределов самого callout’а. Поведение и внешний вид callout’ов на самом деле слегка варьируются от вендора к вендору, например, согласно UX Guidelines от Apple, их popover’ы не должны содержать закрывающего крестика, а вот в callout’ах MS и Google это не запрещено и зависит от контекста. Поскольку мы с вами пишем под SharePoint, рекомендую пользоваться именно MS-овскими соглашениями и рекомендациями.

Callout’ы – это сравнительно новый элемент интерфейса для Microsoft, но они уже используются как минимум в Office 2013 Preview. Например, в новом Outlook с помощью callout’ов реализован своеобразный preview вкладок:

image

Также callout’ы используются и в других приложениях офиса, в том числе и в SharePoint! Например, callout’ы используются вместо обычных контекстных меню в Picture Library:

callouts

Другой пример – страница All Site Content, где с помощью callout’ов контекстное меню совмещено с подробным описанием элемента:

image

И это очень очень классно, потому что это означает, что мы тоже сможем использовать такие callout’ы в своих решениях, причем не прилагая никаких особых усилий: ведь всё уже написано за нас.

Однако, сразу же хочется предупредить: как и с любыми другими “новомодными” фишками, с callout’ами важно не переборщить. Традиционно они используются, когда необходимо спрятать сравнительно редкоиспользуемую часть интерфейса со страницы. Но эта часть интерфейса должна быть небольшой: гигантские callout’ы недопустимы. К тому же, нельзя отображать больше одного callout’а на странице, и также нельзя их вкладывать друг в друга. Эти правила я вычитал в Guidelines компании Apple, и похоже они соблюдаются неукоснительно и Google’ом, и MS.

Но вернемся к SharePoint! Быстрое исследование показало, что callout’ы реализованы с помощью скрипта callout.js, который загружается через механизм Script-On-Demand (SOD). Исследовав файл callout.debug.js в 15\TEMPLATE\LAYOUTS, я обнаружил, что он создает глобальный объект calloutManager, с помощью которого реализуется очень удобный интерфейс по управлению callout'ами.

image

Этот скриншот показывает наличие очень интересных методов – таких как getFromLaunchPoint и createNewIfNecessary. Т.е. объект calloutManager по сути берет на себя даже трекинг созданных callout’ов, что безусловно очень удобно, т.к. открывать несколько callout’ов одновременно запрещено

В общем, уже через пару минут мне удалось отобразить свой первый callout:

image

Код для этого получился очень простой:

myCustomCallout = calloutManager.createNewIfNecessary({
ID:
'myCallout1',
title:
'Hello world!',
content:
'Please, click <a href="http://google.com">here</a>.',
launchPoint: $get(
'ctl00_DeltaPlaceHolderPageTitleInTitleArea')
});
myCustomCallout.open();

Параметр launchPoint должен ссылаться на DOM-объект, рядом с которым планируется вывести callout. ID – произвольный уникальный идентификатор для вашего callout’а. Кстати, помимо перечисленных выше, есть и другие интересные параметры – например, можно задать, с какой стороны выводить callout, отображать или нет закрывающий крестик и т.д.


К сожалению, для SharePoint 2010 мне пока не удалось адаптировать этот скрипт: у него довольно много зависимостей. Но в любом случае, думаю этот пост поможет вам сделать ваши интерфейсы для нового SharePoint более современными и удобными.


За сим, желаю удачи!

четверг, 26 июля 2012 г.

Обзор приемов работы с Site Pages

В одном из недавних постов я рассказал, почему я предпочитаю использовать Site Pages вместо Application Pages. Одна из важных мыслей в той статье касалась того, что для эффективного создания решений на основе Site Pages, нужно научиться по-другому думать и использовать совершенно другие блоки и инструменты.

Сегодня я хочу рассказать, какие существуют приемы разработки на основе Site Pages. Какие имеющиеся в SharePoint инструменты можно использовать, и как с их помощью можно очень быстро создавать гибкие и прекрасно кастомизируемые решения. Будет также реальный пример, как можно за 5 минут разбить поля на форме списка на вкладки.

А в свете выхода SharePoint 2013, ориентация на Site Pages особенно важна: ведь например возможности разрабатывать Application Pages в новых SharePoint Apps просто не существует…

Ну что ж, давайте начнем!

среда, 25 июля 2012 г.

Apps в SharePoint 2013

Apps – это, наверное, наиболее революционное изменение в SharePoint 2013 по сравнению с 2010й версией. В этой статье мне хочется рассказать, почему про Apps нужно узнать уже сейчас, ну и, конечно, что это вообще такое.

понедельник, 23 июля 2012 г.

Списки в SharePoint 2013 Preview

Выход SharePoint 2013 Preview, откровенно говоря, существенно сбил планы моих следующих публикаций, где мне хотелось побольше рассказать о разработке на основе Site Pages, развивая тему, начатую в посте Site Pages vs Application Pages. С этим направлением, однако, придется на какое-то время распрощаться, уступив место нескольким статьям по новому SharePoint’у :)

Итак, уже прошла целая неделя с момента выхода Preview, на сайтах TechNet и MSDN опубликована гора статей и видеоуроков, да и в сети уже появились очень интересные посты про SharePoint 2013 и некоторые наиболее революционные его фичи... Несмотря на всё это, как минимум судя по моим коллегам и знакомым, далеко не все бросились сломя голову ставить SharePoint 2013 и изучать, что же там нового. И даже если кто-то SharePoint 2013 поставил — дальше чем немного походить по сайту, дело скорее всего не зашло.

image

И это наверное даже не очень удивительно. Спектр нововведений 2013-й версии SharePoint очень велик: не знаешь, с чего начать изучение. Наверняка в какое-то ближайшее время выйдет книга, освещающая все нововведения, потому что в одном посте или даже в серии постов, как следует описать всё новое возможным не представляется.

И всё-таки, я постараюсь немного пролить света на SharePoint 2013, и зарядить вас, уважаемые читатели, на дальнейшие самостоятельные исследования. Как всегда, буду стараться копнуть немного глубже, чем написано везде, написать о том о чем другие написать забыли, ну и заодно прибавить собственных мыслей и рассуждений по теме. Начать хочется со списков — всё-таки, списки это фундаментальный артефакт SharePoint, и любые изменения в списках значительно влияют на весь процесс разработки.

четверг, 28 июня 2012 г.

Как скрывать Ribbon в SharePoint

Казалось бы, делов-то семечки: #s4-ribbonrow { display: none; }, и вуаля. Согласен, можно и так. Но есть нюансы!

Во-первых, способов скрывать Ribbon – далеко не один. А в SharePoint, если есть несколько способов что-то сделать, скорее всего чем-то эти способы отличаются. И в одних ситуациях можно применять, в других нет.

Во-вторых, если скрывать через css как было обозначено выше, перестают работать статусы (SP.UI.Status) и оповещения (SP.UI.Notify). В общем, не всё так просто!

среда, 27 июня 2012 г.

Site Pages vs Application Pages

Еще буквально полгода назад я почти не задумываясь создавал Application Pages под каждый чих и был этим вполне счастлив. А что, пользоваться ими просто и привычно: это суть обычные ASP.Net страницы с обычным CodeBehind, и любой ASP.Net-чик чувствует себя с ними как дома.

Однако сейчас, я почти все формы, и даже странички настроек, создаю на основе Site Pages. И этому есть очень серьезные причины.

Чтобы понять, как я к такому пришел, нужно понять, чем Site Pages отличаются от Application Pages.

вторник, 26 июня 2012 г.

SharePoint и XSLT: область ссылок «быстрого доступа»

Возвращаюсь к серии статей про SharePoint и XSLT.

Все вы помните ссылку «Добавить новый элемент» внизу представлений списков SharePoint:

image

В связи с наличием этой ссылки возникает два естественных вопроса:
  1. Как поменять текст этой ссылки? (например вместо “Добавить новый элемент”, я хочу текст “Добавить товар” или “Добавить продукт” и т.д.)
  2. Как добавить еще пару ссылок рядом со ссылкой для создания нового элемента?
В последнее время я очень часто и текст ссылки меняю, и другие ссылки добавляю к ней. Такие представления начинают смотреться гораздо приятнее и дружественнее пользователю.

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

image

, где ссылка Configure application route открывает редактор маршрута заявки (т.е. можно определить, кто и в каком порядке должен одобрять эту заявку).

В этой статье я расскажу, как реализовать такие изменения. Рассмотрим два способа:
  1. no-code — для частных решений, быстрых правок и кастомизаций Office365
  2. программно – что может потребоваться для создания коробочных решений

понедельник, 25 июня 2012 г.

«Вы уверены?» Confirmation-диалоги в SharePoint

Конечно, чаще всего обычного JavaScript’ового confirm’а вполне достаточно. Однако, иногда хочется показать более красивый диалог, предложить другие варианты выбора, добавить иллюстрацию или параграфы в текст... Многие для такой задачи используют jQuery UI, jQuery плагины или сторонние JS-библиотеки, но мне кажется, этого делать не стоит: в SharePoint’е уже есть диалоги, они прекрасно вписываются в общий дизайн и предоставляют массу настроек. Мне кажется, нет ни одной причины, чтобы их не использовать.

image

Ниже я представлю код класса Dialog, который позволяет легко отображать подобные диалоги, и выполнять какие-нибудь действия в случае, если пользовать нажал «Да». Пользоваться классом предельно просто:

My.Dialog.confirm(
'Вы уверены?',
'Вы уверены, что хотите отменить процесс подписи?',
function () {
alert(
'Пользователь нажал "Да"!');
});

При этом не потребуется создавать отдельную aspx-страницу: SharePoint’овские модальные диалоги имеют режим, в котором они создаются полностью динамически.


воскресенье, 24 июня 2012 г.

Про Twitter и Google+

Далеко не всё, что я делаю, попадает в блог.

Есть некоторые статьи на английском, есть OpenSource-проекты на Codeplex, есть ответы на вопросы на SharePoint StackExchange (и нередко эти ответы по размеру — как небольшая статья), есть какие-то мелкие заметки, недостойные блога. Есть просто интересные исследования, подсказки и ссылки на ресурсы...

Например, в блоге не публиковалась информация о моей статье в MSDN Magazine, которая вышла в мартовском номере и доступна для прочтения онлайн. Статья называется Adding HTML5 Drag and Drop to SharePoint Lists, и повествует о том, как с помощью XsltListViewWebPart и небольшого количества JavaScript-кода можно интегрировать HTML5 drag-n-drop в списки SharePoint. В частности, в статье объясняется, как реализовать назначение задачи на разных исполнителей путем перетаскивания имен исполнителей в поле «Assigned To»:

clip1

Другой пример — пост с «разоблачением» назначения хитрого свойства BaseViewID, которое присутствует у любого объекта SPView, но про которое практически ничего нет в интернете. Этот пост был опубликован в виде ответа на SharePoint StackExchange.

В общем, мне кажется, если вам нравятся посты в этом блоге, скорее всего вам понравится и всё остальное.

Поэтому, рекомендую подписаться на мой Twitter и/или Google+, если еще не подписаны. Кстати, я не любитель повторяться, поэтому чаще всего Twitter и Google+ содержат разный материал.

В Twitter’е постятся ссылки на интересные статьи, небольшие подсказки (tip’ы) про SharePoint, ссылки на наиболее полезные из моих ответов на SharePoint StackExchange, ссылки на мои англоязычные статьи, информация по OpenSource-проектам и др. В Twitter’е почти не бывает сообщений на русском. Подписывайтесь: @amarkeev.

В Google+ постятся некоторые дискуссионные вопросы/материалы/ссылки, ссылки на русскоязычные и англоязычные мои творения, и некоторые другие вещи. Подписывайтесь: gplus.to/omlin

пятница, 15 июня 2012 г.

JavaScript ToolTip’ы для SharePoint

У вас есть некоторая страница, и вам нужно показать всплывающую при наведении на некий элемент. Как вы это сделаете?
Мне кажется, абсолютное большинство - пойдет в Google и напишет что-нибудь типа “jQuery tooltip”.
Когда я лично сталкиваюсь с такими задачами, я всегда первым делом стараюсь вспомнить, где я видел всплывающие подсказки в SharePoint? И на ум сразу же приходит Ribbon!
image
Причем, подсказки на Ribbon могут выглядеть даже еще красивее:
image
Возникает естественный вопрос: почему бы не использовать такие же всплывающие подсказки в своих собственных решениях? Это знакомый пользователям интерфейс, который отлично сочетается с общим дизайном портала. Да и вообще, эти подсказки действительно красивые.
Мне удалось это сделать, и получить вот такие всплывающие подсказки на моих собственных страницах:
image
Ниже я расскажу, как этого можно добиться.

среда, 30 мая 2012 г.

Реализация паттерна UniqueURLs в SharePoint

На своем докладе на MsDevCon’12 я рассказывал о нескольких паттернах, и в частности — о паттерне Unique URLs. Также, я показывал, как этот паттерн работает на реальном примере – созданном мной Ajax-дашбоарде. Этот паттерн крайне актуален для Ajax-приложений, и строится вокруг следующего утверждения:
У каждого состояния страницы должен быть уникальный адрес
Это означает, что когда вы нажимаете на некой странице на кнопку или ссылку, и состояние (внешний вид) страницы меняется (неважно, был ли это postback или callback) — то у этой страницы должен измениться и адрес (т.е. текст в строке браузера):

image
Если каждый раз адрес менять не получается (например, в случае карт), то нужно предусмотреть кнопку «Получить ссылку» или что-то в этом духе.

Естественно, что если другой пользователь, или этот же, но позже — переходит по ранее запомненному уникальному адресу, то состояние страницы должно восстановиться:

image
Надеюсь, задача понятна, а теперь давайте рассмотрим реализацию, и некоторые тонкости при реализации этого паттерна в SharePoint.

вторник, 29 мая 2012 г.

PowerShell-скрипт для генерации задач

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

понедельник, 28 мая 2012 г.

Русскоязычные SharePoint-блоггеры

К сожалению, людей, хорошо пишущих про SharePoint на русском языке — единицы. Под «хорошо» я имею в виду уникальный, интересный контент, грамотно оформленный и представляющий практическую ценность. Впрочем, несколько человек всё-таки есть, и сегодня мне хочется о них рассказать и обратить на них внимание общественности, потому что, к сожалению, нередко эти блоги далеко не настолько популярны, насколько они этого заслуживают (возможно, причина в том, что многие SharePoint-разработчики свои запросы в гугле набирают исключительно по-английски?...).

Итак, поехали...

воскресенье, 27 мая 2012 г.

Генерация JS из C# с помощью T4

В Ajax-приложениях данные передаются между клиентской и серверной стороной. Естественно, что структуру этих данных необходимо знать и на клиенте, и на сервере. Обычно это означает ведение одних и тех же классов, интерфейсов и перечислений и в виде JS-файлов, и в виде C#-файлов. Это лишняя работа, неудобно и вообще опасно.

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

Чтобы избавиться от такого рода ошибок и от лишней работы, я использую T4-преобразования, и генерирую JS-файлы на основе C#. В этой статье я расскажу, как такие преобразования устроены и работают. В конце статьи выложен код итогового T4-преобразования, которое можно скачать и использовать в ваших собственных проектах без изменений. Итак, поехали!

пятница, 25 мая 2012 г.

Разработка больших JavaScript-решений: 1 файл = 1 класс

В наши дни JavaScript-кода писать приходится все больше и больше. Единственный способ справляться с большим количеством кода – это разбивать его, структурировать, дробить на небольшие и понятные кусочки. Я лично в этом отношении использую два простых правила:
  1. 1 класс = 1 файл
  2. В 1 файле – не более 300 строк
Эти правила отлично работают и для серверного кода, и для клиентского. Но если серверный код автоматически, средствами Visual Studio, компилируется в единственный dll-файл, то JavaScript приходится склеивать в один кусок “вручную”.

В этом посте я хочу рассказать, как это можно сделать.

Впечатления от MsDevCon’12 и пара интересностей о SharePoint

Вернулся с конференции MsDevCon, море впечатлений и эмоций, спешу поделиться!

Я на конференции

Напомню, я участвовал в конференции как докладчик, читал доклад “Разработка Ajax-приложений в SharePoint”. Видео докладов организаторы планируют выложить не раньше чем через неделю, так что если кто-то пропустил, придется ждать :(

image
В любом случае, как я и обещал на докладе, я уже опубликовал два сопутствующих поста к докладу:
  1. Как я реализовал склеивание и минификацию js-файлов
  2. Как реализовать автогенерацию JavaScript-классов модели на основе C#-классов, с помощью T4-преобразований

Место проведения – "Яхонты"

Качество сервиса было на самом деле просто шикарным. Организация тоже в принципе на высоте (единственный наверное недочет, это то что зона экспертов никак не была обозначена – ни на плане, ни указателями, ни вывеской). Ощущение, что съездил не просто на конференцию, но съездил отдохнуть в отпуск, и вдобавок еще и на очень классную конференцию попал :) Природа, свежий воздух, кормежка “на убой”, шикарные условия размещения. Причем, это впечатление не могла испортить даже довольно прохладная погода. И кстати, несмотря на то, что кто-то боялся комаров, комаров было на самом деле не так много, и они были не слишком навязчивыми.


Отдельно про официантов: официанты были просто бесподобны! :) Представьте себе гризли-подобного мужика, с руками толщиной в две обычных, и ростом под два метра. А теперь представьте его одетым в ливрею официанта :) Это было очень забавно! :)

Хансельман

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

Хансельман (Scott Hanselman) – это один из самых выдающихся IT-докладчиков на сегодняшний день. Если вы еще не смотрели ВСЕ его доклады, очень рекомендую! Даже если вы не узнаете ничего нового (что невероятно, потому что Скотт очень любит собирать маленькие фишки о которых никто не знает), всегда стоит посмотреть Хансельмана. Это человек-театр, это зрелище которое просто нельзя пропускать.

Более того, нам удалось пообщаться со Скоттом вживую (!!). На фотографии Стас Выщепан, я и Скотт:


Очень общительный человек, Скотт бродил среди участников и среди экспертов в перерывах между докладами, и с удовольствием вступал в любые дискуссии и отвечал на любые вопросы. Всегда старался помочь, в частности мне удалось обратить его внимание на проблему со Script# в SharePoint.

Наверное хотя бы некоторые из вас знают, что SharePoint Client Object Model написан на Script#? Возможно, кто-то из вас также пробовал писать на Script# самостоятельно, и знают, чего это стоит, написать wrapper для какой-нибудь более-менее серьезной библиотеки? Возникает естественный вопрос, а что мешает Microsoft’у частично открыть исходники SharePoint ClientOM (для создания wrapper’а Script# не требуется реализация, только определения методов/классов/свойств и т.д.), сделав тех, кому нравится Script#, ну ОЧЕНЬ счастливыми? :)

Такой вопрос мы задали Скотту, и после того как он понял проблему, он тут же написал создателю Script#, которого зовут Nikhil Kothari. Я искренне надеюсь, что у этого обращения будут какие-то результаты, потому что те, кто хоть раз использовал Script# – знают, насколько это классный инструмент, и насколько проще с его помощью писать серьезные JavaScript-приложения.

Также, мы говорили со Скоттом о KnockOut. У меня есть некоторый опыт практической работы с KnockOut.js в SharePoint, и недавно я даже делал в Softline внутренний доклад “KnockOutJs в SharePoint”. На докладе я озвучивал проблему с атрибутом data-bind, с которой столкнулся самолично. Этот атрибут, как известно, очень хитрый. Он может содержать простые биндинги, а может целые выражения. Сделать ошибку в этом атрибуте ничего не мешает: значение атрибута является не более чем строкой, и сообщения об ошибках далеко не всегда внятные. Более того, поскольку биндингов очень много разных, и далеко не все из них сразу срабатывают, то мы можем вообще не получить никакого сообщения об ошибке и ошибочный вариант может запросто уйти на продакшен. А когда ошибка просачивается к клиентам, это уж совсем ужасно…

Ответ Скотта состоял из двух пунктов:
  1. Microsoft не собирается делать интеллисенс или пре-компилятор для KnockOutJs или для других OpenSource-проектов, даже несмотря на то, что сейчас KnockOutJs поставляется вместе с ASP.Net MVC 4. Причина проста: это очень дорого и это очень сложно. В этом я со Скоттом полностью согласен: в свое время я писал интеллисенс для LUA, и сложилось впечатление, что это даже сложнее, чем написать с нуля компилятор LUA…
  2. Как вариант решения проблемы, Скотт предложил написать расширение для Visual Studio, которое бы добавляло подсветку внутрь аттрибута data-bind. Причем он показал, что подобные расширения действительно можно написать, в качестве примера приведя Colorizer для Mustache Templating Engine, который был написан вроде как всего за одну ночь создателем этого движка, человеком по имени Mads Kristensen. Более подробно об этом можно почитать у Скотта в блоге. Подсветка Mustache-кода (с помощью vsix-расширения) выглядит вот так (картинка заимствована из блога Скотта):
A nice subtle mustache template
По-моему, решение весьма достойное (как минимум, “it sucks less”, как говорит Скотт :)…), и по наличии времени, я обязательно попробую разобраться, как это делается. Все-таки, в некоторых разрезах, KnockOutJs сделан очень удачно, и существует много ситуаций, когда его применение значительно облегчает жизнь разработчику.

На этом, пожалуй, всё, всем желаю удачных надвигающихся выходных, и да.. MsDevCon’12 был супер!

вторник, 10 апреля 2012 г.

HTML5 и SharePoint

Провожу серию докладов в своем отделе. Чтобы определить самые интересные для коллег темы докладов, мы провели анонимное голосование:


Результаты оказались довольно неожиданными для меня: со значительным отрывом победила тема "Общие сведения по HTML5 и CSS3". В сочетании с другими предлагавшимися темами, получилось, что 34% всех голосов были за HTML5.

Поэтому, первым докладом в серии стал доклад "SharePoint и HTML5". Значительная часть доклада посвящена общему описанию: что такое HTML5, почему он вдруг потребовался, и какие основные возможности включает.

Также, чтобы увеличить ценность доклада, при описании возможностей HTML5 я рассказываю о своем реальном опыте применения этих возможностей, и особенно об опыте применения HTML5 в SharePoint.

Не смею больше томить, вот собственно доклад:

среда, 15 февраля 2012 г.

Scrum в команде SharePoint

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


На самом деле, вот еще буквально полгода назад я думал что Scrum в команде, которая делает SharePoint, не очень актуален. Я считал, что из-за особенностей разработки под SharePoint, из-за того что мы фактически пишем кучу слабосвязанных плагинов, а не цельный продукт - командная разработка привносит больше вреда, чем пользы: это происходит из-за оверхеда на общение и организационные процедуры, которые вроде как никому особо и не нужны, т.к. каждый занят своим модулем и в чужие дела не лезет.

Как вы уже наверное догадались, я ошибался. Причем, сильно ошибался...

среда, 8 февраля 2012 г.

Генерация большого числа записей в список SharePoint

Генерация записей в список - это довольно частая задача, пригодится не только тестировщикам, но и программистам - всегда интересно проверить на практике ограничения списков, и насколько будет тормозить выборка/вставка/обработка данных при стольких-то записях в списке.

Поэтому неплохо это уметь, а не уповать "на авось", тем более что делается это очень просто с помощью довольно короткого PowerShell-скрипта. У меня давно уже валяется такой скрипт, который использую лично я, вот решил поделиться :)