Сообщений 10    Оценка 496        Оценить  
Система Orphus

[ANN]once — #3'2005

Автор: Илья Зарецкий
The RSDN Group

Источник: RSDN Magazine #3-2005
Опубликовано: 08.10.2005
Исправлено: 10.12.2016
Версия текста: 1.0
Средства разработки
eclipse — версия 3.1
Debugging Tools for Windows — версия 6.5.3.8
Doxygen — версия 1.4.4
Создание дистрибутивов
Inno Setup — версия 5.1.5
Nullsoft Scriptable Install System — версия 2.09
Исходники
Custom Tab Controls, Tabbed Frame и Tabbed MDI — версия от 14 июля 2005 года
Расширения VS .NET 2003 — версия 2.1
CM_ConfigBuilder — версия 1.1e
Библиотеки
boost — версия 1.33
Qt (Open Source Edition) — версия 4.0.0
zlib — версия 1.2.3
ZipArchive — версия 2.4.7
Prof-UIS — версия 2.40
win32gui — версия 1.6.6
Одной строкой
Subversion — версия 1.2.3
TortoiseSVN — версия 1.2.2.4295
TortoiseCVS — версия 1.8.21
MinGW — версия 4.1.1
CVSNT — версия 2.5.02.2088

Средства разработки

eclipse — версия 3.1

http://www.eclipse.org/

На фронте „.NET vs. Java“ — без перемен. 28 июня разработчики eclipse „ответили“ на активное продвижение и тестирование второй бета-версии Visual Studio 2005 выпуском очередной версии своей замечательной „универсальной платформы“. Объемистый документ, гордо озаглавленный Eclipse 3.1 — New and Noteworthy, очень подробно перечисляет нововведения и улучшения данной версии, сопровождая это почти мегабайтом иллюстраций — и этот список выглядит весьма внушительно:

Хочется в очередной раз подчеркнуть, что eclipse, начинавшаяся как среда Java-разработки, благодаря своей исключительно гибкой архитектуре, отнюдь не замкнулась в рамках этого языка и может не менее эффективно использоваться, например, при создании Windows-приложений на C/C++. Проект CDT (C++ Development Toolkit) реализует „бесшовную“ интеграцию среды с компилятором и отладчиком, входящими в состав MinGW — и здесь я не могу не сослаться на великолепное руководство Eclipse Project CDT (C/C++) Plugin Tutorial от Brian Lee. Исходя из личного опыта, могу с уверенностью сказать: даже если вы никогда не сталкивались ни с MinGW, ни с CDT, ни с самой eclipse, то аккуратно выполнив все описанные автором действия, вы получите полноценную и готовую к немедленному использованию „eclipse C/C++ IDE“ — с менеджером проектов, „умным“ редактором, отладчиком, etc. Кстати, в конце августа появилась на свет версия CDT 3.0 — не менее новая и заслуживающая внимания, чем сама eclipse 3.1.

Debugging Tools for Windows — версия 6.5.3.8

http://www.microsoft.com/whdc/ddk/debugging/default.mspx

Данный продукт представляет собой богатый набор утилит, предназначенных для отладки приложений, сервисов и драйверов под управлением всех версий Windows, базирующихся на ядре NT (в настоящее время поддерживаются NT 4.0, 2000, XP, 2003 Server и Longhorn, включая 64-битные реализации последних). Очередная версия, выпущенная 30 июня, в числе основных новшеств принесла с собой улучшенную совместимость с Longhorn, поддержку отладки драйверов USB 2.0, усовершенствования в пользовательском интерфейсе отладчика WinDbg, поддержку системы управления исходным кодом Subversion и многое другое — полный перечень изменений располагается по адресу What’s New for Debugging Tools for Windows.

См. также Использование отладочных символов Windows в VC++ 7.x

Doxygen — версия 1.4.4

http://www.stack.nl/~dimitri/doxygen/

Очередное обновление очень приятной утилиты, позволяющей создавать документацию к исходному коду на основании специального вида комментариев. В новой версии добавлены поддержка языка Python, XML-тэгов в комментариях (в стиле C#), а также устранено порядка трех десятков ошибок; полный список исправлений находится на странице ChangeLog. Вопреки популярному мнению о том, что подобное „автодокументирование“ приводит к сильному замусориванию исходного кода, замечу — Doxygen позволяет очень гибко управлять соотношением „замусоренность кода“ / „подробность документации“. Рассмотрим простой пример:

        // файл OptionsPage.h
        //! Encapsulates the "Setting options" step of the UpdateIt! wizard.
        class COptionsPage: public CBetterPropPage
{
...
   virtualvoid Dump(CDumpContext& dumpCtx) const;
...
};

// файл OptionsPage.cpp//! This member function prints data members of this class (in the Debug version//! of the application).//! @brief dumps the contents of the object to a CDumpContext object//! @param dumpCtx the diagnostic dump context for dumping, usually afxDump.void COptionsPage::Dump(CDumpContext& dumpCtx) const
{
...
}

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

Создание дистрибутивов

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

Inno Setup — версия 5.1.5

http://www.jrsoftware.org/isinfo.php

Первую версию „Инны“ Jordan Russell выпустил еще в 1997 году; за восемь с лишним лет своего развития его детище приобрело огромную массу возможностей и поклонников, не утратив при этом своей „легкости“ — дистрибутив последней версии Inno Setup „весит“ немногим более мегабайта. Основной претензией поклонников NSIS, о которой речь пойдет ниже, долгое время был больший, чем у их фаворита, overhead — то есть, размер служебных данных в создаваемых инсталляционных пакетах. Несмотря на то, что данный факт никогда не был для меня критичен, могу с радостью отметить, что за последнее время разрыв по этому показателю сократился почти до нуля. Основным же плюсом Inno Setup, благодаря которому я и сделал свой выбор в ее пользу, является, на мой взгляд, использование диалекта Pascal в качестве скриптового языка. Можно долго и безрезультатно ломать копья в священных войнах „X vs Y“, но факт остается фактом — на Pascal программировал практически каждый из нас, и отсутствие необходимости осваивать еще один „самопальный“ синтаксис позволяет взять старт значительно быстрее.

Версия 5.1.5 была выпущена в середине августа и является четвертой в линейке 5.x после 5.0.7, 5.0.8 и 5.1.4; если главным нововведением предыдущей версии стала поддержка создания инсталляционных пакетов для 64-битных приложений, то текущие изменения носят скорее косметический характер — самым существенным из них является, наверно, обновление zlib до версии 1.2.3. Помимо перечисленного, основные усилия авторов приложения направлены сейчас на исправление ошибок и совершенствование Pascal Scripting, а также на сокращение пресловутого оверхэда. Полный перечень изменений и улучшений содержится в документе Inno Setup 5 Revision History.

Для Inno Setup существует некоторое количество „сторонних“ разработок, самыми заметными из которых являются Inno Setup Form Designer, представляющий собой визуальную среду разработки нестандартных форм, использующихся в процессе инсталляции, и ISTool — довольно комфортная IDE для создания и редактирования инсталляционных скриптов. С сожалением вынужден отметить, что последний из упомянутых проектов находится сейчас в каком-то полузаброшенном состоянии: если раньше автор выпускал новые версии практически синхронно с обновлением Inno Setup, то до недавнего времени последней доступной версией была 5.0.8, датированная 11-м марта этого года (к счастью, вскоре после выхода Inno Setup 5.1.5 автор все-таки обновил свое детище).

Помимо перечисленного нельзя не упомянуть и полуофициальный „QuickStart Pack“, в состав которого входит, в частности, Inno Setup Preprocessor, разработанный нашим соотечественником и позволяющий использовать в инсталляционных скриптах директивы условной компиляции (определенную пикантность ситуации придает тот факт, что синтаксис этих директив чисто C-шный — #define, #ifdef и иже с ними). Ознакомиться с подробным списком „довесков“ можно на странице Inno Setup Third-Party Files.

Nullsoft Scriptable Install System — версия 2.09

http://www.nullsoft.com/free/nsis/

Если дистрибутивы, созданные версиями линейки 1.x этого инсталлятора, имели весьма посредственный внешний вид (вспомним установку Winamp 2.x), то начиная с версии 2.0 ситуация радикально изменилась — появился так называемый „modern interface“, что позволило придать дистрибутивам действительно современный внешний вид (в качестве примера можно привести тот же самый Winamp, но уже версий 5.x, или наш RSDN@Home версии 1.1.4). Текущий релиз, как и восемь его „предков“ из линейки 2.0x, содержит исправления ряда мелких погрешностей, обнаруженных со времени выхода второй версии инсталлятора; сколько-нибудь значимые новшества в нем отсутствуют.

На странице Development Environments вы сможете найти несколько ссылок на IDE, позволяющие редактировать инсталляционные формы и скрипты более комфортным образом — наличествуют как плагин для eclipse, так и „автономные приложения“ типа HM NIS EDIT.

Исходники

Custom Tab Controls, Tabbed Frame и Tabbed MDI — версия от 14 июля 2005 года

http://www.codeproject.com/wtl/tabbingframework.asp

[WTL] Очередное обновление набора классов от Daniel Bowen, предназначенных для реализации „закладочного“ интерфейса, аналогичного MIcrosoft Visual Studio .NET; одно из прилагающихся демонстрационных приложений содержит также пример интеграции реализованных автором закладок с библиотекой WTL Docking windows нашего соотечественника Сергея Климова. Текущая версия поддерживает использование Visual C++ 8.0, WTL 7.5 и может применяться при построении 64-битных приложений; детальная информация об исправлениях и улучшениях содержится в исходных файлах.

Расширения VS .NET 2003 — версия 2.1

http://www.codeproject.com/dotnet/file_diff_and_webreports.asp

[C#] Данное „расширение“ дополняет и без того богатые возможности среды Visual Studio .NET 2003 целым набором полезных функций, к числу которых относятся:

Кроме предоставления перечисленных возможностей, этот проект может послужить в качестве примера исходного кода тем из разработчиков, которые интересуются созданием „расширений“ для последних версий Visual Studio.

CM_ConfigBuilder — версия 1.1e

http://www.codeproject.com/tools/CM_ConfigBuilder.asp

[ATL/MFC/VB6] Довольно любопытный, с моей точки зрения, проект, предлагающий программистам комплексное решение для работы с настройками приложения (конфигурационными файлами):


Вот как автор описывает дело собственных рук. Около двух лет назад мне надоело снова и снова слышать от моих заказчиков один и тот же вопрос: „Не могли бы вы сделать этот параметр настраиваемым?“ Удовлетворяя эту просьбу, я каждый раз должен был писать код, выполняющий следующие действия: сохранение параметра в файл, получение параметра из файла, создание некоторого элемента управления, позволяющего пользователю изменять значение этого параметра, проверка корректности этого значения при изменении его пользователем. Поэтому я решил создать инструмент, который сможет выполнять все эти операции за меня. Первым шагом была разработка утилиты для описания структуры настроек моего приложения. Вторым шагом было добавление возможности описывать способ редактирования пользователем соответствующих данных. И наконец третьим шагом было создание библиотеки, содержащей весь необходимый код. Все это привело меня к написанию CM_ConfigBuilder, который генерирует весь код, требующийся для управления настройками приложения и хранения их в XML-файле.

Библиотеки

boost — версия 1.33

http://www.boost.org/

Долгожданное обновление „испытательного полигона“ возможностей C++ принесло с собой весьма обширный перечень дополнений и улучшений. Появилось несколько новых библиотек: Iostreams Library (создание потоков и фильтров ввода-вывода), Parameter Library (написание функций, принимающих именованные аргументы), Pointer Container Library (контейнеры для динамических полиморфных объектов) и ряд других. Помимо этого, были внесены изменения в существующие библиотеки, такие как Bind, Graph, Regex, Serialization и Signals. К списку поддерживаемых компиляторов добавилась бета-версия Microsoft Visual C++ 8.0 (2005).

Qt (Open Source Edition) — версия 4.0.0

http://www.trolltech.com/download/opensource.html

Выпуск фирмой Trolltech бесплатной (распространяемой под лицензией GNU GPL) Windows-версии своей знаменитой библиотеки был, скорее всего, одной из главных интриг последнего времени. Даже я, будучи хроническим MFC-шником, совершенно не знакомым с Qt, поддался всеобщему ажиотажу и по десять раз на дню проверял анонсы на официальном сайте. И 28 июня свершилось! — бездонная бочка меда была выставлена для всеобщего угощения. Радость разработчиков кроссплатформенных приложений была настолько велика, что они не сразу заметили скромно лежащую рядом ложечку дегтя: некоммерческая версия Qt не содержит средств интеграции с Visual Studio и предполагает использование в качестве компилятора MinGW. Впрочем, для тех, кто на самом деле интересуется этой библиотекой и хочет попробовать ее в разработке Windows-приложений, это вряд ли станет серьезным препятствием — связка eclipse + CDT + MinGW, о настройке которой я упоминал выше, по комфортности работы ничуть не уступает даже последним версиям продуктов от Microsoft, а в чем-то и превосходит их.

Впрочем, вернемся непосредственно к Qt. Признаюсь честно — впечатление, произведенное на меня этой библиотекой, было куда менее сильным, чем ожидание появления на свет ее бесплатной версии. Заглянув в исходные тексты библиотеки и прилагающихся к ней примеров, я обнаружил там еще больше „условностей“, чем можно найти в реализации MFC, ATL или WTL; кроме того, для человека, твердо опирающегося на знание Win32 API, предлагаемый механизм работы с элементами управления является, по моим ощущениям, совершенно инородным. Мне всегда казалось, что подлинная „идеальная библиотека“ на C++ должна использовать минимум вспомогательных средств в виде многострочных макросов, „колдунов“, etc. MFC грешит первым, но позволяет, по крайней мере, воспользоваться для создания приложений обычным текстовым редактором и компилятором командной строки — а вот работа с Qt без использования прилагающихся „дизайнеров“ и „препроцессоров“ станет, как мне показалось на первый взгляд, абсолютно неэффективной; wxWidgets в этом плане выглядит куда более дружелюбно.

Но как бы там ни было, я искренне рад, что линейка „свободных“ библиотек пополнилась еще одним экземпляром, имеющим огромное количество поклонников; может быть, читателю этих строк предстоит совершенно легально стать одним из них. В любом случае — обязательно попробуйте Qt на вкус и обратите особое внимание на жирный водяной знак „IMHO“, проступающий из-под предыдущего абзаца.

zlib — версия 1.2.3

http://www.zlib.net/

Данная кроссплатформенная библиотека уже давно является одним из стандартов де-факто в области сжатия данных. Вышедшая 18 июля версия 1.2.3 не содержит никаких новшеств, но исправляет несколько серьезных ошибок, две из которых приводили к потенциальной уязвимости программного обеспечения, использующего эту библиотеку, при декодировании сжатых данных. Авторы настоятельно рекомендуют немедленно перейти на использование этой версии, если сейчас вы используете 1.1.1 или 1.1.2; первыми этому совету последовали разработчики Subversion и TortoiseSVN, так что вы окажетесь в хорошей компании.

ZipArchive — версия 2.4.7

http://www.artpol-software.com/index_zip.html

Самая удачная, на мой взгляд, объектно-ориентированная „надстройка“ над упомянутой выше zlib. Я очень интенсивно использую эту библиотеку в своих проектах и ни разу не сталкивался с какими бы то ни было проблемами при сжатии данных. Код, предлагаемый автором, довольно универсален — в качестве целевой платформы может выступать как Windows, так и Linux; использование STL или MFC регулируется директивами условной компиляции; список поддерживаемых средств разработки включает в себя Visual C++ 6.0 и 7.0, а также Borland C++ Builder. В текущей версии библиотеки, увидевшей свет 5 августа, автором было исправлено несколько мелких ошибок; прилагающаяся документация в формате HTML Help является, помимо источника информации, еще и хорошим примером использования утилиты документирования кода Doxygen.

Prof-UIS — версия 2.40

http://www.prof-uis.com/

Один из представителей семейства „расширителей MFC“, носящий гордое имя „Professional User Interface Suite“, 5 июля обновился до версии 2.40. Данная библиотека существует в двух вариантах — коммерческом и бесплатном; последний содержит более узкий набор классов, но отнюдь не теряет полезности при разработке MFC-приложений. Диапазон поддерживаемых разработчиками версий Visual Studio весьма широк: от 6.0 до 2005 Beta 2. Даже к бесплатному варианту библиотеки прилагается богатый набор примеров и подробная документация, содержащая помимо справочника по классам и их методам, некоторое количество статей, помогающих начать использование библиотеки, а также перечень часто задаваемых вопросов и ответов на них (FAQ). В текущей версии традиционно исправлены старые ошибки и добавлены новые (возможности); полная история версий библиотеки содержится на странице News about Prof-UIS and other GUI toolkits.

win32gui — версия 1.6.6

http://www.torjo.com/win32gui/

Любителям программистской „экзотики“ и вообще всем, кому „надоели карты сообщений а-ля MFC“, без сомнения, будет интересно познакомиться с этой библиотекой, использующей самые „горячие“ возможности предпоследнего на данный момент стандарта C++ и соответствующих ему компиляторов. Автор предлагает весьма нетрадиционный взгляд на разработку GUI и, что немаловажно, подробную справку в формате HTML. Библиотека развивается довольно динамично, как минимум один раз в квартал на SourceForge появляются ее новые версии, поэтому скука вам не грозит.

Одной строкой

Subversion — версия 1.2.3

http://subversion.tigris.org/

Очередное обновление этой замечательной системы управления исходным кодом „спровоцировано“, в первую и главную очередь, найденными (и исправленными) в испольуемой ей библиотеке zlib ошибками, следствием которых была потенциальная уязвимость при декодировании сжатых данных.

TortoiseSVN — версия 1.2.2.4295

http://tortoisesvn.tigris.org/

Закономерное следствие обновления zlib и Subversion — плюс несколько исправленных ошибок и ряд косметических нововведений, с полным списком которых можно ознакомиться по адресу http://tortoisesvn.tigris.org/ChangeLog.txt.

TortoiseCVS — версия 1.8.21

http://www.tortoisecvs.org/

Исправлено несколько ошибок, CVSNT обновлена до версии 2.5.01.2025. Сборки 19, 20 и 21 выходили с интервалом в один день по причине отсутствия в них файлов, которые разработчики „забывали “ поместить в дистрибутив.

MinGW — версия 4.1.1

http://www.mingw.org/

Способ установки остался прежним — через Internet. Обновились сам инсталлятор, MinGW Runtime (до версии 3.8), а также набор заголовочных файлов и библиотек импорта Win32 API (до версии 3.3).

CVSNT — версия 2.5.02.2088

http://www.cvsnt.org/

Очередное исправление нескольких мелких ошибок.


Эта статья опубликована в журнале RSDN Magazine #3-2005. Информацию о журнале можно найти здесь
    Сообщений 10    Оценка 496        Оценить