среда, 11 ноября 2009 г.

Наводим порядок в разработке ПО вместе с maven

Хорошая статья о многих частях, описывающая Maven – средство управления жизненным циклом приложений из мира Java.

четверг, 29 октября 2009 г.

Как отправлять почту через Google Mail с сайта ASP.NET

Грабли, которые подстерегают человека, которому надо отправить почту через почтовый домен, хостящийся на google apps из .net-сайта. Грабли описаны на примере встроенных в фреймворк классов из пространства System.Net.Mail.

1) Надо обязательно использовать TLS/SSL. В web.config это выглядит так:

<system.net>
    <mailSettings>
        <smtp from=from_person@domain.com deliveryMethod="network">
            <network host="smtp.gmail.com." port="587" userName=from_person@domain.com password="PASSWORD"/>
        </smtp>
    </mailSettings>
</system.net>

2) Кроме того что в конфиге надо правильный порт сказать, в коде надо проставить свойство EnableSsl у SmtpClient (не знаю, почему это не вынесено в <mailSettings>

private static void internalSend(SmtpClient smtp, string email, MailMessage mm)
{


smtp.EnableSsl = true;
smtp.Send(mm);

}

3) На хостинговом сервере может не пройти проверка сертификата SMTP сервера. Я решил этот вопрос радикально – отключил проверку:

public static bool ValidateServerCertificate(Object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
    return true;
}

private static SmtpClient getSmtpClient()
{
    ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);

    return new SmtpClient();
}

4) Сам почтовый аккакунт, из-под которого отправляется почта, должен быть активирован в гугле. Это значит, что

  • запись для аккаунта создана в контрольной панели google mail
  • под самим аккакнтом на gmail заходили хоть раз
  • в свойствах аккаунта стоит разрешение подключаться по POP3/SMTP

И даже после этого у вас может получиться отправлять почту совсем не сразу. У меня например гугль начал отсылать письма где-то через день после того как я под аккаунтом залогинился в gmail. Наверное, что-то обсчитывал :-)

пятница, 23 октября 2009 г.

Adventures in JSF 2.0: Hello World Tutorial using Maven 2, JSF 2, Facelets 2, and Weld

Link: http://info.rmatics.org/2009/10/17/jsf2_tutorial_0/

себе, почитать.

четверг, 22 октября 2009 г.

Con10uum

На Кулере нашел – концепт нового оконного менеджера будущего, используюшего десятипальцовый touch pad.


10/GUI from C. Miller on Vimeo.


Всем юзабелистам однозначно смотреть


Остается правда вопрос – что делать одноруким :-)

понедельник, 19 октября 2009 г.

RUB и RUR

Век живи, век учись:

Оказывается, международный код (по ISO 4217) рубля - это RUB а не RUR. Код RUR использовался для означения рубля до деноминации 1998 года.

таким образом, "по правильному" 1 RUB эквивалентен 1000 RUR.

"The ISO 4217 code is RUB; the former code, RUR, refers to the Russian ruble prior to the 1998 denomination (1 RUB = 1000 RUR)."

Источники:

воскресенье, 18 октября 2009 г.

.Net 3 - Сила методов расширения

Методы расширения (Extension Methods) это простой такой трюк компилятора, который позволяет программисту добавлять свои собственные методы к уже существующим классам.
Естесственно, чтобы не нарушить защиту класса, методам расширения недоступны “кишки” класса, к которому они пристраиваются. Метод расширение обязан пользоваться существующим публичным контрактом.
Фактически, это такой способ подстроить синтаксис уже существующей библиотеки/фреймворка “под себя”, уменьшив количество кода, которое нужно написать для реализации требуемой функциональности (любители Nemerle меня поймут :-)
Передо мной недавно встала следующая задача: во множестве пользовательских контролов ASP.NET приложения нужно было анализировать дерево контролов страницы и выцепить из него самый первый контрол, который реализовал определенный интерфейс.
Метод FindControl для этого не подходил – я не имел возможности задавать имя контрола. В результате были написаны пара методов-раширений, которые добавляли требуемую функциональность


вторник, 13 октября 2009 г.

ReSharper 5 Overview

Парни из JetBrains в своем блоге рассказывают о том, что будет в 5-м ReSharper-е.

Выглядит о-очень вкусно, один только Call Tracking это какая офигенная штука. Она, я так понимаю в design time анализирует откуда указанный метод может быть вызван и разворачивает это дерево вызовов. То есть – больше никаких веерных Find Usages :)

Еще из понравившегося – Move String to Resource, то есть интернационализация по одному клику, почти так же удобно как и в XCode.

С новыми технологиями тоже неплохо, обещают поддержку .Net 4.0, VS 2010, ASPNET MVC

C HighLoad++

Сейчас разработчиков с mail.ru спросили
- А как вы деплоите изменения ваших проектов?
- Как-как... отделом эксплуатации