суббота, 26 сентября 2009 г.

Полезное про базы данных


Наткнулся на интересную статью "Индексы в MySQL: многоколоночные индексы против комбинированных индексов". Очень интересное сравнение скорости выполнения запроса в зависимости от типа индексов в базе данных. В частности:
"В большинстве случаев использование комбинированных индексов по нескольким колонкам является лучшим решением, если вы используете AND между подобными колонками в WHERE. Использование пересечения индексов в принципе улучшает производительность, но она всё равно значительно хуже, чем при использовании комбинированных ключей. В случае, если Вы используете OR между колонками Вам потребуется иметь по индексу на каждой из колонок, чтобы MySQL смог найти их пересечения, а комбинированные индексы не могут использоваться в таких запросах."
P.S.: интересно, как с этим дело обстоит в MS Sql...


четверг, 24 сентября 2009 г.

SourceMonitor

Если вас не устраивает цена NDepend ($400+) и уговорить ее работать не удалось - то вот еще одна программа для анализа кода - SourceMonitor







Пользуйтесь :)


среда, 23 сентября 2009 г.

Нет слов :)

Это невообразимо! У меня нет слов чтобы корректно прокомментировать эту ситуацию:

SVN является продвинутым средством для организации совместной разработки десятков, а то и сотен разработчиков. В силу особенностей архитектуры, SVN хранит в каждой директории проекта свои метафайлы, аккуратно сложенные в скрытую директорию .svn. В одном из файлов под названием entries находится список всех файлов и директорий, расположенных в той же папке, что и .svn. Так же там находится информация о расположении репозитория, размере файлов, даты их изменения и логины пользователей, работающих над проектом. Уже не плохо, правда? Объясню, получается, если проект разрабатывается с помощью SVN, то заглянув по адресу draftcopy.ru/.svn/entries мы увидим файловую структуру корня проекта с авторами, последними изменениями, ссылкой на основную ветку репозитория итп.

Но можно пойти и далее. В той же папке .svn находится директори text-base, в которой лежат последние версии всех файлов, находящихся в репозитории. Картину дополняет так же и то, что файлы имеют не стандартное расширение (например .php), которое позволяет их сразу отправить на интерпретатор, а дополнительное расширение .svn-base, благодаря которому файл отдается запросившему его человеку «как есть», т.е. голый исходный код!

Для зоны .RU:
Просканировано доменов: 2253388
Уязвимых: 3320

XAML Power Toys

Как пишут - обновились XAML Power Toys. Это расширение для Visual Studio 2008, облегчающее создание XAML кода для WPF и Silverlight приложений. Скачать и прочитать подробнее можно здесь. Рекомендую обратить внимание на видео ролики внизу страницы - из них многое будет понятнее.

P.S.: однако я по прежнему считаю что xaml - это тупиковый путь. По крайней мере - в своей текущей реализации. Слишком ущербен GUI-редактор, а набивать все что надо текстом - мазохизм.

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

Особенности восстановления Vista на ноуте

Недавно поучаствовал в процессе восстановления ОС Windows Vista Home Basic на ноуте. В один прекрасный момент система начала терять сетевое подключение - т.е. пакеты просто переставали ходить через сетевую карту. Правда, как выяснилось несколько позже, причиной такого странного поведения был антивирус Касперского, фильтр пакетов которого банально глючил. Но поскольку на момент возникновения проблемы об этом еще никто не знал - было принято решение использовать диск восстановления ОС.

Итак, вставляем диск - загружаемся, восстанавливаем ОС, вставляем второй диск с драйверами - вообщем, процесс занял где-то около часа. (Как выяснилось - ноут принадлежал к первому поколению ноутов с ОС Vista, поэтому для восстановления и использовалось два диска вместо одного).

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

Итого Windows Update насчитал 87 обновлений на 278 Мб объемом. Казалось бы - ну что тут страшного?

Процесс установки обновлений занял более 4 часов.

Так что берегитесь старых ноутов - их починка может занять неопределенно-долгое время :)

среда, 16 сентября 2009 г.

Знаете ли вы...

... что несмотря на то, что в блоках case оператора switch нельзя "проваливаться" между case'ами (т.к. компилятор требует обязательного наличия оператора break для каждого блока case), сделать это все-таки можно. Вот так:

switch(attitude)
{
  case Attitude.HighAndMighty:
   Console.WriteLine("High");
   goto case Attitude.JustMighty;
  case Attitude.JustMighty:
   Console.WriteLine("Mighty");
   break;
}

Про обобщения и перегрузку функций

Вот вопрос, который мне задают довольно часто:

public class C
{
  public static void DoIt<t>(T t)
  {
    ReallyDoIt(t);
  }

  private static void ReallyDoIt(string s)
  {
    System.Console.WriteLine("строка");
  }

  private static void ReallyDoIt<t>(T t)
  {
    System.Console.WriteLine("всё остальное");
  }
}

Что происходит при вызове C.DoIt<string>? Многие люди ожидают, что выведется «строка» в то время, как на самом деле всегда печатается «всё остальное», независимо от того, какой T использовать.


Почему? Читайте в блоге Эрика Липперта.

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

Рекомендую...

... почитать вот это "Негласные истины управления гиками".

Статья рассказывает об особенностях поведения ИТ-шников, которое несколько отличается от поведения обычных людей. Основная причина - человек связанный с ИТ оценивает всё с позиции логики (что, вообщем-то, ему и необходимо из-за выбранной профессии), что приводит к интересным эффектам, когда в действиях руководства этой самой логики недостает :)

пятница, 4 сентября 2009 г.