S2 → Блог

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. Включить все расширения.

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

Ключевые слова: релизы | Оставить комментарий

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 — простой и быстрый движок сайтов.

Оставить комментарий

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)

S2 1.0 alpha 2

12 февраля 2011 года, 07:10

В прошлой версии, выпущенной неделю назад, была ошибка в установочном скрипте (спасибо Генриху за сообщение). Пришлось выпустить новую версию S2 1.0 alpha 2, в которой эта ошибка исправлена.

Ключевые слова: релизы | Оставить комментарий

S2 1.0 alpha 1

4 февраля 2011 года, 22:18

Вышла новая версия S2 1.0 alpha 1. По сравнению с прошлогодним выпуском реализована часть запланированных функций и исправлено большое количество багов. Но это всё еще предварительная альфа-версия, в которой что-то будет переделано, что-то — добавлено.

Я сделал новые расширения: внутренний счетчик s2_counter и поиск s2_search. Выпущенные ранее расширения тоже были обновлены.

А еще я установил trac для просмотра исходного кода и форум для обсуждения любых вопросов по S2.

Хочу поблагодарить Илью Бирмана за ценные советы по улучшению интерфейса панели управления S2.

Ключевые слова: релизы | Оставить комментарий

Многопользовательский режим в S2

12 июня 2010 года, 14:55

Многопользовательский режим — это одна из тех вещей, которые я хочу сделать перед окончательным выпуском S2. Формально многопользовательский режим имеется — администратор сайта, работающего на S2, может сделать несколько учетных записей для авторов и модераторов. Однако сейчас доступ пользователей ограничивается недостаточно. Например, если пользователю разрешить изменение страниц, он сможет редактировать страницы, созданные другими авторами, что не всегда допустимо. Также в текущей реализации нет возможности показать посетителям сайта, что над ним работает не один автор, а целый коллектив.

Как в идеале должен работать многопользовательский режим? В нем можно выделить три составляющих:

  • регистрация — иногда администратор не должен добавлять вручную каждого пользователя;
  • профиль — отображение на сайте информации о зарегистрированном пользователе;
  • управление правами пользователей.

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

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

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

Я склоняюсь ко второму варианту — интеграции с PunBB, но хотел бы услышать и мнения заинтересованных лиц.

А еще я надеюсь, что в ближайшее время разработка S2 пойдет активнее, и через несколько месяцев появится бета-версия со всей запланированной функциональностью.

Ключевые слова: функциональность | Комментарии (18)

Поиск

11 февраля 2010 года, 16:11

Трудно спорить с тем, что поиск на сайтах — вещь нужная и полезная. Однако сейчас в S2 поиска нет. Я собираюсь рассказать, почему.

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

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

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

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

  1. LIKE или strpos.
  2. Fulltext-индексы базы данных.
  3. Создание собственных поисковых индексов.
  4. Сторонние поисковые движки.
  5. Сторонние сервисы.

Первым способом практически невозможно учитывать выделенные нами четыре составляющих релевантности. Второй способ хорош, но, к сожалению, только для английского языка. Fulltext-индексы в MySQL не учитывают русскую морфологию.

Третьим способом, при помощи своего индекса, можно сделать практически всё, что угодно. Но этот способ наиболее сложен. Здесь недостаточно просто запрограммировать функциональность. Нужно продумать и учесть масштабируемость решения как по количеству страниц, так и по посещаемости. В общем, этот случай — один из тех, когда 20% функциональности требуют 80% затрат времени :)

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

К счастью, есть еще один способ, в котором минимальные затраты приносят ощутимый результат. На сайте достаточно расположить форму поиска Гугла, примерно так, как это сделано в документации Apache. Действительно, как бы мы ни старались, вряд ли у нас получится поиск лучше, чем у Яндекса или Гугла. Обычно я пользуюсь Гуглом, когда ищу что-либо на конкретных сайтах, даже если на них есть собственный поиск.

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

Я не планирую включать поиск в ядро S2. Поиск можно будет сделать отдельным расширением, но в силу описанных выше причин эта задача далеко не самая приоритетная.

Добавлено: Я всё-таки разработал расширение поиска.

Ключевые слова: функциональность | Комментарии (10)

туда →