Эгея 2.10 альфа для авантюристов

При работе над Эгеей 2.9 я публиковал ранние альфа-сборки движка; с 2.10 попробуем так же.

Главная тема 2.10 — это «дискавери». Одна из фундаментальных проблем формата блога — это его хронологичность. Последние заметки видно, а что было месяц или, тем более, пять лет назад — нет. А ведь у нормальных ребят ценные заметки встречаются на протяжении всей истории. Я хочу, чтобы читателям было проще погружаться в интересные блоги и находить в них интересное, и теперь Эгея будет с этим помогать.

Возможно, что-то из описанного поменяется к релизу.

Рекомендации

Под заметками теперь автоматически собирается этажик «Дальше»:

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

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

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

Заметьте, что заодно немного поменялся дизайн листалки влево-вправо между соседними заметками.

Если в рекомендации попала заметка, которую вы не считаете важной, перейдите по ссылке на неё и уберите ей звезду — Эгея сразу же пересоберёт этаж рекомендаций. Не нужно ничего ждать, потому что кеширование в Эгее написано прямыми руками: я в состоянии своевременно удалять устаревшие кеши, в отличие от большинства программистов на планете. Простите, не сдержался.

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

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

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

Тут слева попалась вертикальная картинка и длинный заголовок. А справа заголовок короткий и картинки нет — пришлось вытащить описание заметки, чтобы не возникало дыры (это описание теперь можно редактировать, см. «Соцпакет» ниже).

А вот обложечки музыкальные красиво встали:

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

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

Скромненький вариант с одной маленькой картинкой:

Рекомендации будут доступны только в платной версии.

Перебивки

Если просто крутить ленту заметок, между ними теперь показываются перебивки — такие же этажи ссылок на другие хорошие заметки:

В результате читатель, зашедший в блог первый раз, видит не только последние заметки, но и разные другие важные заметки, которые вы когда-либо писали. Хоп:

Перебивки тоже будут доступны только в платной версии.

Новые страницы тегов

Страницы тегов раньше были просто хронологическими лентами заметок по тегу. Теперь они стали умнее.

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

Вот как выглядит у меня тег «философия», например:

Видите, в начале подтянулись популярные заметки и ссылки на «общество», «жизнь», «политику»? Это оно само. А благодаря компактным заметкам получается быстрее найти то, что надо.

Кстати, если при поиске нашёлся тег, то рядом теперь так же показываются связанные с ним теги.

Черновики, будущие и скрытые заметки

Компактному представлению заметки нашлось ещё одно полезное применение. В предпросмотре черновика теперь показывается, как заметку после публикации увидят соцсети:

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

Кстати тут, когда выбираешь дату публикации заметки (платная фича), кнопка теперь называется не «Запланировать», а «Опубликовать в это время»:

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

Ещё одно изменение касается секретных ссылок и неопубликованных заметок. Ещё в Эгее 2.6 появилась платная фича — секретная ссылка для просмотра черновиков. Это удобно, чтобы согласовать пост с коллегами или рекламодателями перед публикацией, не давая им пароль от админки. А в Эгее 2.8 появилась другая платная фича — запланированные заметки. Можно настроить автопубликацию на определённое время в будущем. Из-за особенностей реализации такая вот запланированная на будущее заметка уже не имела секретной ссылки, потому что уже не была черновиком. Но это довольно тупо: иногда хотелось запланировать заметку, но доверенным лицам дать на неё секретную ссылку сразу.

В Эгее 2.10 можно дать секретную ссылку и на черновик, и на запланированную заметку, и даже на скрытую заметку. Заодно секретной ссылке нашлось более удачное место, см. скриншот выше.

О том, что в Эгее есть скрытые заметки, мало кто знает, потому что для них нет интерфейса. Заметку можно скрыть, дописав /hide/ к концу адреса, но до 2.10 я особо никогда не тестировал надёжность их сокрытия. Не удивляйтесь, если вы скроете заметку, а она всё равно просочится в какой-нибудь там РСС. В отличие от удалённой, скрытая заметка остаётся на своём месте в истории вместе со всеми комментариями, просто она видна только автору.

В отличие от читателей, автор видит свои запланированные и скрытые заметки. Но раньше они отображались в лентах целиком, просто были бледно-серыми. Теперь они тоже показываются в компактном виде:

Вот видно, что заметка ждёт своего часа опубликоваться. И тут же секретную ссылку можно взять, если не терпится с кем-то поделиться.

Лейбачок запланированной публикации претерпел лёгкий редизайн; так же теперь выглядит и лейбачок черновика.

Загрузка и разметка видео

Кроме аудио и картинок в заметки теперь можно загружать видео с расширением mp4 и mov. Оно будет воспроизводиться стандартным хтмльным видеоплеером.

