Главная  /  Правка версии 10  /  Правка версии 11  /   /  Область пользователей

Отличия "Часто Задаваемые Вопросы" вер. 10 сравн. вер. 11

Содержимое:

<!--toc-->
####Вы сумасшедший или мазохист?
Насколько мне известно — нет.
####Зачем создавать веб-сайты на C++?
Есть много причин, смотрите [Обоснование CppCMS](/wikipp/ru/page/rationale).
####CppCMS — это такая же готовая система управления контентом (CMS), как Drupal?
Нет, CppCMS не является системой управления контентом (CMS) аналогичной Drupal, это фреймворк веб-разработки, такой как Django или RoR.
####Если CppCMS не CMS, откуда пришло это название?
Оригинальная идея — «Напиши собственную _CMS_ на _C++_»
####Зачем делать веб-сайты на C++? Это опасный язык!
Современный C++ — безусловно сложный язык и требует гораздо больше времени для ознакомления, по сравнению с динамическими языками вроде Python или PHP, или статическими вроде C#/Java, которые очень популярны в веб-разработке.
Однако если Вы в нем разберетесь, у Вас есть огромный набор средств, позволяющих писать приложения быстро и безопасно, без утечек памяти и случайных падений. Если Вы придерживаетесь принципов [RAII](http://ru.wikipedia.org/wiki/RAII), пишете защищенный код с использованием исключений и _понимаете,_ как работает STL, для вас всё будет простым и вполне ясным.
####Разве главным узким местом любого веб-приложения не является SQL-движок, а не язык серверной части?
Это весьма распространенное заблуждение. И его весьма легко проверить. Запустив простые тесты производительности типичной CMS вы обнаружите, что она может создавать около 5-50 страниц в секунду.
Если Вы возьмете лог SQL-запросов к базе данных и запустите их аналогично тому, как если бы они были запросами от движка CMS, то обнаружите, что можете достичь 1000 запросов в секунду (запросов, не SQL-запросов)... Таким образом, SQL создает около 5% от Вашей общей проблемы производительности.
Фактически, если взять действительно большие проекты вроде Википедии, можно обнаружить, что гораздо больше вычислительных ресурсов тратится на обработку PHP, чем на обработку SQL-запросов.
См.: ["Является ли база данных узким местом веб-сервиса?"](http://art-blog.no-ip.info/cppcms/blog/post/42)
####Как я могу помочь?
Прочитайте [это руководство](/wikipp/ru/page/contrib)
####Какова политика лицензирования?
фреймворк лицензируется на условиях [LGPL](http://ru.wikipedia.org/wiki/GNU_Lesser_General_Public_License) и других, совместимых с LGPL лицензий. Это означает (в основном):
1. Вы можете создавать коммерческие и FOSS приложения с этим фреймворком.
2. Вы **обязаны** свободно распространять изменения, сделанные в фреймворке самостоятельно. Однако это не заставляет Вас также распространять свой собственный код приложений.
Приложения основанные на CppCMS, являющиеся часть Проекта CppCMS Project (как этот wiki) лицензируются на условиях [GPL](http://ru.wikipedia.org/wiki/GPL).
####Планируете ли Вы изменить лицензию фреймворка в будущем?
Пока я не сошел с ума (см. Q1), я не не собираюсь менять лицензию на проприетарную или жесткую [копилефт-лицензию](http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BF%D0%B8%D0%BB%D0%B5%D1%84%D1%82). Т.е.:
1. Я не закрою исходники.
2. Я не переключусь на что-то вроде GPL и заставлю коммерческих пользователей приобретать лицензии (как Trolltech или C++ Web Toolkit).
Я могу изменить лицензию на что-то более разрешающее.
####Какие из текущих фреймворков на Вас повлияли?
В основном Django. Иногда, когда я хочу добавить какое-нибудь новшество в CppCMS, я читаю документацию Django и пытаюсь понять, как они это сделали.
Хорошие примеры: наследование темплейтов и форм.
####Это кроссплатформенный проект?
_Короткий ответ:_ Да
_Более длинный ответ:_ Зависит от того, какой Вы видите кросс-платформенную переносимость.
_Длинный ответ:_
Версия 0.0.x этого фреймворка написана для [POSIX](http://ru.wikipedia.org/wiki/Posix)-совместимых/Unix-подобных платформ. Известно, что она работает на Linux, FreeBSD, Solaris и Windows/Cygwin.
Windows не поддерживает стандарты POSIX, поэтому CppCMS 0.0.x можно собрать только через уровень совместимости с POSIX — Cygwin.
Фреймворк не работает в виде «родного» приложения Win32API, его нельзя собрать или отладить с помощью средств Microsoft.
Будущий релиз CppCMS 1.x.x поддерживает нативные сборки Windows без слоя совместимости POSIX, включая поддержку компилятора MSVC9. Однако, поддержка Windows — это поддержка вторичного приоритета, что связано с сущностью CppCMS, не соответствующей «стилю разработки Microsoft».
####Зачем откомпилированные темплейты?<br/>Почему не использовать систему интерпретации темлейтов или XSLT?
Давайте начнем с истории. Первая система темплейтов CppCMS (CppCMS 0.0.1b) была интерпретируемой и динамически типизируемой. Она требовала от пользователя обеспечения некоторой склейки между используемыми ими данными и системой рендеринга.
Но эта система темплейтов была отброшена в пользу статически типизируемых компилируемых темплейтов по следующим причинам:
- C++ нерефлективный, статически типизируемый язык, поэтому выполнение проверок типов времени компиляции потребовал бы реализации C++ парсера, что почти невозможно.
- В компилируемых темплейтах множество проверок может осуществляться самим C++ компилятором.
Это очень важно для генерации HTML, потому что Модульное Тестирование пользовательских интерфейсов крайне сложно и потому статическая типизация дает значительное преимуществом, перенося большую часть тестирования в этап компиляции.
- Гораздо более сложные типы данных могут поддерживаться всего лишь введением оператора `<<` над `std::ostream`.
- Введение наследования темплейтов, поддержка стандартных структур данных (контейнеров), таких как list, map, hash-таблиц и даже типов определенных пользователем - становится тривиальным.
Есть несколько недостатков компилируемых темплейтов:
- Обновление темплейта требует перекомпиляцию и перелинковку отображения или даже самого приложения.
- Такие обновления требуют перезапуск приложения.
Первое еще не так критично, потому что при использовании темплейтов, компилируемых в совместно используемые объекты или dlls, время компиляции значительно сокращается и пользователю не требуется ждать долго. Например, компиляция и линковка темплейтов wikipp, занимает около 1.5 секунд.
Второе относится к CppCMS 1.x.x, в котором темплейты могут автоматически перезагружаться как совместно используемые объекты отображения или dll, обновляемые без рестарта всего приложения.
_Доп. примечание:_ Ничто не запрещает Вам использовать любую другую систему темплейтов. Если Вы находите это удобным, можете всегда писать вывод напрямую без темплейтов.

Проект

CppCMS является основой веб-разработки для выполнения ресурсоемких приложений.

Размещение

SourceForge.net Logo

Поддержать проект

CppCMS needs You


Навигация

Главная страница


Валидация CSS | Валидация XHTML 1.0