S2 → Блог

S2 1.0 beta 5

28 декабря 2014 года, 20:47

С момента предыдущего выпуска прошло много времени. Я обновил дистрибутивы и написал о плане развития движка.

Доработки и исправления

В новой версии 1.0 beta 5 заработала функция «избранное»: появился раздел с избранными страницами.

Также был переработан механизм формирования и парсинга URL. Традиционные адреса страниц отражают иерархическую структуру сайта. В настройке теперь можно включить одноуровневые адреса из хоста и фрагмента URL. В них структура сайта игнорируется.

В менеджере картинок появился новый флажок «высокое разрешение». Он упрощает вставку картинок для ретины, когда в теге img прописываются размеры в два раза меньше настоящих.

Мелкие исправления: решена проблема 2037 года при установке cookies, интерпретатор PHP не обрабатывает загружаемые файлы *.php5 благодаря настройке в .htaccess, функция preg_replace() с флагом e заменена на preg_replace_callback().

Новые формулы на латехе

В движке уже давно появилось расширение s2_latex для вставки формул на латехе. Оно работало с сервисом codecogs.com.

Теперь я сделал свой сервис. Он не глючит и размещает svg-формулы с выравниванием по базовой линии. Расширение s2_latex интегрирует этот сервис в S2.

Развитие движка

Я задумывался о будущем движка. Идей по улучшению много. Самая главная — переписать заново админскую панель управления на клиентском фреймворке для одностраничных приложений вроде Ember.js. Текущая архитектура на джейкверивских колбеках и лапше из аякс-обработчиков недостаточно гибкая, с ней неприятно работать.

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

Если производительность и архитектура будут меня устраивать, эта разработка станет версией 2.0 движка S2.

Ключевые слова: релизы |

S2 1.0 beta 4

20 апреля 2013 года, 20:19

Вышла новая версия движка S2 1.0 beta 4. В ней доработана система комментариев. Если включен режим предварительной проверки комментариев, и вы вошли в панель управления, например, чтобы опубликовать поступивший комментарий, ваш ответный комментарий без дополнительных проверок будет опубликован сразу.

Модераторам и подписавшимся комментаторам теперь присылаются разные уведомления о новых комментариях. Модератор может ответить на такое письмо, и ответ сразу уйдет автору комментария.

В стиле по умолчанию появилась навигация с помощью стрелок и сохранение еще не отправленных комментариев в хранилище браузера (localStorage). При сбоях творчество комментаторов не потеряется. Чтобы эти функции заработали в ваших стилях, подключите к ним скрипт из стиля zeta.

В панель управления добавлен новый механизм обозначения выдержки — тег «<cut>». Он разбивает текст на две части, и первая из них используется как выдержка. В настройке сайта можно выбирать между старым и новым способами.

Расширения также были доработаны. В визуальном редакторе появились надписи на русском языке. Поиск выводит подходящие к запросу ключевые слова.

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

Как обычно, в панели управления исправлены найденные досадные баги: в дереве страниц; клавиатурные сокращения; автодополнение при вводе ключевых слов.

Ключевые слова: релизы | Комментарии (2)

S2 1.0 beta 3

3 мая 2012 года, 13:13

Новая версия S2 1.0 beta 3 доступна для скачивания. В ней переработана панель управления. Переход на фреймворк jQuery и библиотеку создания деревьев jstree позволил внести упрощения и усовершенствования интерфейса, которые давно напрашивались.

  • Улучшена работа с деревом разделов и страниц, особенно перетаскивание мышью.
  • Ключевые слова теперь вводятся в обычное поле с автодополнением, а не выбираются в непонятных списках. Если ввести несуществующее ключевое слово, оно будет добавлено автоматически.
  • Переделан менеджер файлов. Теперь в нем можно перетаскивать (или удалять клавишей Delete) несколько файлов.
  • Обеспечена работа только с клавиатурой, без мыши. Например, вкладки переключаются комбинациями Ctrl + 1, Ctrl + 2 и т. д., есть комбинации клавиш для добавления некоторых тегов в редакторе (курсив Cltr + I, жирный Ctrl + B и др.).

