Новый сайт, теперь на вордпрессе
24 февраля 2015 г.
Я начал вести сайт давно, где-то в 2000 году. Сперва это были простые странички, шапка с навигацией и iframe с подгружаемым html файлом. Одна из страниц была с записями происходящего, некое подобие блога (тогда ещё небыло слова блог).
Потом, когда я заканчивал институт и занялся веб-дизайном, понял, что пора переделывать сайт. Начал делать вторую версию. Он мне быстро разонравился — я понял что это тупиковый способ вести сайт. Поэтому я сделал новый — тупо страницу с огромной иллюстрацией и списком ссылок на картинки, просто чтобы где-то их хранить, а блог стал вести в LiveJournal, он набирал популярность и был элитным роскошеством по инвайтам.
Когда мы организовались в студию, сайты со сложным программированием мы с коллегами делали на дотнете и пхп. Для простых сайтов иногда на языке Parser — по сути внедряющаяся в html разметка кодом, добавляющая циклы, функции, шаблоны и работу с базой данных. Это вполне себе язык, простой как бейсик, но уже тогда он слабо развивался. Достаточный минимум с известными ограничениями. Я его выбрал за простоту, чтобы сделать себе сайт, откладывать уже не хотелось. Сперва там были только галереи с картинками.
ЖЖ стал потихоньку отмирать, я написал на сайте простой блог, стал дублировать записи туда. Сайт я совершенстовал и менял часто, иногда даже чаще чем писал в блог на этом сайте. Были периоды, когда я раз в месяц достаточно сильно менял оформление, просто для развлечения. Потом я начал улучшать блог. И это оказалась ужасная мука — мне захотелось сделать тэги. Сперва, разумеется, я сделал просто (заповедь разработчика: «сначала сделай просто, чтоб жило во времени, и потом улучшай») — приписывал к записи БД поле «tag», и вот все мои посты обзавелись возможностью иметь один тэг (правильнее назвать это Рубрикой).
Начал делать нормальную структуру тэгов: таблица уникальных записей, таблица уникальных тэгов и таблица соответствий записи к тэгу. Много соответствий у записи — много тэгов. Это оказалось задачей посложнее, но её я сделал.
А вот третье усложнение мне далось не до конца. На вид просто — надо было сделать, чтоб при редактировании тэгов у записи в блоге они правильно перезаписывались. Оказалось что это не простая задача. На Parser она превращалась в головоломку на подобие языка Brainfuck. Кратко — в момент сохранения записи мне надо было проверить все ли тэги в порядке, появились ли новые, записать новые, выбрать старые, удалить старые, проверить появились ли после этого неиспользуемые тэги, удалить неиспользуемые, проверить тэги на дубликаты а соответствия на повторения. И всё это с синтаксисом, не предназначенным для сложной логики (массивы, например, обходятся с помощью указателя).
Вот например кусочек месива. Можно разглядеть цикл в цикле с проверками и ползанием указателем по массиву:
# Ищем дубликаты в таблице пост-тэг # если находим дубль который ещё не записали #в таблицу на удаление, то дописываем ^for[i](0;$all_tagblog){ ^all_tagblog.offset[set]($i) $check_id($all_tagblog.id) $check_post_id($all_tagblog.post_id) $check_tag_id($all_tagblog.tag_id) ^for[j]($i;$all_tagblog){ ^all_tagblog.offset[set]($j) ^if( ($all_tagblog.id != $check_id) && ($all_tagblog.post_id eq $check_post_id) && ($all_tagblog.tag_id eq $check_tag_id) ){ ^if(!^tagblog_to_delete.locate[id;$all_tagblog.id]){ ^tagblog_to_delete.append[$all_tagblog.id] } } } }
Написал. Кода получалось много, больше чем остального сайта. Но, иногда срабатывало не правильно!
На поиск ошибки меня уже не хватило. Я не настоящий программист, а упорный веб-дизайнер. И главное — стало очевидно, что пора менять инструмент. В студии мы тем временем уже сменили дотнет с пхп на Symfony, а симфони сменили на Ruby-on-rails, а простые сайты стали делать на WordPress и Drupal.
Сайт на парсере существовал до сегодняшнего дня, когда я набираю эти слова, теперь это история. Мне стукнуло 34, сайту 15, я решил сделать новый сайт на вордпресс, чтобы не изобретать велосипед.
Выбор прост — уже сейчас вордпресс некто не догонит по скорости роста, хотя он и далёк от совершенства. В нем неудобно работать с тысячью записей (а заводить из них custom post type давно можно, но всё ещё рано), неудобная работа с медиафайлами и много чего нет «из коробки». Но, всё, что в нем уже реализовано, закрывает 90% необходимых потребностей, чем сильно экономит время.
За три дня я легко мигрировал контентом (благодаря тому что на старом сайте у меня был RSS) и оформлением (весь CSS и куски для темплейтов давно продумал). Потом, 5 дней в борьбе за правильный вывод и доводка.