пятница, 11 декабря 2015 г.

Об изменениях в новой книге Стровструпа "Практика программирования"

Из типографии вышел перевод очередной версии книги "Программирование. Принципы и практика использования C++", написанной Беарне Стровструпом - создателем языка C++. Поскольку на сайте автора я не нашёл информации об изменениях в новой книге, то сравнил оригинальные содержания предыдущего и нового издания этой книги.

вторник, 1 декабря 2015 г.

DETAILED_ERROR - расширенная информация об ошибке

Выложил на Bitbucket исходный код функции detailed_error и макроса DETAILED_ERROR, использующего её. Они позволяют сгенерировать исключение runtime_exception с нужным сообщением об ошибке, к которому автоматически добавляется информация, позволяющая понять - где именно в исходном коде произошло исключение. Наличие информации о дате компиляции позволяет узнать, какой commit проекта следует смотреть, дабы получить нужную версию файла исходного кода. Предоставляемая информация о разрядности приложения и о версии компилятора так же может быть полезной в ряде случаев.

понедельник, 16 ноября 2015 г.

Создан cribs.red-bee.ru

Закинул на red-bee.ru несколько страниц с заметками, которые могут оказаться интересными при разработке различного рода административных утилит. Опубликованы здесь. Материал не претендует на абсолютную истину (не исключено, что какие-то задачи можно было решить и более простым путём).

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

Быстрый способ проверить наличие запущенного процесса acad.exe или accoreconsole.exe

То, что предоставлено в данной заметке не является документированным способом и получено на основе анализирования состава мьютексов, создаваемых и используемых AutoCAD в процессе своей работы. Способ применим как к acad.exe, так и к accoreconsole.exe. Проверялся с AutoCAD 2009-2016 x64, а так же с AutoCAD 2008 x86, запущенном в Windows x64. Решение продемонстрировано в двух вариантах: C++ и C#.

вторник, 3 ноября 2015 г.

Открытие и закрытие консольного окна для GUI-приложения

Работая с GUI приложением иногда бывает удобно в режиме реального времени посмотреть, что оно отправляет себе на консоль (т.е. в потоки stdout и stderr), а порой может возникнуть и желание что-то отправить в поток stdin с клавиатуры. Можно, конечно же, выполнять перенаправление в файлы, но этот вариант не всегда удобен. В данной заметке, на примере AutoCAD, показано, как для GUI-приложения открыть консольное окно, выполнить перенаправление потоков и, после того как консольное окно не будет нужно, закрыть его.

понедельник, 2 ноября 2015 г.

Пример создания именованных объектов ядра ОС в разных пространствах имён

Маленькая шпаргалка-пример на тему совместного использования именованных объектов ядра несколькими процессами. Показан вариант размещения именованных объектов ядра в глобальном, локальном и приватном пространствах имён.

Ещё немного по теме локализованных ресурсов

В дополнение к предыдущей заметке...

среда, 14 октября 2015 г.

Об использовании функции FormatMessage из WinAPI для расшифровки своих кодов ошибок

В WinAPI многие функции, в случае неудачного завершения своей работы, возвращают код ошибки, получить который можно при помощи функции GetLastError(). Само по себе полученное числовое значение не даёт чёткого представления о причине сбоя. Для того, чтобы понять, что же именно произошло, необходимо получить строковое сообщение, соответствующее возвращённому коду ошибки. В WinAPI существует функция FormatMessage которая, помимо заложенных в ней возможностей касающихся форматирования строк, может использоваться для получения текстового описания ошибки по её коду. Однако, использовать обозначенный механизм получения описаний ошибок можно не только для кодов системных ошибок, но так же и для кодов ошибок, определяемых вами...

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

Опубликован проект AcadKeyParser

Выложил на BitBucket проект AcadKeyParser. Информацию о назначении библиотеки, примеры её использования и откомпилированные версии под .NET 3.5, 4.0, 4.5 и 4.6 разместил там же. В составе решения присутствуют модульные тесты (NUnit) и консольная утилита, позволяющая интерактивно проверять "валидность" ключей AutoCAD. Результаты модульных тестов автоматом оформляются в виде HTML отчёта при помощи утилиты ReportUnit (более детальную информацию см. в файле run_me.bat).

вторник, 22 сентября 2015 г.

На BitBucket опубликованы исходники проекта по работе с proxy в AutoCAD

Закинул в свой профиль на BitBucket исходники проекта по работе с прокси в AutoCAD. Проект в открытом доступе. Там же опубликован и результат компиляции.

UPD (27.06.2016) Программа переведена из категории открытой в категорию бесплатной. Отныне доступны MSI-инсталляторы, но не исходный код. Подробнее здесь.

суббота, 19 сентября 2015 г.

Издательство "Питер" представило русский перевод книги Pro Git 2.

На днях издательство "Питер" представило перевод книги Pro Git 2. В англоязычном варианте книга имеется в свободном доступе (официальный сайт книги здесь). Да, я в курсе о том, что группой энтузиастов давно выполняется её перевод, но судя по текущему состоянию этого перевода - он не сильно продвинулся с тех пор, как я смотрел его в последний раз весной (во всяком случае ряд интересующих меня тем так и не переведён до сих пор). К сожалению, издательство "Питер" продаёт только электронную версию книги (epub, pdf). Кроме того, за электронную версию 400 рублей - это несколько завышенная цена (на мой взгляд). Покупать или нет - это уж каждый пусть решает для себя сам.

воскресенье, 13 сентября 2015 г.

Некоторые мысли по поводу заметки Алексея Кулика о Git.

Опубликовываю последовательность действий, оформленных в виде скрипта, согласно тому, как обещал в комментариях здесь. Как я уже писал, изложенный в ссылке пример совместной работы, на мой взгляд, является, к сожалению, плохим. Я считаю, что Алексей показал даже скорее пример того, как НЕ НАДО делать (буду называть вещи своими именами), т.к. работая с Git использовать стиль работы Subversion - это значит ограничивать себя (ИМХО). :((( Тем, кому интересна тема коллективной работы с использованием Git настоятельно рекомендую прочесть эту главу.

вторник, 1 сентября 2015 г.

Сайт о Git для Windows.

Некоторое время назад создал сайт, на котором выкладываю материалы по работе с Git для Windows. Дополнительно присутствует материал о различных "подводных камнях", с которыми мне пришлось столкнуться на практике, а так же о способах их обхода. Ресурс редактируется и дополняется по мере оформления материала. Адрес сайта: http://www.git-for-win.red-bee.ru

пятница, 19 июня 2015 г.

NUnit: вывод сообщений трассировщика

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

четверг, 18 июня 2015 г.

NUnit: Тестирование DLL, использующей внешние данные

В составе одной из моих DLL присутствует функционал, позволяющий проверять на предмет корректности выражения вида ACAD-E001:409 (а так же создавать их) и, если выражение корректно, то полностью расшифровывать эту информацию. Для работы обозначенной DLL необходим специальный XML файл, содержащий информацию о существующих версиях AutoCAD и их вертикальных продуктах. Этот файл размещается в том же каталоге, в котором находится DLL. Для тестирования обозначенного функционала я написал пару тестов и запустил их в GUI NUnit...

понедельник, 1 июня 2015 г.

ReportUnit на смену NUnitOrange

Отличная новость:  Anshoo Arora создал новое приложение: ReportUnit, которое является продвинутой заменой NUnitOrange. Теперь на основе XML файлов, генерируемых платформами NUnit, Gallio и MSTest можно генерировать единообразно и весьма удобно оформленные HTML отчёты о результатах тестирования (в т.ч. и сводный).

пятница, 17 апреля 2015 г.

Шаблоны проектов для управляемых расширений AutoCAD

Опубликовал шаблоны для разработки и тестирования управляемых расширений для AutoCAD и вертикальных решений на его базе.

среда, 8 апреля 2015 г.

Немного о качестве accoreconsole.exe

Как говорится, страна должна знать своих героев... В данном контексте речь пойдёт о багах, с которыми предстоит столкнуться пользователям утилиты accoreconsole.exe. Ранее я уже писал об этом инструменте здесь. За четыре года уж точно можно было бы выявить очевидные ляпы и исправить их. Однако "можно было бы", не означает, что это "было сделано" в реальности.

вторник, 31 марта 2015 г.

TestCase в NUnit и Gallio

В NUnitTestCase - это атрибут, однако в Gallio это не так. Т.о. в каждой из обозначенных платформ своя реализация поведения обозначенного элемента. В этой заметке показан пример исходного кода, который успешно компилируется и работает как в случае использования Gallio, так и в случае использования NUnit.

четверг, 26 марта 2015 г.

Шаблон проекта VS для написания модульных тестов для .Net-расширений AutoCAD

Ранее я уже приводил пример создания общего шаблона для .NET плагина под любую версию AutoCAD не старше чем 2009-я. Аналогичный шаблон можно создать и для модульных тестов под эти плагины. 

пятница, 13 марта 2015 г.

Шаблон проекта VS для создания .Net-расширений AutoCAD

Давно хотелось реализовать, да всё руки не доходили. На данный момент имеется некоторая вполне рабочая версия. Возможно будет проведён его некоторый рефакторинг, но сути это не изменит.

четверг, 26 февраля 2015 г.

Аудит средствами Teigha

Возможность выполнять аудит программно, "родными" средствами AutoCAD .NET API, появилась в AutoCAD только начиная с версии 2015. В то же время библиотека Teigha предоставляет эту возможность уже достаточно давно.

четверг, 29 января 2015 г.

Немного о каррировании в Haskell

Читая М. Липовача "Изучай Haskell во имя добра!", я некоторое время не понимал, чем частичное применение отличается от каррирования. Потратил некоторое время на разбор данного вопроса и набросал себе "шпаргалку" по обозначенной теме.

пятница, 23 января 2015 г.

Об именах в Haskell

Имя любого идентификатора в Haskell начинается с буквы, за которой следует ноль или более букв, цифр, символов подчёркивания _ и одинарной кавычки '. В качестве буквы рассматриваются только латинские символы в интервалах a..z и A..Z. Символ _ принято считать буквой, в следствии чего имя функции может начинаться с этого символа, но не может состоять только из него, в виду того, что в образцах Haskell он обозначает любое значение. Имена функций, составленные не из символов набора ascSymbol, обязательно должны начинаться со строчной буквы или символа _. Имена пространств имён, типов данных, конструкторов данных и классов типов составленные не из символов набора ascSymbol должны начинаться с прописной буквы. В данной заметке даётся некоторая информация об использовании символов набора ascSymbol в идентификаторах Haskell.