воскресенье, 15 мая 2011 г.

Я был на Ciklum .Net Saturday

Если коротко, то когда я ехал в Киев, то электричка громко пела: туду-туду, туду-туду, туду-туду. На встрече #Ciklum .Net Saturday, докладчики говорили: TDD-TDD, TDD-TDD, TDD-TDD.
Возвращению домой, я таки заметил, что на самом деле звук электрички был: тыдыды-тыдыды, тыдыды-тыдыды, TDD-TDD ;)

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

Enterprise architecture in gaming environment

Камрад Owe Laestadius, который работает «Team Lead at Betsson» (хотя, позиция эта туманная, и чем он там на самом деле занимается я не знаю, берите поправку на Agile ;) кратко, но очень емко рассказывал об архитектуре и о том, почему архитектура не должна быть статичной, т.е. сделанной один раз на 100 лет, а гибкой, модульной и готовой к изменениям.
Owe говорил, что хорошие решения и реализации получаются обычно с третьего раза. Пример был такой:
  • В Системе был реализован только один метод электронных платежей через кредитные карточки Visa.
  • Появилась необходимость добавить поддержку PayPal. Создали новый модуль + добавили специализированный код для поддержки PayPal.
  • Появилась необходимость поддержки еще одной системы онлайн платежей. На этот раз, общий код для поддержки электронных платежей был перенесен в отдельный модуль, а лишний код удален. Система стала модульной и была способна поддерживать добавление новых платежных систем без лишних трудностей и лишнего кода.
Это вот пример того, что все хорошее получается почему-то с третьего раза. Я не знаю почему, но и за собой замечал эту особенность.

Continuous Integration: What? Why? & How?

Валерий Пелехов (Betsson) очень легко и просто рассказал о применении Continuous Integration в Betsson. Я специально не хочу пересказывать презентацию, хоть и заметок у меня получилось достаточно много, потому что всю эту информацию можно найти и в сети. Валерий показал на примере реального проекта, как у них используется CI и уверенно доказал что это действительно очень удобно и что команда в любой момент времени может сказать что их код либо работает, либо не работает. Варианта «ну как бы работает, наверное» – там нет. Вот именно это сложно передать текстом, и лучше один раз услышать и увидеть.
Из технических деталей я узнал, что на Betsson используется CI система TeamCity, а тесты на xUnit.

(Integration + Deployment) * Continues = (Continuous Production)

Александр Белецкий рассказывал о том, как он сократил время недоступности своего проекта во время разворачивания новой версии на продакшн сервер для пользователей с 30 минут до 1-й секунды. Его конфигурация, используют CI систему Jenkins, исходники проекта хранятся на Github, для юнит тестов – NUnit + вспомогательные сборки, UppercuT и RoundhousE – которые позволяют билдить и разворачивать новый бил + апгрейдить базу данных в один клик.
Более детально вы можете узнать обо всем из Блога Александра.

Хотите драйва? Вам в TDD!

Сергей Калинец сделал замечательный доклад о TDD и о драйве. Рассказал, почему TDD – это драйв, об ошибках и проблемах внедрения TDD. Я называю такие доклады «мотивирующими»: доклад, который лучше один раз увидеть, чем сто раз прочитать. Рекомендую почитать материалы его блога TDD 4 .Net, где можно почерпнуть достаточное количество качественной информации по теме TDD. Презентация доклада тут: Хотите драйва? Вам в TDD!

Approaches to sharing files between .NET

Александр Винниченко провел исследование о передачи файлов по сети средствами .NET, используя общую папку на сети, и WCF (HTTP binding). Как оказалось, WCF оказался не намного худшим способом для передачи файлов, и для файлов небольшого размера ненамного отставал по скорости, сравнительно с расшареной папкой на сети.

Test Driven Development in ASP.NET MVC 3

Антон Видищев рассказывал о сложностях внедрения TDD в ASP.NET MVC 3. Показал, как лучше писать тесты и как использовать Fakes, Mocks, Stubs и Dummies. По началу, внедрять TDD в проект было реально сложно, но в данный момент, команда разработчиков добилась той же скорости и продуктивности что и до TDD и команда может уверенно ответить в любой момент: код работает правильно или нет.

Как опубликовать свое приложение в Windows Phone 7