В Эгее 2.9 появилась разметка фрагментов аудио (см. описание релиза), а теперь подобный синтаксис добавился и для видео, причём и для загруженного файлом, и для внешнего (Ютюб, Вимео). За это спасибо Игорю Адаменко.

Пример — в заметке с треком на Ютюбе:

В ссылочки можно тыкать, и видео перемотается.

В редакторе это выглядит так:

Снова, почитайте кусок «Разметка фрагментов аудио» из описания Эгеи 2.9. Тут так же можно давать ссылку из текста на конкретное время в видосе, но без подсветки фрагментов.

Важно: вместо .e2-audio-seek теперь используется класс .e2-media-seek. Простите, старый вариант работать перестанет даже с аудио, так что надо будет исправить в старых заметках. Их можно найти поиском. Если для кого-то из вас это проблема, скажите мне; я пока исхожу из того, что этой фичей пользуются редко и исправить придётся максимум заметок пять.

Соцпакет

В продолжение темы видео — Эгея умеет обновлять обложки внешних видосов. Щас объясню.

Когда вы используете внешнее видео в заметках, Эгея пытается достать обложку видео с Ютюба или Вимео, чтобы использовать её в качестве картинки заметки в соцсетях. Начиная с 2.10 эта же картинка может стать иллюстрацией в рекомендациях. Но бывает так, что Ютюб или Вимео не отдают обложку. Чтобы не зацикливаться в попытках перескачать эту обложку, Эгея запоминает, что обложки нет, и больше за ней не ходит.

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

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

С обложками понятно, но соцсетям нужны ещё и описания заметок. Эгея всю жизнь формирует их самостоятельно: берёт немного текста из начала заметки; старается обрезать его не на полуслове, а осмысленно, ориентируясь на знаки препинания. Но иногда хочется написать своё описание-затравку, чтобы заметка выигрышнее смотрелась в соцсети. Интерфейса для этого в Эгее раньше не было.

Описания страниц используют ещё и поисковики — показывают их под ссылками в поисковой выдаче, так что хотелось, конечно, иметь возможность на них влиять. Начиная с 2.10 описания заметок стали ещё важнее, ведь теперь они нужны не только в соцсетях и поисковиках, но и внутри самой Эгеи: в этаже рекомендаций и в компактном виде заметок.

В общем, пришло время дать управлять этим описанием. У заметки появилось дополнительное поле:

Изначально оно спрятано так же, как поля даты и урла — Эгея по-прежнему формирует описание сама. Просто теперь вы сможете его поменять, если захотите. Ещё раз напомню, что в предпросмотре черновика заметки теперь отображается, как её увидят соцсети, и там видны обложки и описание. Посмотрев туда, можно решить, хотите ли вы что-то поменять. Я у себя редактирую описание раз в несколько заметок.

Аналогичные поля описания появились и для страницы тега (в её редакторе), и для блога в целом (в Настройке). И у тега, и у блога в целом и раньше было поле «Описание»: оно отображалось под заголовками соответствующих страниц, и из его начала автоматически формировалось описание для соцсетей так же, как из текста заметки. Но и я, и многие другие авторы использовали это поле «Описание» для навигации по блогу. Поэтому у тега теперь отдельные поля: «Вступительный текст» и «Описание для поисковых систем, соцсетей и агрегаторов». А у блога — «Подзаголовок» и «Описание для поисковых систем...». Вступительный текст и  подзаголовок размещаются под заголовком, а описание отдаётся наружу. Разумеется, его можно не заполнять, и тогда Эгея сформирует его автоматически по-старинке.

Другие социальные новшества:

  • появился вход в комментарии через Телеграм (спасибо, Константин Якушев);
  • в окне «Подписаться на блог» (платная фича) добавились Ютюб и Тикток и обновились иконки остальных соцсетей.

Эффективный постоянный бекап

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

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

Теперь Эгея делает полный бекап перед обновлением движка (на всякий случай) и раз в неделю (тоже на всякий случай), а в остальное время она делает инкрементальный бекап: запросы к базе дублируются в текстовый файл backup-tail.sql, поэтому если база сломается в любой момент, можно будет восстановиться из последнего полного бекапа, а потом ещё и выполнить этот backup-tail.sql, чтобы база была приведена к самому последнему виду. Бекапная нагрузка стала меньше, а сам бекап теперь всегда актуален — классно!

Остальное

