четверг, 26 февраля 2009 г.

Intellect Board Lite

Вчера вечером возникла идея написать упрощенную версию Intellect Board, так как стало ясно, что в ближайшее время я версию 3.x вряд ли напишу: слишком уж огромные были замыслы, в которой реализовать только функциональность именно форума, и то без особой избыточности и уж тем более без погони за полной универсальностью. Эта версия получит название Intellect Board Lite и станет переходной между 2.x.

Идея захватила меня настолько, что сегодня утром я без всякого будильника проснулся относительно рано, и впервые более чем за последний год чувствовал себя реально бодрым, собранным и замотивированным. Кроме того, ночью возникла мысль, как реализовать в нем ту идею с универсальной таблицей объектов, которую я откладывал на IntB 3.x, но без задаваемых полей (точнее, с их значительно более упрощенной реализацией).

В итоге я сразу же, не выходя в Сеть сел и начал писать код. Сначала сделал основную часть, во многом заимствовав код для обработки HURLs из TextCMS (которую все никак не могу довести хотя бы до второй беты), а модуль для работы с базами данных взял от 3.x почти без изменений, только отказался от сложной процедуры сохранения объекта в БД, заменив ее набором обычных методов, выполняющими запросы UPDATE, INSERT, REPLACE, а решение, какой из запросов выполнить, будет приниматься на уровне модуля. Потом возник вопрос с организацией шаблонизации. Сначала была мысль использовать FastTemplate, но в итоге я отказался от этой идеи и оказался перед выбором: либо использовать такую же систему, как в TextCMS, на основе загрузки шаблона в строку и замены строк прямо в программных модулях (частично нарушая тем самым принцип MVC), либо использовать шаблонизатор из IntB 3.x, который я хотя и написал, но толком не оттестировал, и вообще у меня было ощущение, что он весьма ненадежен.

Ни тот, ни другой вариант меня не устраивал. Но я чувствовал, что есть какое-то другое решение, которое я никак не могу найти. В результате я решил поступить следующим образом: выключил компьютер, сел на диван и ушел в транс. И через некоторое время решение нашлось. Причем оно оказалось достаточно простым (реализация 4 основных процедур заняла не более 50 осмысленных строк кода) и надежным, хотя и весьма необычным.

Любопытно, что те решения, которые я находил, когда писал IntB 2.x, были строго однозначными и трудноизменяемыми в дальнейшем, тогда как сейчас я изначально закладываю некоторую гибкость и многовариантность... Интересно, в чем тут дело: в обычном опыте или же в переходе с нечетного (тогда у меня основным был третий) уровня ТУАИ на какой-то четный (интересно, только шестой или четвертый).

В итоге к вечеру я написал и даже немного оттестировал и "ядро" IntB Lite, и его шаблонизатор. Осталось выполнить несколько мелких доделок, а также написать модули главной страницы, категории, списка тем и просмотра темы и у меня будет готовый работающий прототип пользовательской части. Правда, администрировать/модерировать его придется посредством phpMyAdmin.

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

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


Комментариев нет: