Сумрачный блог Кирилла Панфилова

Текущее

Наконец-то взялся за себя и продолжаю 5 версию Meruert, и совсем скоро она выйдет — не со всеми изменениями, что я планировал, но тянуть дальше не хочется, и так много времени потеряно. А большинство теперешних сайтов я делаю как раз на альфах пятого Меруерта.

Кроме того, изучил вопрос и взялся за написание своего RTE (редактора расширенного/визуального форматирования), чтобы его можно было легко прикрутить к любому движку или самописному сайту, чтобы он работал в минимальной конфигурации (1 файл), чтобы был настраиваемым максимально (дизайн, плагины, состав кнопок и т.п.), чтобы можно было легко переключаться между режимами. Важно, чтобы там можно было вообще задавать свои действия кнопкам. Основа положена, но к релизу 5 Меруерта я уже не успею дописать. В будущем, вероятно, я включу редактор и в сборку Shinobi.

Ну и Берите.инфо, конечно, тоже ждут перемены.

Редакторы и менеджеры в CMS

Сейчас буду опять возмущаться.

Поставил 7-й Drupal для демонстрации и обнаружил, что внутри нет визуального редактора. Т.е. когда пишешь статью, тэги надо руками писать (для меня нормально, а для контент-редактора?). Полез гуглить, оказывается, по умолчанию в друпале и нет такого! Можно загрузить модуль WYSIWYG, который вроде как решает эту проблему. Фигушки! Он просто даёт список RTE (Rich Text Editor, редакторов расширенного форматирования) и ссылки, где их взять. Ладно, иду и скачиваю CKEditor, вроде себя зарекомендовавший (хотя в своих CMS я использую NicEdit, по умолчанию включённый в сборку, но отключаемый). К слову, список RTE уводит за пределы сайта, и надо либо возвращаться, либо снова набирать URL — почему не сделать открытие в новом окне? Закачиваю в указанную директорию на своём сайте, проставляю права (Drupal явно не следует принципу «поставил и работай»). Возвращаюсь в конфигурацию, проставляю найденный наконец друпалом редактор. Возвращаюсь на страницу, где я хочу добавить материал. Вижу, что Drupal редактор-то подцепил, а вот его кнопки нет! Что за чёрт? Время на это тратить не хочется. Переходим к редактору TinyMCE. Скачиваем, копируем на сервер по инструкции. Пытаемся, уже откровенно ругаясь, заменить CKEditor на TinyMCE, и тут в процессе случайно натыкаемся на настройки CKEditor. И честно, у меня глаза на лоб полезли. В настройках по умолчанию отключены все кнопки. Т.е. чтобы сделать полноценный редактор, мне надо было протыкать все галочки рядом с названиями кнопок.

Внимание, вопрос. Почему в визуальном редакторе по умолчанию отключены кнопки? Это был риторический вопрос.

Про то, что в WordPress нет нормального файлового менеджера, и задача положить файл произвольного формата на сайт превращается в танцы с бубном и китайскими приседаниями, я уже писал. В Meruert файловый менеджер занимает что-то около 25 строк программного кода — не думаю, что что-то подобное сильно утяжелило бы CMS WordPress.

Про то, что Joomla весит 25 Мб, а умеет только делать страницы, авторизацию, пользователей и их права, я ещё не писал, но я ещё попозже повозмущаюсь на эту тему, потому что тот же Shinobi умеет в 20 раз больше, а весит 120 Кб.

Meruert 4

Изображение

На днях вышла в свет четвёртая версия CMS Meruert Lulu. Среди пакетов локализаций (кроме английского, русского, французского и португальского) появился польский язык, а кроме того, сборка укомплектована 6 новыми темами дизайна — одной для деловых сайтов-визиток и целой серией тем «Gourmandises» («Лакомства»). Пять цветовых схем основной темы дизайна всё так же генерируются движком. Теперь выбор визуальной части вашего сайта стал ещё богаче.

Internet Polyglot

Валидация форм и её необходимость

Когда мы пытаемся открыть дверь не тем ключом, мы сразу понимаем, что что-то не так, и берём другой ключ. Когда мы заполняем бланк неправильно, мы его комкаем и выкидываем, берём бумагу снова и заполняем второй раз — это изначально настраивает на правильное заполнение строк (особенно если бланк большой и подробный, например, договор с банком). Если мы отправляем бумажное письмо без заголовка, конверт не сообщает нам, что мы что-то делаем неправильно.

Интернет же изначально приучает к бардаку, расслабленному и невнимательному отношению к тому, что мы делаем. Неправильный пароль — нам сообщат об этом. Забыли заполнить какое-то поле — услужливо подсказали, какое. Не вписали тему сообщение — «вы действительно хотите отправить письмо без темы»?

Да, действительно хочу.

Я хочу писать в интернете по человеческим правилам, а не по электронным. Если я что-то забыл — моя вина. (Пользователи должны помнить свои пароли, а не восстанавливать при каждом посещении в силу своей забывчивости.) Если я что-то не захотел заполнять — моё право.

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

В CMS Meruert Lulu я попытался обойтись вообще без сообщений валидатора. Данные проверяются, но:

1) отношение к ним не такое строгое, как могло бы быть: если пользователь что-то не ввёл, значит, ему просто не захотелось — из этого я и исхожу. Если что-то введено неправильно (это только про критичные случаи), то просто ничего не получится (например, не получится войти с неправильным паролем),

2) в системе нет ни одного сообщение об ошибке (впрочем, и об успешном выполнении задачи тоже: эти сообщения уже навязли в зубах, особенно слово «успешно») — если всё хорошо, то результат и так виден; если что-то не получилось (что сложно представить), то и результата не будет.

Почта Gmail, если я в письме употребил слово «приложено» или подобные, но не прикрепил к письму ничего, сообщит мне об этом: а вдруг я что-то хотел приложить, но забыл? Забота и внимание к пользователю, достойные уважения, но именно эта забота делает пользователей интернета невнимательными: робот всё будет помнить за меня.

Знак ударения в HTML

Для того, чтобы поставить знак ударения над словом при вёрстке HTML-документов, нужно после гласной поставить код ́ — например, разметка «сего́дня» будет отображена как «сего́дня».