В движке появилась автоматическая проверка и уведомление о выходе новых версий. Каждый раз при входе в панель управления (но не чаще, чем раз в два часа) проверяется последняя доступная на сервере версия и, если нужно, выводится сообщение. Включенную по умолчанию проверку можно отключить.

Новое расширение s2_highlight влючает подсветку HTML-кода в редакторе.

Как обычно, в движке были исправлены найденные ошибки. Также он стал еще немного умнее и дружелюбнее.

Перед установкой или обновлением прочитайте инструкцию.

Ключевые слова: релизы |

S2 1.0 beta 2

23 марта 2012 года, 13:30

В новой версии движка 1.0 beta 2 был сделан ряд мелких исправлений и добавлений. Устранены проблемы с загрузкой файлов, когда в php.ini установлено ограничение open_basedir. В панели управления теперь модный фон с шумом.

Расширение s2_search было существенно переработано и оптимизировано. В ходе этой работы в нем было найдено и исправлено много мелких ошибок. Поиск стал требовать вдвое меньше памяти, то есть новая версия s2_search сможет работать с сайтами больших объемов.

Новое расширение s2_tpl_edit добавляет в панель управления редактор шаблонов. Оно упростит работу с сайтом при частом изменении шаблонов.

В расширении s2_wysiwyg визуальный редактор Tinymce обновлен до последней версии 3.4.9.

Также были обновлены расширения s2_blog, s2_manage_extensions, s2_latex.

Перед установкой или обновлением прочитайте инструкцию.

Ключевые слова: релизы |

S2 1.0 beta

10 декабря 2011 года, 17:14

Вышла новая версия движка 1.0 beta. В ней была существенно доработана система пользователей.

Во-первых, каждый материал теперь привязан к своему пользователю. Во-вторых, уточнены права пользователей. Разрешение «редактировать сайт» разделено на два: «создавать страницы» (у авторов) и собственно «редактировать сайт» (у редакторов). Авторы могут изменять только свои материалы, а редакторы могут исправлять любые материалы. В-третьих, вместе с материалом можно выводить имя автора. Оно задается в панели управления и после этого отображается вместо метки <!-- s2_author -->.

Движок стал удобнее и безопаснее:

  • сеансы привязаны к IP-адресу: если IP меняется, пароль нужно ввести заново;
  • если сеанс заканчивается, для продолжения достаточно ввести пароль, а не думать, куда скопировать несохраненные данные, и перезагружать страницу;
  • в панель управления под одним логином можно входить с разных компьютеров или браузеров;
  • если в панель управления вошли с вашим логином в другом браузере, то в начале вашего нового сеанса будет выведено предупреждение об этом;
  • если во время редактирования страница была изменена другим пользователем, движок не перезапишет вашу версию поверх чужих изменений, вам будет предложено перенести ваши изменения в версию с чужими изменениями;
  • во время установки движок пытается определить, доступен ли сайт по защищенному протоколу https, и в этом случае включает принудительное его использование в панели управления.

Чтобы использовать последнюю возможность после обновления движка (и, разумеется, если на вашем хостинге есть https), можете добавить в config.php соответствующую константу.

Как я писал в предыдущий раз, в этой версии есть изменение, которое может вызвать несовместимость с текущими стилями. Оно связано с флажком «Выдержки статей и подразделов» в панели инструментов на вкладке редактирования. Его единственное предназначение заключалось в том, чтобы скрывать список дочерних элементов в разделах (отключать метку <!-- s2_subarticles -->). Этот флажок существовал в движке еще до появления метки <!-- s2_subarticles --> и сейчас удален как устаревший. После обновления поведение сайта станет таким, как будто флажок включен на всех страницах. Вместо него следует использовать переключение на шаблон, в котором нет этой метки.

В панели управления были удалены некоторые другие ненужные функции и были улучшены алгоритмы расстановки тегов <p> и <br>.

Расширения также были обновлены. Старые версии расширений s2_blog, s2_wysiwyg, s2_search, s2_manage_extensions с новой версией движка не заработают, их нужно обновить вместе с обновлением движка.

