Vanish>Ок, тогда потихоньку начну задавть вопросы...
Поехали
Vanish>в общем то исходя из Smarty и ADODB, получается что только PHP, потому как эти вещи PHP ориентированы =)
Да у меня это как бы подразумевается. Особенно - учитывая нынешнюю распространённость языка
Просто, на всякий случай этот вопрос открытым оставляю
>а допустим рутинные вещи вроде перевода старых топиков в статичный арихив можно и на Perl сделать.
В этом смысле Perl ничуть не лучше PHP
Так что - без особой разницы.
Vanish>Не очень ясно про промежуточный интерфейс. Если я правильно понимаю будет попытка создания универсального интерфейса позволяющего работать с различными решениями вроде ADODB. Имеет ли это смысл?
Функциональности ADODB очевидно мало
Во-первых, это уже явная заточка под SQL, что не обязательно для малых и мредних систем (моя система благополучно жила на плоских файлах года два, если не три
), во-вторых, там недостаёт функциональности. Так что вылезают следующие уровни:
- Уровень абстракции БД (без привязки к SQL!) - либо полностью автономный (как сейчас), либо надстройка над тем же ADODB, чтобы одним драйвером обеспечить, скажем, совместимость сразу с рядом SQL-систем
- Уровень работы с объектами, надстройка над ДБ-драйвером. Лучше не совмещать с ним, т.к. позволит вынести много общего кода, упростив написание драйверов под иные форматы хранения данных.
- Собственно, уровень приложения, когда скрипт системы обращается к БД, извлекает что надо и т.п.
Ну, от балды, простейший реальный пример:
code php
<?
$page = 'http://airbase.ru/hangar/';
$hts = new DataBaseHTS();
$title = $hts->get_data($page, 'title');
?>
Класс DataBaseHTS при создании, если нужно, создаст экземпляр класса доступа к БД, если уже таковой есть - возьмёт ссылку на него из глобального кэша.
метод get_data() - нормализует URL, считает идентификатор, соответствующий этому URL, заберёт данные, хранящиеся в нужной таблице. Если же такие обращения уже были, то заберёт данные из кеша.
Вообще, высокий уровень абстракции делает программирование системы очень простым и компактным, а за счёт возможности потратить свои временные ресурсы на оптимизацию алгоритмов - ещё и быстрым. Скажем, весь код вывода страниц сайта у меня укладывается в 158 строк (работа со Smarty).
Vanish>phpBB скины достаточно близки по идеологии к шаблонам Smarty, чего не скажешь о IPB. Стоит ли вообще заниматься этой проблемой, ведь можно убить кучу времени и при том не получить универсального конвертера.
ИМХО, стоит. В случае успеха выигрышь будет колоссальным. Сотни скинов от основных фаворитов. От лаконичных phpBB до наворочанных iPB.
В случае iPB, конечно, придётся повозится, но оно того стоит.
Vanish>Далее одной из задач которая ставится - скорость работы. Smarty и ADODB функциональны, но и в то же время снижают скорость работы. Более того наврятли будут использоваться более 50% возможностей того же Smarty...
Ну, у меня пока Smarty только ускоряет работу и мою и скриптов
Во-первых, у него очень хорошая система кеширования, которая легко управляется моим движком, во-вторых, он очень экономит время разработки. Я не на 50%, я, дай Бог, на 20% использую этот движок. Но я на нём сэкономил, м.б. месяц времени разработки и имею очень хорошую производительность
>ADODB универсальная обертка для работы с различными БД серверами, это хорошо с одной стороны свобода выбора, но с другой стороны пользователь будет использовать в конечном итоге определенный сервер и лишний функционал по поддержкуе скажем Oracle или PostgreSQL ему уже не нужен будет.
Вот про ADODB ничего не скажу, сам его прямо не использовал, только в сторонних продуктах.
Но всё ещё проще. Драйвер БД будет отдельным и изначально ориентированным на MySQL (хотя бы потому, что ADODB сейчас не совместим с MySQL 4.1.x, который я использую
), но его, после переноса в него части кода из объектного драйвера, будет легко переписать под любую систему. Как нативную БД, так и универсальный лейер. В любом случае непосредственно сейчас я этим заниматься не буду
Нам бы запустить функционал форума на MySQL
Vanish>Остальные наработки читаю, из них вывод сделал, что будет использован ООП подход при разработке, очевидно, что что то очень близкое к MVC модели.
Не слышал про MVC, или слышал, но не ассоциирую название
>Потому очень интересно как система будет опознавать какие ей модули нужны, или она вообще будет подключать все имеющиеся модули сразу.
Сейчас система подключаемых модулей реализована в компиляторе языка разметки. Там все модули подключаются разом. Пре- и постобработка просто обрабатывают текст. Функции обработки тэгов компилируются, и вызываются парсером по мере надобности (т.е. обработка тэгов, которые не встречаются в тексте не происходит)
Что приходит в голову по дальнейшей декомпозиции:
- Вынос в модули функций создания страниц (т.е. тот же нынешний Smarty-модуль)
- Разделение нынешнего объектного модуля на три части (считывание данных, запись данных и обработка данных) и вынос их в отдельные модули. Это позволит легко и прозрачно переключаться от одного метода хранения данных к другому.
>Что понимается под ядром системы и какие функции оно должно реализовать.
Связка всех модулей
Vanish>В голове еще крутятся вопросы, уже более по техническому подходу, но они наверное могут быть сформированы только после того как узнаю ответы на более общие вопросы.
Ещё поройся в топике
Что есть работающего в данный момент