Александр Краковецкий (http://msug.vn.ua/Members/Details/2100) – это действительно профессиональный докладчик, который следит за всеми новинками Microsoft, и кроме того, проводит исследование и пишет качественные статьи на Хабре, msug.vn.ua и множестве других источников.
В своем докладе, он рассказал о публикации собственных приложений на WP7 Marketplace. Продемонстрировал, что используя обходные пути, все это достижимо для украинского разработчика. Меня удивил тот факт, что процесс валидации приложения на стороне Microsoft занимает не больше 3-х дней, это действительно очень короткий срок.
Но, лично я не принимаю факт закрытости и жесткого контроля Microsoft над процессом разработки для программистов WP7. Да, возможно правила Microsoft не жестче чем у Apple, но и преимуществ эти ограничения платформе не добавляют.
iOS и Android уже прочно заняли свои места на рынке. Apple как всегда делают свои продукты для небедных людей, которые готовы платить за бренд. Android – собственно, платформа людей с самыми разными финансовыми возможностями, моделей телефонов их производителей сейчас множество. А для разработчика платформа Android – открыта и лишена множества искусственных ограничений.
Но, не мне судить, как покажет себя WP7. Поживем – увидим.
А, доклад Александра был действительно очень качественным, и я уверен, полезным тем, кто планирует начать разработку для WP7.

Огромное Спасибо компании Ciklum за организацию встречи и за активную работу по проведению подобных мероприятий. Спасибо за пиво, пиццу и приют.

суббота, 23 апреля 2011 г.

Как запустить веб сайт Asp.net MVC 3, если хостинг еще не поддерживает ASP.NET MVC 3

Я приобрел хостинг Soho от Mochahost. Они поддерживают ASP.NET 4, но все еще не поддерживают ASP.NET MVC 3 (вторая версия MVC поддерживается). Я только недавно занялся освоением новых фичей 4-го фреймворка и свежего MVC 3, так что думаю, что мой опыт разворачивания MVC 3 приложений, на хостинг будет полезен новичкам и сэкономит им несколько часов времени.

Шаг 0: Включите ASP.NET 4.0 Integrated Papeline

Просто включите его, иначе, без кропотливых дополнительных настроек вы свое ASP.NET MVC 3 приложение просто не запустите.

ASP.NET 4.0 Integrated Papeline

Более подробно integrated mode можно просчитать в статье Using ASP.NET MVC with Different Versions of IIS (C#), опять же, статья будет полезна, если у вас на хостинге используется IIS более ранний версии, чем 7.

Шаг 1: Добавьте в ваш проект необходимые файлы для запуска ASP.NET MVC 3 приложения


Явно добавьте в ваше проект следующие референсы:
Microsoft.Web.Infrastructure
  • System.Web.Helpers
  • System.Web.Mvc
  • System.Web.Razor
  • System.Web.WebPages
  • System.Web.WebPages.Deployment
  • System.Web.WebPages.Razor
Если вдруг необходимые референсы не будут отображаться на вкладке .NET окна Add reference, то зайдите на вкладку Browse и добавьте референсы прямо из GACка %windir%\Microsoft.NET\assembly\

Шаг 2: Для перечисленных выше сборок, установите свойство Copy Local = true

Свойство Copy Local = true необходимо для того, чтобы необходимая сборка, которой может не быть на сервере хостинга скопировалась и использовалась в вашем приложении локально.

Шаг 3: Пересоберите проект и скопируйте его на сервер хостера

После пересборки проекта, скопируйте файлы на серевер хостера. Можете воспользоваться удобной фичей Build -> Publish. Лично я публикую проект в локальную директорию, архивирую его zip-ом, а потом разархивирую его на сервере хостера через файл менеджер. Удачи вам! Тест создан на основе следующего поста: http://drew-prog.blogspot.com/2011/01/how-to-deploy-aspnet-mvc-3-app-to-web.html

воскресенье, 27 марта 2011 г.

Internet Explorer 9 – я его зауважал

Недавно, в целях эксперимента решил поставить себе Internet Explorer 9. Еще седьмая и восьмая версия привлекали мое внимание тем, что… дико тормозили при загрузке и крешались на продуктах того же Майкрософта, я имею ввиду OWA (Outlook Web Access).

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

Раньше браузером по умолчанию у меня был Google Chrome, из-за скорости его работы, а сейчас, уже как неделю, мой дефолтный браузер – IE9. О чем не жалею.

четверг, 3 марта 2011 г.

А вот он где спрятался! (HttpContext.Current.Server)

private static HttpServerUtility Server = HttpContext.Current.Server;

воскресенье, 27 февраля 2011 г.

MySQL и C#: Проблема с русскими буквами при сохранении в таблицу

Наверное это самая популярная проблема в MySQL – при сохранении русского текста в таблицу, текст стает таким вот: «?????? ??????!». Т.е все русские буквы преобразовываются в знаки вопроса, что говорит о проблеме кодировок.

MySQL C# Text Encoding Problems

Самым популярным решением этой проблемы было выполнить следующий запрос для установки необходимой кодировки после подключения:
SET NAMES utf8

Это и у меня работало в Perl и PHP, а вот в C# – не сработало.
И тут-то пошли извращения, дошло даже до такого:

string UtfConv(string strToConvert)
{
return System.Text.Encoding.UTF8.GetString(System.Text.Encoding.Default.GetBytes(strToConvert));
}


Хорошо, что этот способ не сработал.
А оказалось, что стоит лишь немного подправить ConnectionString, указав в нем заветную кодировку:

И MySQL ConnectionString превращается…:
"server=localhost;uid=root;pwd=root;database=deeprss "

… превращается в следующий:
"server=localhost;uid=root;pwd=root;database=deeprss;charset=utf8"


Параметр я вычитал тут:
21.2.6. Connector/NET Connection String Options Reference


Все таблицы в БД у меня в utf8.

пятница, 4 февраля 2011 г.

C# code snipped: Create Excel instance using the dynamic keyword

The code below creates dynamic Excel.Application object without referencing the Excel COM server dll.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{

dynamic excel = Activator.CreateInstance(Type.GetTypeFromProgID("Excel.Application"));
excel.Visible = true;
Console.Read();

}
}
}

понедельник, 31 января 2011 г.

I am working on DeepRSS



Тайна, покрытая мраком...
 

.NET ate my MOSK;. Powered By Blogger © 2009 Bombeli | Theme Design: ooruc