Инструкция по обновлению:

  1. Сделать резервную копию файлов движка и, что важнее, базы данных, чтобы ваша предыдущая работа не потерялась и чтобы в случае затруднений можно было откатиться назад.
  2. Отключить в панели управления все расширения.
  3. Переписать файлы движка и используемых расширений.
  4. Обновить расширения в панели управления.
  5. Включить все расширения.

Выпускать новую версию движка помогал Дмитрий Шкарбатов.

Ключевые слова: релизы | Комментарии (8)

S2 1.0 alpha 6

4 сентября 2011 года, 22:45

Выпуская версию 1.0 alpha 5, я написал, что следующей версией станет 1.0 beta с несколькими крупными изменениями в управлении учетными записями. Эти изменения я так и не сделал, однако внес множество других исправлений и улучшений и сейчас выпускаю S2 1.0 alpha 6.

В ядре движка и расширении s2_blog оптимизированы некоторые запросы к базе данных, движок стал еще быстрее.

Среди параметров настройки появился цвет фона панели управления. Это полезно, если у вас несколько сайтов на движке S2, или если кроме рабочего сайта есть тестовая установка S2. Благодаря цветовому кодированию почти невозможно перепутать панели управления разных сайтов.

В браузерах Firefox и Chrome упростилась загрузка файлов: их можно просто перетаскивать на панель управления. Надеюсь, новые технологии скоро будут поддерживаться и другими браузерами.

Также добавлено ограничение на типы загружаемых файлов. Раньше расширение загружаемых файлов никак не проверялось. Поэтому, если вы кому-то давали разрешение на редактирование сайта в панели управления, он мог загрузить, например, произвольный PHP-скрипт и получить полный доступ к серверу.

В шаблонах появилась новая метка <!-- s2_navigation_link -->. Она предназначена для добавления тегов <link> в секцию <head>, содержащих ссылки на соседние страницы. На основе этих тегов можно сделать навигацию с помощью Ctrl и стрелок.

Среди остальных изменений можно отметить следующее:

  • наконец я разобрался с поддержкой базы данных SQLite, новая версия S2 может работать с SQLite 3 через PDO;
  • в состав дистрибутива включен английский языковой пакет (переводить движок на английский помогал rab);
  • в дистрибутиве появился скрипт, обновляющий базу данных на лету;
  • теперь выдержки подразделов отображаются наряду с выдержками страниц;
  • разделы можно разбивать на страницы, количество выдержек регулируется в настройках;
  • улучшена работа ядра и расширения s2_search, когда нет перезаписи URL (отсутствует mod_rewrite);
  • доработана система оповещений в панели управления;
  • TinyMCE в составе визуального редактора (s2_wysiwyg) обновлен до версии 3.4.4.

Я по-прежнему хочу переделать учетные записи и в следующий раз выпустить 1.0 beta. Также в следующей версии появится изменение, которое может вызвать несовместимость с текущими стилями. Оно связано с флажком «Выдержки статей и подразделов» в панели инструментов на вкладке редактирования. Его единственное предназначение — скрывать список дочерних элементов в разделах (отключать метку <!-- s2_subarticles -->). Этот флажок существовал в движке еще до появления метки <!-- s2_subarticles --> и сейчас является устаревшим. Вместо него следует использовать переключение на шаблон, в котором нет этой метки. В следующей версии этот флажок исчезнет, а поведение сайта будет таким, как будто он включен на всех страницах.

Кстати, в документации описан процесс разработки расширений. Так как я взял реализацию расширений в PunBB, то и создание документации в основном свелась к переводу фрагмента документации PunBB. Переводить помогал Ty4ka.

Ключевые слова: релизы | Комментарии (2)

S2 1.0 alpha 5

14 июня 2011 года, 13:08

Прошло чуть больше месяца с момента выхода предыдущей версии движка, и я выпустил новую версию, S2 1.0 alpha 5.

Самое важное нововведение — система восстановления несохраненных текстов. Если в самый неподходящий момент пропало соединение с интернетом, завис браузер или отключилось электричество, набираемый текст не пропадет. Во время следующего входа в панель управления движок предложит восстановить текст.

Также появился альтернативный способ работы с ключевыми словами, примерно как в блоге. Добавлены страницы ключевых слов и метка <!-- s2_tags --> для создания списков ключевых слов, являющихся ссылками на эти страницы.

