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

[ANN]once — #3'2008

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

Источник: RSDN Magazine #3-2008
Опубликовано: 28.12.2008
Исправлено: 10.12.2016
Версия текста: 1.0
Проекты
Cosmos – C# Open Source Managed Operating System
Средства разработки
Doxygen – версия 1.5.7
Библиотеки
Boost – версия 1.36.0
Исходники
Managed Control Panel Items
XGroupBox – замена стандартному groupbox
Towards Cleaner Code, A C# Asynchronous Helper
Towards Cleaner Code II, a C# GUI Invoke/Async Helper
Writing Your Own RTF Converter
CBitmapEx – C++-класс для работы с BMP
Style Toolkit – библиотека для создания пользовательского интерфейса
Cabinet File (*.CAB) Compression and Extraction – версия 9.9
Статьи
Automatically Starting your Application on Windows Mobile
Blend PDF with Silverlight
Parsing Expression Grammar Support for C# 3.0 Part 1 – PEG Lib and Parser Generator
Утилиты
ToDoList 5.6.6

Проекты

Cosmos – C# Open Source Managed Operating System

http://www.gocosmos.org/

http://www.codeplex.com/Cosmos/

«Создайте свою собственную операционную систему, используя Visual Studio и C#» – предлагает нам автор этого проекта Chad Z. Hower. Сразу же заметим, что, несмотря на присутствие в названии именно C#, разработчики могут использовать VB.NET, Fortran или любой другой .NET-совместимый язык программирования.

Cosmos (как и Windows CE) не является операционной системой в традиционном значении этого термина; вместо этого он представляет собой некий «конструктор», позволяющий разработчику с легкостью создать свою собственную ОС; утверждается, что ее разработка и загрузка займут, в простейшем случае, всего несколько минут. J Вот как выглядит инструмент Cosmos Builder, предназначенный для сборки загрузочного образа ОС:


После нажатия на кнопку «Build» откроется окно, показывающее ход процесса сборки – в этот момент MSIL компилируется в машинный код, а также происходит подготовка загрузочного образа:


Ну а после монтирования созданного ISO-образа в VMware Workstation вы сможете увидеть следующую картину:


В настоящее время проект находится на самой ранней стадии развития. Авторы работают над поддержкой широкого диапазона файловых систем, включая FAT и ext2. Тем не менее, в будущем нам обещаны графика, локальные сети и другие возможности, присущие полноценной ОС. По адресу http://www.codeproject.com/KB/system/CosmosIntro.aspx можно найти статью, рассказывающую об основах разработки и отладки ОС с использованием Cosmos.

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

Doxygen – версия 1.5.7

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

Основным нововведением, появившимся в текущей версии данного средства автоматизированного создания документации к исходному коду, является поддержка выходного формата .qch (Qt compiled help) при помощи Qt's qthelpgenerator, включенного в библиотеку, начиная с версии 4.4.0. Для просмотра файлов в этом формате используется Qt's Assisant. Помимо этого, добавлены три новые команды \extends, \implements, и \memberof, позволяющие документировать объектно-ориентированные конструкции для тех языков, которые формально их не поддерживают (например, C); также улучшена поддержка однострочных комментариев после VHDL-типов.

Библиотеки

Boost – версия 1.36.0

http://www.boost.org/

Текущая версия данного проекта подарила нам четыре новые библиотеки: Accumulators (поддержка инкрементальных вычислений), Exception (передача произвольных данных в объектах-исключениях и пересылка таких объектов между потоками), Units (обработка данных в различных единицах измерения и перевод из одних единиц в другие) и Unordered (реализация неупорядоченных ассоциативных контейнеров).

Кроме того, усовершенствованиям и дополнениям подверглись еще полтора десятка библиотек, входящих в состав boost. Полный перечень отличий от предыдущей версии можно найти по адресу http://www.boost.org/users/news/version_1_36_0. Как всегда, те, кто не хочет выполнять сборку библиотек вручную, могут скачать с сайта BoostPro Computing соответствующий инсталлятор. Он позволяет выбрать необходимые компоненты и их сборочные конфигурации для последующей загрузки готовых бинарных файлов (на текущий момент поддерживаются компиляторы Visual C++ версий 7.1, 8.0 и 9.0 с последними пакетами обновлений).

Исходники

Managed Control Panel Items

http://lukesw.net/articles/CplNet.aspx

http://www.codeproject.com/KB/system/cplnet.aspx

[.NET, C#] Оттолкнувшись от статьи How to Automate Exporting .NET Function to Unmanaged Programs, автор создал набор компонентов, позволяющих разрабатывать апплеты Панели правления Windows с использованием «управляемых» (managed) языков программирования:

Все, что для этого требуется – это создать класс, реализующий интерфейс IControlPanelItem:

        public
        interface IControlPanelItem : IDisposable
{
    // Иконка апплета.
    Icon Icon { get; }

    // Имя апплета (32 символа максимум).string Name { get; }

    // Описание апплета (64 символа максимум)string Info { get; }

    // Показывает окно апплета.//     controlPanelWindow – Дескриптор окна Панели управления.//     command            – Необязательная командная строка.void Start(IWin32Window controlPanelWindow, string command);
}

Помимо реализации данного интерфейса, создаваемый класс должен быть наследником MarshalByRefObject и иметь установленный атрибут ControlPanelItemAttribute.

XGroupBox – замена стандартному groupbox

http://www.codeproject.com/KB/miscctrl/XGroupBox.aspx

[C++, MFC] Элемент управления, призванный заменить стандартный groupbox и реализующий следующие дополнительные возможности:

Towards Cleaner Code, A C# Asynchronous Helper

http://www.codeproject.com/KB/threads/CSharpAsynchronousHelper.aspx

[.NET, C# 2.0] Вспомогательный класс, добавляющий гибкости и значительно уменьшающий объем кода при выполнении асинхронных операций в части их запуска и отслеживании состояния. «В любом достаточно большом приложении многократно встречается ситуация, когда некоторое действие должно быть выполнено асинхронно. В качестве импровизированного примера можно привести приложение, которое при запуске сохраняет отчет о его ходе в файл на диске. Эта операция является относительно медленной, как и все, что связано с файловым вводом-выводом; выполняя ее асинхронно, мы уменьшим время запуска, не рискуя получить при этом какие-либо побочные эффекты. .NET Framework делает асинхронное выполнение довольно легким и мы рассмотрим несколько общих путей его реализации; однако здесь существуют подводные камни, способные привести к трудноуловимым ошибкам и делающие код более «грязным», поэтому я представляю вам вспомогательный класс, призванный сделать наши жизни легче.»

Towards Cleaner Code II, a C# GUI Invoke/Async Helper

http://www.codeproject.com/KB/threads/CSharpAsynchronousHelper2.aspx

[.NET, C# 2.0] Продолжение темы, начатой в предыдущей статье того же автора – на этот раз речь идет о выполнении асинхронных операций, которые тем или иным образом влияют на элементы пользовательского интерфейса. Ну и конечно же вашему вниманию предлагается очередной «вспомогательный класс», при использовании которого жизнь станет практически невесомой. :)

Writing Your Own RTF Converter

http://www.codeproject.com/KB/recipes/RtfConverter.aspx

[.NET, C# 2.0] Компонент, предназначенный для «синтаксического разбора», интерпретации и преобразования RTF-документов в другие форматы.


При создании этого компонента автор ставил перед собой следующие цели:

К сожалению, в настоящее время данный компонент не поддерживает обработку таблиц, списков и автоматической нумерации. :(

CBitmapEx – C++-класс для работы с BMP

http://www.codeproject.com/KB/graphics/CBitmapEx.aspx

[C++, WinAPI] Класс, предназначенный для обработки изображений в формате BMP и не зависящий от MFC и других библиотек. Поддерживаются масштабирование, вращение и применение различных фильтров; отрисовка с использованием прозрачности и градиентов. Изображение может быть загружено из файла с глубиной цвета 8, 16, 24 или 32 бита, однако все «внутренние» операции выполняются «на максимальной глубине» – 32 бита. Преобразованное изображение может быть затем сохранено в стандартном для Windows 24-битном формате. Использовать данный класс предельно просто:

        #include
        "BitmapEx.h"
        // Загружаем битмап
CBitmapEx bitmapEx;
bitmapEx.Load(_T("Enter bitmap source file path here..."));

// Делаем с ним все, что хотим

bitmapEx.Rotate(45);
bitmapEx.Sepia();
bitmapEx.Scale(50, 50);

// Рисуем результат в требуемом контексте устройства
bitmapEx.Draw(hDC);

// Сохраняем битмап
bitmapEx.Save(_T("Enter bitmap destination file path here..."));

Style Toolkit – библиотека для создания пользовательского интерфейса

http://www.codeproject.com/KB/GDI-plus/Style_Toolkit.aspx

[C++, MFC, GDI+] Библиотека, позволяющая «осовременить» внешний вид создаваемых приложений при помощи градиентных заливок, эффектов прозрачности, PNG-изображений и т.п.


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

Cabinet File (*.CAB) Compression and Extraction – версия 9.9

http://www.codeproject.com/KB/files/CABCompressExtract.aspx

[C++, MC++, C#] Библиотека для работы с «архивами» формата «Microsoft Cabinet» (.CAB); поддерживается как создание таких архивов, так и извлечение из них отдельных файлов. Предлагаются два варианта библиотеки, использующие общее ядро, написанное на «чистом» C++: один для применения при разработке «неуправляемых» приложений на C++, а второй – для приложений, использующих .NET Framework. Заметим, что оба варианта поддерживают архитектуры процессора x86 и x64.

К основным преимуществам своего творения автор относит следующее:

К библиотеке прилагаются документация в формате CHM и примеры использования, с «боевым» вариантом ее применения можно ознакомиться в статье An Intelligent .NET Multilanguage Installer того же автора.

Статьи

Automatically Starting your Application on Windows Mobile

http://www.codeproject.com/KB/mobile/WiMoAutostart.aspx

[.NET, C#, WM5/6] В статье рассматриваются различные варианты автоматического запуска приложений на платформе Windows Mobile: по графику; при вставке карты памяти, на которой расположено само приложение; при загрузке устройства; в ответ на различные системные события, такие как соединение устройства с локальной сетью или изменение имени устройства.

Blend PDF with Silverlight

http://www.codeproject.com/KB/silverlight/BlendPDFwithSilverlight.aspx

[.NET, C#, Silverlight] Статья посвящена совместному визуальному использованию документов в формате PDF и технологии Silverlight с поддержкой двунаправленного обмена данными.


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

Эта же статья предлагает альтернативный, ориентированный на клиентскую сторону подход, который объединяет PDF-документ(ы) и «несущее» Silverlight-приложение в веб-браузере, исключая тем самым необходимость в серверной логике, реализующей обработку пользовательских PDF-файлов для сбора данных. Преимущества данного решения (включая, в первую очередь, более высокую масштабируемость) будут особенно заметны в том случае, когда мы имеем дело с целым набором PDF-форм, поскольку оно позволяет серверу приложений оперировать только «чистыми» данными и бизнес-логикой, избавляя его от обработки PDF-документов.

Parsing Expression Grammar Support for C# 3.0 Part 1 – PEG Lib and Parser Generator

http://www.codeproject.com/KB/recipes/grammar_support_1.aspx

[.NET, C# 3.0] Статья (по словам автора, первая в планируемой серии) рассказывает о применении для синтаксического анализа методологии, известной как Parsing expression grammar, с использованием новых возможностей, появившихся в версии 3.0 языка C#. Как пишет сам автор, «PEG может быть легко реализована на любом языке программирования, но особенно хорошо эта методология вписывается в функциональные языки, а также в императивные языки, имеющие функциональные расширения, поскольку концепции PEG тесно связаны с взаимно рекурсивными вызовами функций, семантикой «минимального вычисления» для булевых выражений и функциями, определяемыми in-place (лямбдами)».

Утилиты

ToDoList 5.6.6

http://www.abstractspoon.com/tdl_resources.html

http://www.codeproject.com/KB/applications/todolist2.aspx

Этот проект стартовал еще в ноябре 2003 года и, судя по всему, совершенно не намерен останавливаться в своем развитии. :) ToDoList представляет собой иерархический менеджер задач с возможностью назначения приоритетов, исполнителей и сроков исполнения; отслеживания текущего статуса задач; etc. Поддерживается также генерация отчетов в формате XML.


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


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