среда, 5 мая 2010 г.

Тонкости внедрения

Интересная статья и замечательнейшая цитата из нее:

Я потратил на этот проект почти год своей жизни. Это много. И обидно.
А тем, кто планирует участвовать в подобных проектах, хочу сказать — ребята, в таких крупных компаниях гораздо важнее не суть дела, а правильная политика и учет клановых сил. Главное знать, кто тут на кого имеет какое влияние и с кем и в какой последовательности надо все согласовывать. А насколько хорошо то, что именно вы предлагаете, значение имеет не очень большое.
Не ново, но так за живое задевает...

среда, 28 апреля 2010 г.

Сложности общения

Встретился хороший пост про некоторые аспекты общения. С которыми не раз сам такливался на практике. Цитаты из статьи Владимира Германа “Личная неприязнь”.

Личная неприязнь - механизм психики. Действие ее коварно и не сразу распознаваемо сознанием. Человек практически не способен мыслить объективно, находясь под действием личной неприязни. Основное вредоносное ее свойство заключается в следующем. Личная неприязнь делает так, что любые высказывания, суждения или поступки оппонента трактуются нашим сознанием как враждебные или с подвохом - действует крайнее недоверие. Даже улыбка человека, у которого просто хорошее настроение, может быть истрактована как враждебная ухмылка или насмешка. В результате, личная неприязнь сама себя вскармливает. В современных коллективах это свойство личной неприязни подкрепляется еще и склонностью оппонентов общаться по электронной почте или ICQ - средства не передают эмоции.

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

понедельник, 29 марта 2010 г.

Вывод лога DUnit в файл

Иногда нет возможности запускать тесты из консольного приложения, что делает невозможным логгирование вывода стандартными средствами. Что бы, к примеру, запущенная после коммита процедура сборки/тестирования, в случае ошибки, бросила в почту разработчикам лог с непрошедшими тестами.

Для решения на скорую руку был набросан простенький класс (чуть более чем полностью слизанный с TextTestRunner), позволяющий логгировать все в файл - FileTestRunner

Проверен на D2009.

среда, 24 марта 2010 г.

Упрощение CheckException в DUnit с помощью анонимных функций

К сожалению, для проверки функции на возврат исключения возможен только для процедуры типа:
TTestMethod  = procedure of object;
procedure CheckException(AMethod: TTestMethod; AExceptionClass: TClass; msg :string = '');
Легким движением руки(наследником или правкой оригинального класса) для свежих версий Delphi упрощаем написание таких тестов:

TTestProc2  = reference to procedure;
TTestCase2 = class(TTestCase)
public
  procedure CheckException2(AMethod: TTestProc2; AExceptionClass: TClass; msg :string = '');
end;
Пример использования:
...
CheckException2(procedure begin DirDelete(TestDir); end, EInOutError);

понедельник, 8 марта 2010 г.

Разработка - это борьба с антивирусами

На днях, Касперский начал ругаться на один из пакетов нашей системы обновлений. В пакете (7z архив), от 11 сентября 2009 года лежал инсталятор сделанный InnosSetup, внутри которого и лежал якобы зараженный файл.

Беглый анализ этого яйца КБ на VirusTotal показал, что ругается только Касперский, на какой-то никому известный троян, что явно указывало на ложное срабатывание. Проблемы была отложена на неделю, в надежде что рассосется :)

Но практика показала, что даже ложные сигнатуры, как те вирусы, расползаются по мелким антивирусным компаниям безо всяких проверок. Через 2 недели уже 10-ток антивирусов определяли файл как зараженный! Но при этом среди них не было ни одной крупной компании.

Приятно был поражен, что после отправки комплейна в лабораторию Касперского, ложное срабатывание было подтверждено в течение часа (и это 8-го марта!).

вторник, 2 марта 2010 г.

97 заметок архитекторам и разработчикам

Уж не знаю, откуда возник такой формат, но есть две замечательные серии статей, по 97 штук, с краткими заметками в области разработки и проектирования ПО. В оригинале они на английском, но есть частичный перевод от avl:

97 Things Every Programmer Should Know
97 Things Every Software Architect Should Know

понедельник, 1 марта 2010 г.

MindTheBird! - УпомяниПроПтица!

Как многие помнят, я, в силу исторических причин, большой любитель, и более того фанат, такого замечательного продукта, как СУБД Firebird.

В скором времени, выходит его новая версия 2.5, в которой разработчики в очередной раз радуют нас множеством вкусностей:
  • новая промежуточная архитектура SuperClassic
  • управление пользователями из SQL
  • долгожданный многими ALTER VIEW
  • автономные транзакции
  • гетерогенные запросы к внешним базам FB через EXECUTE STATEMENT
  • роль RDB$ADMIN
  • трассировка работы

    В поддержку сего события, запущен проект MindTheBird! - нацеленный на как можно более широкое освещение релиза и всего проекта в целом. Соответственно пассивным вкладом нас, разработчиков использующих эту СУБД может (а лучше должно быть) размещение баннера на сайте/блоге.

    А желающие принять более активное участи, могут заработать 500$ за работу с логотипом ФБ, или получить лицензию FastReport за привлечение новых участником.