Используем сервис Gravatar

Вячеслав Гринин, June 27, 2011

Название Gravatar переводится как “глобально распознаваемые аватары“, и предназначен для хранения и глобального доступа к аватаркам пользователя и его персональным данным.

Все URL-ы в системе gravatar имеют одну общую ключевую деталь – хеш адрсеса электропочты пользователя. Именно этот хеш уникально идентифицирует пользователя в рамках сервиса gravatar. Хеш формируется очень просто. Для этого нужно взять e-mail, убедиться, что в нем отсутствуют начальные и конечные пробелы, привести его в нижний регистр, и взять MD5-хеш полученной строки.

На языке PHP этот код будет выглядеть так:

    $email = "vgrinin@gmail.com";
    echo md5(strtolower(trim($email)));

А на C# – вот так:

string email = "vgrinin@gmail.com";
byte[] hash = MD5.Create().ComputeHash(Encoding.Default.GetBytes(
  email.Trim().ToLower()));
StringBuilder hashString = new StringBuilder();
for (int i = 0; i < hash.Length; i++)
{
  hashString.Append(hash[i].ToString("X2"));
}
Console.WriteLine(hashString.ToString().ToLower());

Гм… получилось несколько длиннее, чем на PHP.
(more…)

ADO.NET Entity Framework. Часть 2.

Вячеслав Гринин, June 19, 2011

Итак, продолжаем изучать ADO.NET Entity Framework.

Будем продолжать развивать решение, полученное в первой части статьи. Напомню, что мы спроектировали концептуальную схему данных, сгенерировали и выполнили DDL-скрипт, создавший для нас структуру хранения данных, а также научились создавать объекты в концептуальном поле и делать выборку из коллекций. Естественно, все изменения мы сохраняли в БД, обеспечив таким образом синхронность данных в концептуальном слое и в БД.

Предположим, что перед нами теперь возникла необходимость дополнить объект User новыми полями, пусть это будет FIO и BirthDate. (more…)

Практикуемся в ADO.NET Entity Framework. Model First.

Вячеслав Гринин, June 6, 2011

Сразу оговорюсь, какое отношение имеет цикл статей про Entity Framework к веб-программированию. В дальнейшем я собираюсь использовать полученную модель для создания веб-приложения на базе технологии ASP.NET MVC 3, которая очень хорошо сочетается с Entity Framework.

Прежде всего – вам нужно иметь установленную Visual Studio 2010 (кажется 2008 тоже подойдет) и установленный пакет ADO.NET Entity Framework 4.1 найдите его по ссылке или в поиске на microsoft.com. Теперь нам становятся доступны все возможности ADO.NET Entity Framework. Замечу, что четвертая версия отличается от более ранних, так что, если у вас установлена более ранняя версия, то не гарантирую, что у вас будет работать тот код, что я привел в статье.

Итак, создаем обычное консольное приложение. Присваиваем ему имя test1. Добавляем в проект модель данных.

Add -> New Item... -> ADO.NET Entity Data Model

, называем ее MyEFModel.edmx.

Среда разработки предлагает нам два варианта создания модели: генерация из базы данных и пустую модель. В этой статье мы собираемся рассмотреть принцип Model First, то есть начинать разработку мы будет с создания модели данных, из которой впоследствии будет сгенерирована схема данных (таблицы и связи в базе данных). А это значит, что мы выберем вариант создания пустой модели (Empty Model). После этого перед нами откроется пустое поле дизайнера модели данных. Если дизайнер не открылся, то сделайте двойной клик на модели MyEFModel.edmx в Solution Explorer’е.
(more…)

Пул данных

Кирилл Евсеев, May 30, 2011

Всем привет. Сегодня мы поговорим о пуле данных. Под словосочетанием “пул данных” частенько понимаются принципиально разные вещи. Например, система, которая имитирует пользовательский ввод данных и используется для автоматического тестирования какой-либо другой системы. Я же буду подразумевать под пулом данных некоторую программно-алгоритмическую структуру, предназначенную для хранения данных и работы с ними.

Итак, зачем вообще нужен пул данных? Основной принцип разработки софта – модульность. То есть мы стремимся к тому, чтобы минимизировать зависимости между классами, чтобы наша программа была не монолитным куском кода, а набором некоторых подпрограмм, которые можно комбинировать друг с другом, добиваясь гибкости и расширяемости системы. Понятное дело, такой подход – результат эволюции. И его преимущества сложно переоценить. Хотя бы тот факт, что в монолитной программе исправление какого-нибудь участка кода может запросто привести к веерным изменениям по всему монолиту, в то время, как в хорошо продуманной модульной структуре любые изменения останутся локальными, главное только сохранить формат и логику входных и выходных параметров.

Проблема заключается в следующем – большую модульную систему могут разрабатывать не то, что разные отделы внутри одной компании, а и вообще разные компании. При этом, каждый модуль будет замечательно работать, но все эти модули будут работать с данными в разных форматах. Я сейчас объясню, что я имею ввиду. Считается, что системе достаточно быть хорошо задокументированной, чтобы избежать этих проблем. Фактически, происходит следующее.
(more…)

JavaScript – Подтверждение клика по ссылке.

Вячеслав Гринин, April 29, 2011

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

  1. Без создания дополнительных страниц, чистый JavaScript. Вариант простой но не дающий возможности кастомизации всплывающего окна запроса подтверждения.
  2. С созданием дополнительных страниц. Вариант посложнее, но теперь внешний вид окна запроса и отображаемые на нем данные – полностью в нашей власти.

Первый вариант основан на использовании атрибута onclick элемента <a>. Как известно, если вначале атрибута onclick записать ключевое слово return, то браузер продолжит переход по ссылке только если функция вызываемая в onlick возвратит true.

Для формирования диалогового окна запроса подтверждения используем стандартный диалог confirm, которому в качестве аргумента подается сообщение, отображаемое пользователю, сам же диалог, помимо сообщения будет содержать кнопки “OK” и “Cancel”.

<a href='http://yandex.ru' onclick='return confirm("Вы уверены, 
что хотите покинуть сайт?")'>Перейти на Яндекс</a>

Проверьте, как это работает прямо на этой странице, щелкните на следующую ссылку:

Перейти на Яндекс

Второй вариант чуть посложнее:
(more…)

Поиск по блогу:
Подписаться:
Популярные:
Облако тегов:
Разное:
Счетчик: