Приложения:
Проекты:
Документация:
|
/Главная/index.html
Добро пожаловать на мою домашнюю
страницу!
Последнее
обновление 19/2/2006.
Здесь будут собраны наиболее интересные примеры программ, над которыми
я работал.
Пока выложил только один проект - Web-based application server. Говоря
коротко, это приложение на C++, которое принимает HTTP-запросы,
формирует SQL-запросы к базе данных (MySQL), форматирует HTML-страницу
в соответствии с шаблонными файлами и посылает ее назад клиенту в
браузер. В сервере реализованы следующие идеи:
- Многопоточность: один процесс занят исключительно тем, что
принимает запросы на соединения из сокета (функция accept) и помещает
эти запрос в очередь; в то же время несколько процессов-обработчиков
вынимают запросы из очереди и обслуживают их.
- Скриптовый язык на стороне сервера, на котором написаны шаблоны
страниц. Язык понимает декларирование простых переменных, функций и
некоторых структур, операторы if и while, блочные операторы
произвольной вложенности, действия над числами и строками произвольной
сложности.
С практической точки зрения эта система довольно бесполезна, так как
существует множество гораздо более продвинутых систем подобного
назначения. Но некоторые использованные здесь приемы могут быть
интересны программистам. Например:
- Контейнерные и строковые классы реализованы в собственной
библиотеке без использования STL.
- В иерархии классов бизнес-логика отделена и не зависит от
отстальных низкоуровневых классов типа классов-оболочек БД или ОС.
- Нет глобальных переменных.
Просмотреть код можно здесь, а скачать здесь. Директории организованы следующим образом:
- collection - постые
типы данных (string, datetime, exception) и контейнерные библиотеки
(массивы, векторы и бинарные деревья) далее>>
- os - классы-оболички для
доступа к ресурсам ОС (файлы, директории, сокеты, нити) далее>>
- sql - классы для
манипуляций с SQL-данными далее>>
- dbdrivers - классы для
доступа к доступа к БД далее>>
- lang - скриптовый язык,
исполняемый на сервере далее>>
- app - классы,
специфичные для конкретного приложения, а также классы обработки
HTTP-запросов, управления HTTP-сессиями и процессами-обработчиками далее>>
- db - SQL-скрипты для
создания и инициализации таблиц в БД;
- mhtml - шаблоны для
форматирования страниц.
|