Хорошая статья о многих частях, описывающая Maven – средство управления жизненным циклом приложений из мира Java.
среда, 11 ноября 2009 г.
четверг, 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
понедельник, 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)."
Источники:
- Википедия
- Стандарт ISO 4217
- Общероссийский классификатор валют
воскресенье, 18 октября 2009 г.
.Net 3 - Сила методов расширения
Естесственно, чтобы не нарушить защиту класса, методам расширения недоступны “кишки” класса, к которому они пристраиваются. Метод расширение обязан пользоваться существующим публичным контрактом.
Фактически, это такой способ подстроить синтаксис уже существующей библиотеки/фреймворка “под себя”, уменьшив количество кода, которое нужно написать для реализации требуемой функциональности (любители 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++
- А как вы деплоите изменения ваших проектов?
- Как-как... отделом эксплуатации