Как всегда, новая версия содержит исправления нескольких ошибок и другие мелкие улучшения.

Следующей будет выпущена версия 1.0 beta. В ней запланирована доработка многопользовательского режима и другие существенные улучшения.

Ключевые слова: релизы | Комментарии (15)

Быстродействие S2

18 мая 2011 года, 22:41

Рассмотрим вопрос о быстродействии S2. Если говорить кратко, S2 настолько быстр, насколько это возможно :) Давайте разберемся, почему это так.

Во-первых, в движке нет ненужного хлама. В его ядре реализованы самые необходимые вещи. Редко используемые функции [могут быть] выполнены как расширения.

Во-вторых, то, что в нем есть, сделано хорошо. Например, запросы к базе данных грамотно составлены и оптимизированы. Еще пример: если в шаблоне страницы нет какой-то части, вычислительные ресурсы на построение этой части не тратятся.

Перейдем от теории к практике. Сравним быстродействие S2 и WordPress. Важный параметр, влияющий на время сборки страниц, это количество запросов к базе данных. Обычно WordPress делает несколько десятков запросов, время сборки страницы составляет десятые доли секунды. Например, вот ресурсы для вывода главной страницы wordpress.org/news:

<!-- 19 queries. 0.277 seconds. -->

А вот для внутренней страницы:

<!-- 16 queries. 0.214 seconds. -->

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

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

Хотя безнадежное отставание WordPress уже очевидно, сравнение движков можно продолжить. Как показывают исследования, если в WordPress полностью отключить кеш, то будет сделано примерно полторы тысячи запросов к базе данных! Вообще удивительно, как можно было разработать движок блога, который принципиально способен сделать (то есть содержит код) полторы тысячи запросов!

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

Теперь вы знаете, почему S2 — простой и быстрый движок сайтов.

Комментарии (2)

S2 1.0 alpha 4

10 мая 2011 года, 23:54

Вышла новая версия S2 1.0 alpha 4.

Теперь S2 работает правильно, если не включена перезапись URL. Им можно пользоваться на непонятных серверах с криво настроенным Apache без включенного mod_rewrite. Наличие перезаписи URL автоматически проверяется при установке движка.

Переделана форма входа в панель управления. Она начинает «болтаться», когда вводят неправильный пароль.

В расширении s2_blog на главную страницу блога добавлены ссылки «туда» и «сюда». Они позволяют просматривать ранние посты и будут полезны случайным посетителям, не желающим разбираться с навигацией на сайте.

В расширении s2_latex включены svg-картинки в Firefox 4.0.

В расширении s2_wysiwyg визуальный редактор TinyMCE обновлен до версии 3.4.2.

Как всегда, исправлено много ошибок. Одно из исправлений касается работы с паролями. Из-за этого при обновлении могут быть проблемы с паролями, содержащими не только латинские буквы или цифры. Если в вашем пароле есть, например, русские буквы, временно смените его на пароль из латинских букв или цифр перед обновлением.

Еще одно исправление связано с сочетанием клавиш Ctrl + S (сохранение страницы), которое в предыдущей версии движка перестало работать в Опере 11.10.

Ключевые слова: релизы | Комментарии (2)

S2 1.0 alpha 3

14 марта 2011 года, 21:25

Я решил продолжить традицию частых выпусков промежуточных версий движка. Представляю версию S2 1.0 alpha 3 и обновленные версии расширений.

Среди основных изменений создание расширение s2_latex, благодаря которому на S2 теперь можно легко делать сайты с множеством математических формул. На расширениях s2_latex и s2_blog работает блог о теоретической физике.

Другое изменение относится к расширению поиска s2_search. В нем появился «быстрый поиск» по заголовкам, выдающий список подсказок пользователю, пока он вводит поисковую фразу. Попробовать быстрый поиск в действии можно здесь, на сайте движка S2, введя в форму поиска, например, букву «а». С подробностями можно ознакомиться на странице расширения s2_search.

В визуальном редакторе (расширение s2_wysiwyg) библиотека TinyMCE была обновлена до версии 3.4.

Также в ядре движка и расширениях было исправлено множество багов.

Ключевые слова: релизы | Комментарии (5)

туда →