Пользовательское:

  • картинки в редактор вставляются прямо из буфера обмена (спасибо, Игорь Адаменко);
  • кнопка Энтер в однострочных полях редактора тега ведёт в следующее поле, прямо как в заметке;
  • тема «Акут» стала дефолтной (но «Простая» по-прежнему есть);
  • мелкие улучшения в тёмных темах;
  • тёмный режим ОС теперь учитывается по умолчанию, в том числе в инсталяторе, но галку по прежнему можно снять в Настройке;
  • пользователи платой версии теперь видят срок действия своей лицензии в Настройке, там же есть ссылка на оплату;
  • ссылки на админские странички переехали из подвала Настройки в выпадающее меню справа от заголовка;
  • страницы «Заметки без тегов» (/untagged/) и «Самые комментируемые» (/hot/) обзавелись листалкой (раньше показывали всё одной простынёй);
  • страница «Заметки без тегов» (/untagged/) теперь доступна всем (раньше была видна только автору блога);
  • страница заметок по нескольким тегам выглядит получше;
  • добавился французский язык интерфейса (спасибо, Валерий Орлов);
  • чуток успокоились цвета кнопок;
  • пользователи админки «Блогов» (это только я, но не могу же я не задокументировать изменение) теперь модерируют блоги через выпадающее меню.

Исправленные баги:

  • не получалось установить Эгею в базу данных, название которой содержало точку;
  • при удалении тега его урл мог остаться занятым навсегда, теперь гарантированно освобождаётся (при обновлении до 2.10 все зря занятые урлы освободятся автоматически);
  • при хитром стечении обстоятельств при удалении заметки мог сломаться урл тега, если он был настроен вручную;
  • в редких случаях обложка могла не загрузиться с Ютюба или Вимео, даже если они её отдавали;
  • если в названии тега использовался амперсанд, то в заголовке страницы тега он отображался как &, и подобная же фигня могла просочиться в РСС и Джейсон-фид (упс);
  • календарь не понимал, а теперь начал понимать введённые вручную даты без ведущего нуля (спасибо, Тимур Арефьев);
  • в Розе исправился баг с индексированием заметок, содержащих невероятно длинные слова (спасибо, Роман Парпалак).

Подкапотное:

  • минимальная версия ПХП поднята до 5.6;
  • управление кешами, бекапами, поисковыми индексами, логами и миграцией переехало с волшебных @урлов на спецстраницу .../settings/underhood/;
  • полноценно поддерживаются несколько Эгей в разных папках на одном домене (раньше у них куки конфликтовали, было трудно);
  • подготовка к будущему хранению нескольких блогов в одной группе таблиц в базе (это нужно для сервиса и не должно коснуться индивидуальных пользователей, но это значительное потенциально глюкогенное изменение, так что важно);
  • сильно много разных оптимизаций: меньше запросов к базе, больше индексов и кешей;
  • ядро стало где-то на 11% легче за счёт более умной сборки;
  • все таблицы в базе теперь — InnoDB;
  • при любом обновлении Эгеи теперь проверяются и при необходимости пересоздаются все нужные индексы в базе данных;
  • шаблоны в темах оформления теперь поддерживают вложенность, поэтому вместо notes.tmpl.php теперь есть note.tmpl.php, то же с комментариями; тот же механизм использует этаж рекомендаций;
  • форматтер Каллиопе больше не входит в стандартный дистрибутив (но можно установить, если вам нужен; поддержка будет полностью удалена в 2.11);
  • при сохранении айпишников комментаторов поддерживается IPv6;
  • транслитерация при генерации урлов поддерживает дореволюционные буквы/

Что тестировать

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

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

Ссылка на дистрибутив

Основные фичи этого релиза, связанные с рекомендациями — платные. В альфа-сборке, которую я выкладываю сегодня, они все включены, потому что надо их как-то потестировать. Но постепенно я их отсюда уберу. Понимаю, что это странновато, но я пока не придумал, как по-другому.

Если вам интересно поэкспериментировать, то скачайте, пожалуйста, свежую сборку v3733a (релиз), поставьте себе, и попробуйте с ней пожить. Не забывайте, что нет вообще никакой поддержки и даже на несложные вопросы вроде «а в каком файле ты хранишь то-то» я могу отвечать долго. Если в вашем блоге есть хоть что-то ценное, сделайте максимальный бекап. В моём блоге сейчас, конечно же, крутится именно v3733a. Чтобы обновиться, замените /system/ и все подпапки в /themes/.

См. также: Альфа 2.

Дальше
2 комментария
Юрий Середюк 2020

Илья, рад, что ты развиваешь движок. Если что, я ещё с Селекты.
Но всё же ответь, на вопрос из прошлой заметки об Эгее: если я эти рекомендации не люблю, они отключаемые?

Михаил Крюков (Bezlikii) 2020

Шикарно, жду релиза!) Теперь уже реально есть смысл пользоваться платной эгеей.

Мои книги