Блог Сергея Байдачного

Мой блог о технологиях

Archive for Февраль 2011

Бесплатный ваучер для участников DreamSpark

with one comment

Только до 30 июня 2011, все студенты смогут получить ваучер на сдачу сертификационного экзамена Microsoft, бесплатно! Для того чтобы получить ваучер, необходимо зарегистрироваться в программе DreamSpark (http://dreamspark.com) и перейти по следующей ссылке https://www.dreamspark.com/products/Product.aspx?ProductId=24.

Регистрацию в программе DreamSpark можно выполнить с помощью карточки ISIC или с помощью специального кода (подтверждающего то, что Вы студент). Специальный код можно получить по адресу Sergiy.Baydachnyy@microsoft.com, прислав копию студенческого.

Получив бесплатный ваучер, Вы можете обратиться в один из авторизованных центров сертификации Prometric, которые можно найти по ссылке http://prometric.com/microsoft.

Рекомендация! Прежде чем заказывать экзамен, созвонитесь с Вашим Prometric центром. Если Вы имеете проблемы с регистрацией, сообщите нам по адресу Sergiy.Baydachnyy@microsoft.com.

Реклама

Written by Sergiy Baydachnyy

23.02.2011 at 08:06

Опубликовано в Microsoft

Tagged with

Использование WebMatrix: Переменные, условия, циклы

leave a comment »

Итак, чтобы приступить к разбору работы с конкретными объектами и описанию Helpers, рассмотрим сначала основы синтаксиса ASP.NET Razor.

Во втором посте о WebMatrix я уже писал о том, как выполнять вставки серверного кода и как «подмешивать» в серверный код HTML. Поэтому не буду повторяться, а перейду к механизму определения переменных.

Определение переменных.

Определение переменных в Razor синтаксисе очень похоже на определение переменных в C#. Достаточно указать тип переменной (int, DateTime, double, bool и т. д.) и имя переменной. При объявлении переменной можно выполнить и инициализацию:

@{

string s;

int j = 3;

}

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

@{

var s=”Hello”;

var j = 3;

}

Имея набор переменных, Вам может понадобиться выполнять преобразования из одного типа в другой. Для этой цели можно воспользоваться стандартным явным или неявным преобразованием, а также набором методов, принадлежащих объекту типа String.

Вот пример явного преобразования:

@{

double d=3.5;

int j = (int)d;

}

Среди методов, которые позволяют выполнить преобразование, выделяют метод ToString(), который присутствует у любого объекта, а также набор методов, принадлежащих объекту типа String: AsBool(), AsDecimal(), AsFloat(), AsInt(), AsDateTime().

Наконец, класс String описывает несколько методов, которые не выполняют преобразование, а позволяют проверить возможность последнего (естественно, возвращая bool): IsBool(), IsDecimal(), IsFloat(), IsInt(), IsDateTime().

На последок отметим, что если Вы определяете строку, которая содержит специальные символы (слеш, использующийся для указания пути к файлам), то строку начинают с символа @. Кроме этого, если Вы хотите указать внутри строки двойную кавычку, то должны поставить две двойных кавычки:

@{

string s = @"\Hello""";

@s

}

На экране отобразится \Hello.

Собственно говоря, по переменным все. Теперь перейдем к структурам выбора.

Конструкции if и switch.

Как и в любом нормальном языке ASP.NET Razor поддерживает стандартные структуры выбора. Самая простейшая структура, это if. Ниже пример условия if в «худшем» своем проявлении.

if (i<3)

{

. . .

}

else if (i==3)

{

. . .

}

else

{

. . .

}

Иными словами, синтаксис соответствует языку программирования С#, где указывается оператор if, за которым следует условие, заключенное в скобки. Условие обязательно возвращает bool. Далее идут возможные ветвления и блок else (которые могут и отсутствовать).

Вторая конструкция – switch, позволяет сделать выбор, сопоставив значение переменной некоторому списку. Вот пример такой структуры:

switch (s)

{

case "Sergey":

@: <p>It’s your name</p>

break;

case "Viktor":

@: <p>Name of your brother</p>

break;

default:

@: <p>I don’t know your name</p>

break;

}

Согласно синтаксису, каждый выбор case, должен завершаться ключевым словом break. Может присутствовать блок default, который выполняется, если ни одна метка не найдена.

Циклы

Наконец, циклы. Как и в С# в Razor присутствует четыре типа структур, реализующих циклы, это for, foreach, do, while.

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

for (int i=1; i<=10; i++)

{

@i;

}

Вторая структура foreach, позволяет перебрать все элементы какой-то коллекции. Это верно и для массивов и для более сложных коллекций (например, списки).

Структура do…while позволяет выполнять какое-то действие, пока не будет достигнуто заданное условие. Причем сначала выполняется действие, а затем проверяется условие:

int i=0;

do

{

i++;

@i;

}

while (i < 10);

На экране будет все тот же набор чисел от 1 до 10.

Последний цикл while позволяет сначала проверить условие, а только потом выполнить действие (если условие возвращает true):

int i = 0;

while (i<10)

{

i++;

@i;

}

В следующем посте я продолжу рассматривать синтаксические особенности Razor, а также перейду к использованию конкретных объектов.

Written by Sergiy Baydachnyy

22.02.2011 at 18:16

Опубликовано в Web Matrix

Tagged with

Использование WebMatrix: Helpers и Visual Studio

leave a comment »

Продолжаю писать серию статей, посвященных продукту WebMatrix. Все статьи Вы можете найти в этом блоге по ссылке https://baydachnyy.com/category/web-matrix/.

Итак, когда я последний раз писал о WebMatrix, то многие разработчики задавали два интересных вопроса: о возможности работать с Razor в Visual Studio и о модели подключения Helpers к созданному в WebMatrix проекту. Действительно, в версии бета 1 ответов на эти вопросы еще не было. Тем не менее, релиз позволяет пополнять свое приложение дополнительными Helpers, а Visual Studio уже способен редактировать Razor файлы.

Начнем с поддержки в Visual Studio. Если говорить о WebMatrix, то тут в интерфейсе появилась специальная кнопка Visual Studio в разделе Launch. Нажатие на эту кнопку приводит к запуску Visual Studio и открытию там текущего проекта. Этот механизм удачно работает, когда Вы редактируете в Visual Studio файл HTML, JavaScript или CSS документы. Но, как только речь заходит о редактировании .cshtml файлов (то есть содержащих код на Razor), то тут Visual Studio бессилен. Но выход есть. Для того, чтобы дать возможность Visual Studio создавать Razor страницы, использовать IntelliSense систему, необходимо установить компонент ASP.NET MVC 3. Несмотря на название, этот компонент несет в себе все то, что позволяет работать с Razor.

Чтобы становить ASP.NET MVC 3, достаточно запустить Web Platform Installer и выбрать соответствующий компонент.

clip_image002

Как только ASP.NET MVC установлен, Visual Studio пополняется рядом шаблонов, один из который ASP.NET Web Site (Razor). (только создавайте не новый проект, а новый веб-сайт)

clip_image004

 

Теперь перейдем к вопросу работы с Helpers.

Напомню, что Helpers представляют собой готовые компоненты, способные выполнять некоторые функции (работа с Twitter, Facebook, отображение видео и т.д.)

В бета 1 все проекты на WebMatrix включали отдельную библиотеку, содержащую готовый набор Helpers. Поэтому код с твиттером из предыдущего поста работал нормально. Однако тут возникало две проблемы: даже стандартная библиотека с Helpers регулярно должна обновляться (расширяться); необходимо разработчикам предоставить не просто новый продукт, но и создать экосистему, позволяющую расширять существующий набор Helpers собственными разработками. Именно поэтому, уже в бета 2, Helpers перестали подключать автоматически, а разработчик получил возможность подключать как стандартные Helpers, так и разработанные другими разработчиками.

Подключение Helpers к Вашему проекту возможно с помощью ссылки ASP.NET Web Pages Administration, которая позволяет открыть окно администратора, позволяющее управлять Helpers в Вашем приложении.

На первом этапе, чтобы получить доступ к этому окну, Вам необходимо ввести пароль и подтвердить ввод, что позволяет получить сгенерировать специальный файл, содержащий Ваш пароль в каталоге веб-приложения. Чтобы гарантировать то, что пароль ввел владелец сайта (ведь функциональность доступна через веб), вам необходимо подтвердить Ваши права. Это делается крайне просто. В папке App_Data/Admin нужно найти файл _password.config и удалить в имени этого файла символ «_» (иными словами, если можете файлы в директории веб-приложения редактировать, то точно владелец сайтаJ).

Как только Вы переименовали файл, Вам становится доступна возможность разворачивать доступные Helpers:

clip_image006

Тут можно найти и стандартную библиотеку ASP.NET Web Helpers Library (без которой тот же Твиттер работать не будет), описание которых доступно по ссылке http://www.asp.net/webmatrix/tutorials/asp-net-web-pages-api-reference.

Следует отметить, что ряд Helpers подключается в виде уже готовой библиотеки, а часть – в виде исходных файлов .cshtml. Таким образом, Вы можете использовать некоторые Helpers, как прмер для написания собственных (дойдут руки, напишу).

Written by Sergiy Baydachnyy

22.02.2011 at 16:44

Опубликовано в Web Matrix

Tagged with

Обзор Silverlight 5

3 комментария

Итак, прошло уже почти два месяца с того момента, как Скотт Гафри анонсировал Silverlight 5, а я только сейчас решился написать обзор этой технологии. Полагаю, что в связи с Новым Годом, вряд ли это кто-то решил бы читать раньше (да-да, уже протрезвел).

Итак, Silverlight 5 – технология для построения Web-приложений с «богатым» интерфейсом (RIA) станет доступна разработчикам уже в начале апреля (естественно в бета версии). Планируется, что Silverlight 5 представят в ходе конференции MIX 11. Релиз же станет доступен осенью. Тем не менее, постараюсь дать обзор прямо сейчас.

Поддержка 64-битной платформы

Даже Silverlight 4 не работает в 64-битных браузерах. Между тем, 32-бита уверенно уходят в прошлое. Именно поэтому, начиная с 5-й версии Silverlight, плагин будет доступен как в 32-битной, так и в 64-битной версиях. Предполагается, что пользователю не придется думать, какая из версий должна быть установлена.

Управление скоростью проигрывания видео

Функционал позволит устанавливать скорость проигрывания, синхронизируя видео и звук, а также выполнять «переметку» не только вперед, но и назад. Предполагается, что можно будет использовать следующие множители для скорости проигрывания: 0.2, 0.4, 0.6, 0.8, 1, 2, 4, 8, 16, 32.

Интеграция с пультом управления

Сегодня, такие приложения, как Windows Media Center, успешно работают с пультом, позволяющим управлять программой, не вставая с кровати. Silverlight 5 будет поддерживать аналогичные возможности.

Улучшенное управление питанием

Речь идет о том, что при просмотре видео с помощью Silverlight (а, следовательно, при отсутствии взаимодействия с мышью и клавиатурой), Вас не застанет врасплох установленный на машине Screensaver и Вам не придется бросаться к мыши, чтобы продолжить смотреть видео.

Двойной щелчок мышью

Событие, связанное с мышью, теперь будет получать значение в свойстве ClickCount, показывающее, сколько раз пользователь щелкнул кнопкой. Иными словами, разработчик сможет описать реакцию на двойной щелчок мыши.

Копирование изображений

В Silverlight 4 появился класс Clipboard, который позволил копировать текст в буфер и обратно. Silverlight 5 расширяет возможности этого класса, позволяя работать с изображениями. Методы SetImage и GetImage будут работать с объектами типа BitmapSource. Также предусмотрено наличие метода ContainsImage, проверяющего наличие изображения в буфере.

Поддержка 3D

Речь идет не о технологии псевдо 3D, появившейся в Silverlight 4, а о полноценном 3D API с поддержкой аппаратного ускорения. Последнее уже хорошо зарекомендовало себя при работе с видео.

Поддержка Behaviors и Triggers

Поддержка Behaviors призвана перенести функциональность Поведений, реализованных в Blend на уровень ядра Silverlight. Речь идет о создании комплексных объектов, объединяющих в себе ряд различных преобразований, создавая тем самым уникальное Поведение. И если ранее подобное можно было реализовать, только подключив специальную сборку из Blend, то теперь это все будет в ядре. Введение триггеров призвано еще больше сблизить WPF и Silverlight, хотя триггера в Silverlight выглядят более универсальными.

Улучшенное отображение текста

Для начала, в элементах TextBlock появится возможность устанавливать интервал между символами и строками. Появится полная поддержка OpenType. Кроме того, планируются значительно улучшить элемент RechText, добавив туда новые возможности (хоть он мне и не нравится).

Layout transition

В Silverlight 5 любому контейнеру будет можно задавать эффекты, связанные с заполнением контейнера и добавлением нового элемента. Благодаря Layout transition разработчику не придется работать с каждым элементом отдельно, а достаточно будет указать механизм заполнения для всего контейнера.

Связывание с данными: Отладка

У разработчиков теперь будет меньше головной боли, так как появилась возможность ставить точки останова в коде, описывающим связывание данных. Достаточно поставить точку останова в XAML файле, на строке, описывающей Binding, и разработчик может получить всю возможную информацию о связывании и проблемах, возникающих с этим. Поэтому найти такие ошибки, как неправильное написание имени свойства или имени преобразователя типов, станет теперь проще.

Связывание с данными: FindAncestor

Вспоминаю дискуссию в одном из своих постов о Silverlight 3 (http://dev.net.ua/blogs/sergiybaydachnyy/archive/2009/04/13/8103.aspx). Народ очень хотел FindAncestor. НатеJ RelativeSource FindAncestor позволяет выполнять связку, выполняя поиск любого вышестоящего элемента и выполнять с ним связывание.

Связывание с данными: DataContextChanged

Как видно, Silverlight 5 все ближе и ближе приближается к WPF. Новое событие DataContextChanged позволит определить изменение источника данных при связывании.

Связывание с данными: Стили

Связывание теперь можно будет использовать в Setter элементах стилей. Это позволит быстро менять внешний вид окна, задавая различные темы.

Дочерние окна

В приложениях, работающих вне браузера, появляется возможность создавать дочерние окна, которые можно будет перемещать за пределы основного окна приложения.

Поддержка Full-Trust внутри браузера

Silverlight 5 будет поддерживать правила, установленные групповыми политиками. Поддержка групповых политик позволит централизовано управлять развертыванием Silverlight-приложений. Кроме того, это даст возможность устанавливать список Publishers (вылетело русское слово из головы), разрешая избранным приложениям работать внутри браузера, но с использованием Full-Trust со всеми вытекающими последствиями (включая поддержку элемента WebBrowser). Это нововведение связано с отзывом от некоторых компаний, которые хотят запускать свои корпоративные приложения внутри браузера, но с повышенными привилегиями.

P/Invoke

Да, да, речь идет именно о возможности вызова Win API функций. Естественно, это будет работать в режиме Full-Trust. Фактически, теперь Silverlight 5 сможет делать все, что угодно.

Вроде бы все. Если что и забыл, то смотрите анонс Скотта по следующей ссылке: http://www.silverlight.net/news/events/firestarter/

Written by Sergiy Baydachnyy

16.02.2011 at 20:25

Опубликовано в SilverLight

Tagged with

Internet Explorer 9: двумерные преобразования

2 комментария

Последнее нововведение в Internet Explorer 9 (и пойду спать), это двумерные преобразования. Речь идет о простых 2D преобразованиях, описанных тут (http://www.w3.org/TR/css3-2d-transforms/). Фактически в CSS появляется возможность использовать два дополнительных атрибута, это transform и transform-origin. Правда в Internet Explorer 9 эти атрибуты носят другие названия, это –ms-transform и –ms-transform-origin. Причина такого извращения мне непонятна. Видимо драфт документа планируют серьезно изменить, при этом очень хотелось побить тех, кто кричал, что в IE 9 нет трансформации (кстати, другие браузеры реализуют подобные атрибуты со своими названиями).

Итак,

–ms-transform-origin задает точку, относительно которой будет происходить трансформация объекта. Как ни странно, но по умолчанию это центр объекта. При этом, можно указывать как абсолютное значение (в пикселях), так и относительное – в процентах.

-ms-transform задает саму трансформацию. Тут могут быть использованы следующие функции, которые записываются через пробел в одну строку:

  • matrix
  • translate (или translateX, translateY)
  • rotate
  • scale (или scaleX, scaleY)
  • skew (или skewX, skewY)

Все эти функции достаточно известные и принимают в качестве параметров одно или два значения.

Ниже пример небольшой трансформации для элемента div.

   1:  <!DOCTYPE html>
   2:   
   3:  <html lang="en">
   4:      <head>
   5:          <meta charset="utf-8" />
   6:          <title></title>
   7:          <style>
   8:    div {
   9:        height: 100px; width: 100px;
  10:        background:yellow;
  11:        -ms-transform: translate(80px, 80px) scale(1.5, 1.5) rotate(45deg);
  12:    }          
  13:          </style>
  14:      </head>
  15:      <body>
  16:         <div>hello</div> 
  17:      </body>
  18:  </html>

 

На экране можно будет увидеть следующую картину:

image

Естественно, что более значимых эффектов можно добиться, комбинирую трансформацию и javascript.

Written by Sergiy Baydachnyy

13.02.2011 at 23:34

Опубликовано в Internet Explorer 9

Tagged with

Internet Explorer 9: Geolocation

with one comment

И еще одно нововведение стало доступно в Internet Explorer 9, это определение местоположения пользователя. Уж не знаю, почему разработчики хотели эту возможность (я регулярно получал вопрос о данной фиче во время наших событий), но теперь Internet Explorer 9, используя ваше IP (и, возможно, информацию из сети WiFi), сможет определить Ваше местоположение, используя специальную службу от Microsoft.

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

image

Пользователь может как разрешить доступ к информации (единожды или всегда), так и запретить.

С точки зрения разработчика, все сводится к вызову метода navigator.geolocation.watchPosition(), который может принимать два параметра:

  • ссылку на метод, который вызывается в случае ошибки. Тут могут быть обработаны ситуации, когда пользователь запретил доступ к информации о местоположении или позиция не может быть найдена по каким-то причинам;
  • ссылка на метод, который вызывается после определения позиции. Этому методу передается параметры, который и будет содержать искомую позицию пользователя в виде геокоординаты.

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

Судя по моему месторасположению, я сейчас нахожусь в каком-то парке. На улице сейчас –12, поэтому осталось мне не долгоSmile Хотя, если серьезно, погрешность составила пару кварталов, что очень даже неплохо для такого неточного метода нахождения позиции, как IP.

image

Written by Sergiy Baydachnyy

13.02.2011 at 22:02

Опубликовано в Internet Explorer 9

Tagged with

Internet Explorer 9: семантические элементы

leave a comment »

Ранее я писал, что Internet Explorer 9 не поддерживает семантические элементы, описанные в HTML 5. Но, хорошо поработав над вопросами производительности и реализацией CSS 3, разработчики успели включить в релиз и семантические элементы.

Семантические элементы позволяют разбивать содержимое на отдельные блоки, подобно тому, как это делает элемент div. Но, в отличии от элемента div, они позволяют дать однозначную характеристику тому или иному блоку html кода. Например, элемент header определяет верхний заголовок для содержимого, а элемент footer – нижний.

Ниже приведен список семантических элементов, который поддерживается в Internet Explorer 9 RC:

  • section – позволяет разбивать содержимое на отдельные группы
  • nav – определяет блок с навигацией
  • article – определяет основное содержимое на странице
  • aside – позволяет выделить содержимое, которое имеет отношение к основному содержимому страницы, но не является его частью (бред какой-то написал, проще говоря – сноски)
  • hgroup – используется для группировки элементов типа h1,…
  • header – задает верхний заголовок
  • footer – задает нижний заголовок
  • figure – определяет изображение
  • figcaption – заголовок к изображению
  • mark – выделить небольшой блок содержимого (например, для важности)

Естественно, что ко всем этим элементам можно применять стили, а значит более гибко управлять представлением содержимого на странице. Наконец, предполагается, что использование семантических элементов, позволит поисковым машинам выполнять разбор страницы более “осмысленно”.

Written by Sergiy Baydachnyy

13.02.2011 at 21:37

Опубликовано в Internet Explorer 9

Tagged with