{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Блог Ильи Бирмана: заметки с тегом Эгея",
    "_rss_description": "Движок блога «Эгея»",
    "_rss_language": "ru",
    "_itunes_email": "ilyabirman@ilyabirman.ru",
    "_itunes_categories_xml": "<itunes:category text=\"Arts\"><itunes:category text=\"Design\" \/><\/itunes:category>\r\n<itunes:category text=\"Society &amp; Culture\"><itunes:category text=\"Personal Journals\" \/><\/itunes:category>\r\n<itunes:category text=\"Technology\" \/>\r\n",
    "_itunes_image": "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg",
    "_itunes_explicit": "no",
    "home_page_url": "https:\/\/ilyabirman.ru\/meanwhile\/tags\/aegea-all\/",
    "feed_url": "https:\/\/ilyabirman.ru\/meanwhile\/tags\/aegea-all\/json\/",
    "icon": "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/userpic\/userpic@2x.jpg?1573933764",
    "authors": [
        {
            "name": "Илья Бирман",
            "url": "https:\/\/ilyabirman.ru\/meanwhile\/",
            "avatar": "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/userpic\/userpic@2x.jpg?1573933764"
        }
    ],
    "items": [
        {
            "id": "6694",
            "url": "https:\/\/ilyabirman.ru\/meanwhile\/all\/aegea-vs-social-networks\/",
            "title": "Вести блог на Эгее лучше, чем в соцсетях",
            "content_html": "<p>Писать в соцсетях соблазнительно из-за низкого порога входа, плюс там есть разные рекомендательные алгоритмы, помогающие найти аудиторию. Но соцсеть развивается в своих интересах: может сломать нужную вам функциональность, потребовать денег за доступ к вашей же аудитории, испортить вид ваших публикаций, ограничить ваши права по надуманным причинам или вовсе закрыться. Раньше рекомендательные алгоритмы были настолько важными, что ради доступа к аудитории можно было стерпеть всё, но в последнее время они окончательно сфокусировались на одноразовом вызывающем контенте. В итоге в любой современной соцсети чувствуешь себя в гостях, причём где тебе не очень-то и рады.<\/p>\n<p>Если вы цените то, что публикуете; хотите, чтобы оно не пропало и чтобы аудитория не потеряла к нему доступ, дальновиднее писать в блоге у себя, на собственном сайте. Я для этого использую и рекомендую вам Эгею — движок, который я сделал и развиваю всю жизнь. Это программа, которая работает на вашем сайте и предоставляет инструменты для ведения блога, а посетителям показывает публикации и даёт писать комментарии. Нужно пройти некоторый путь, чтобы этим воспользоваться: купить себе домен, подключить хостинг, установить туда саму Эгею. Но это намного проще, чем, например, научиться кататься на велосипеде. Надо один раз разобраться, а потом на всю жизнь.<\/p>\n<p>Самое главное, что с собственным блогом ваши публикации принадлежит вам. У вас есть доступ к файлам и базе данных на вашем сервере, вы можете всё это скачать, хранить копию на своём компьютере. Вы можете обрабатывать свои публикации как угодно, например скормить их нейросетям и попросить написать лекцию на их основе или перевести на другой язык. Даже если что-то сломается и закроется, данные всё равно останутся с вами.<\/p>\n<p>Ещё из-за прицела на мимолётность и одноразовость, соцсети считают любую заметку, написанную даже вчера, безнадёжно устаревшей. Её не просто никому не покажут; даже целенаправленно её найти будет непросто. Эгея помогает организовать всё, что вы написали, а потом сама рекомендует связанные по теме важные публикации читателям. В результате читатели находят полезное, даже если оно написано год или десять лет назад. Да и самому приятно иногда натыкаться на старое-доброе.<\/p>\n<p>При этом соцсети у вас никто не отбирает! Если вы видите, как их алгоритмы могут быть вам полезны, то используйте их для распространения публикаций и привлечения аудитории. Если вам не лень, можете даже оптимизировать публикации под разные форматы, снабжать жёлтыми заголовками и эмоционально заряженными иллюстрациями. Но источником «истины» будет оставаться ваш собственный блог.<\/p>\n<p>Попробуйте <a href=\"https:\/\/blogengine.ru\/\">Эгею<\/a>!<\/p>\n",
            "summary": "Писать в соцсетях соблазнительно из-за низкого порога входа, плюс там есть разные рекомендательные алгоритмы, помогающие найти аудиторию",
            "date_published": "2026-03-24T12:21:41+02:00",
            "date_modified": "2026-03-24T12:28:01+02:00",
            "tags": [
                "Эгея"
            ],
            "image": "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg",
            "_date_published_rfc2822": "Tue, 24 Mar 2026 12:21:41 +0200",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "6694",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": true,
                "links_required": [],
                "og_images": [
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg"
                ]
            }
        },
        {
            "id": "6676",
            "url": "https:\/\/ilyabirman.ru\/meanwhile\/all\/aegea-11-5\/",
            "title": "Эгея 11.5",
            "content_html": "<p>Вышел очередной апдейт <a href=\"https:\/\/ilyabirman.ru\/meanwhile\/all\/aegea-11\/\">11-й версии<\/a> (сборка v4199).<\/p>\n<p>В редакторе:<\/p>\n<ul>\n  <li>когда текстовый курсор стоит на строке с именем файла, этот файл подсвечивается рамочкой в медиагалерее снизу — удобнее не запутаться в заметке с большим количеством картинок;<\/li>\n  <li>в той же медиагалерее аудио теперь не просто отображается ноткой, а ещё его можно предпрослушать из выпадающей менюшки.<\/li>\n<\/ul>\n<p>В остальном:<\/p>\n<ul>\n  <li>в «Настройке» в секции «Эл. почта» появилась галочка «Показывать в подвале» — это чтобы читатели могли легко вам написать;<\/li>\n  <li>улучшена вёрстка заголовков и перебивок на мобильных устройствах, добавились автопереносы в некоторых случаях;<\/li>\n  <li>в письмах-уведомления о новых комментариях ссылка теперь ведёт не просто на заметку, а на конкретный комментарий по якорю;<\/li>\n  <li>при редактировании комментария и ответа на комментарий сверху теперь появляется ссылка и превью заметки, к которой это комментарий;<\/li>\n  <li>под кнопкой «Вернуть в черновики» у заметки было написано «комментарии удалятся», но реально они не удалялись, просто их было не видно в черновиках, а при повторной публикации заметки они возвращались; теперь неправильный текст про «удалятся» убран, а также добавлено отображение по крайней мере числа комментариев в черновике, чтобы было ясно, что они не пропали;<\/li>\n  <li>в джейсонфиде теперь заполнено поле Summary.<\/li>\n<\/ul>\n<p>Исправления:<\/p>\n<ul>\n  <li>в РСС теперь отдаётся правильный MIME-тип (сломалось недавно);<\/li>\n  <li>поднастроена логика работы шорткатов вроде ⌘B и ⌘I (в некоторых ситуациях могли срабатывать странно);<\/li>\n  <li>попробовал подкрутить что-то, чтобы снизить вероятность того, что РСС читалки будут подцеплять левые картинки в качестве обложек заметок без картинок, но это всё очень зыбко;<\/li>\n  <li>несколько мелких правок в вёрстке (что-то неровно, где-то непарные теги и подобное);<\/li>\n  <li>в Жуэле улучшена совместимость с Оперой (помните такую?);<\/li>\n  <li>улучшена совместимость с новыми версиями ПХП;<\/li>\n  <li>если на сервере была загружена картинка некорректного формата, и Эгея не может её обработать, она не вываливает сообщения об ошибке, а просто помалкивает.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/ilyabirman.ru\/meanwhile\/all\/aegea-11-4\/\">В прошлой версии<\/a> я сделал, чтобы по умолчанию требовало «безопасные» куки кроме локальных инсталляций. Потом я понял, что это сломало вход пользователям, сидящим на голом ХТТП, и чтобы его вернуть, им нужно было лезть в конфиг и отключать эту функцию. Фактическую поломку возможности залогиниться трудно считать улучшением безопасности, поэтому теперь безопасные куки требуются только для ХТТПС-пользователей.<\/p>\n<p>Кое-что ещё подкрутил в другом месте для безопасности.<\/p>\n<h2>Как обновиться<\/h2>\n<p>Если Эгея у вас оплачена, напишите мне, и я дам вам полную версию 11.5. Если вы пользуетесь сервисом, Эгея скоро обновится тоже.<\/p>\n<p>Свежий дистрибутив лайт-версии — в конце страницы <a href=\"https:\/\/blogengine.ru\/get\/\" class=\"nu\">«<u>Стать пользователем<\/u>»<\/a>. Замените папку \/system\/ новой.<\/p>\n",
            "summary": "Вышел очередной апдейт 11-й версии (сборка v4199)...",
            "date_published": "2026-03-14T12:56:23+02:00",
            "date_modified": "2026-03-14T12:56:14+02:00",
            "tags": [
                "релиз",
                "Эгея"
            ],
            "image": "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg",
            "_date_published_rfc2822": "Sat, 14 Mar 2026 12:56:23 +0200",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "6676",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg"
                ]
            }
        },
        {
            "id": "6618",
            "url": "https:\/\/ilyabirman.ru\/meanwhile\/all\/sdelat-prostuyu-fichu-horosho-overkast-i-aegea\/",
            "title": "Сделать «простую фичу» хорошо: Оверкаст и Эгея",
            "content_html": "<p>В недавнем выпуске моего любимого подкаста АТП Марко Армент <a href=\"https:\/\/atp.fm\/667\">рассказывал, как делал обновление Оверкаста<\/a>, своего подкастного приложения. Речь шла о добавлении поддержки обложек для отдельных выпусков подкастов. Интересно, что такая простая, на первый взгляд, фича, требует продумывания сотни нюансов и учитывания сотни потенциальных проблем. Начало темы в 1:33:35.<\/p>\n<p>Это мне напомнило, <a href=\"https:\/\/ilyabirman.ru\/meanwhile\/all\/what-aegea-does-talk\/\">как я рассказывал про Эгею<\/a>. Тоже со стороны кажется, что движок блога — простая задачка, чисто упражнение на работу с базой данных. А я как раз рассказывал, чем Эгея отличается от всего остального, и о скольких вещах нужно думать, чтобы людям было хорошо ею пользоваться.<\/p>\n",
            "summary": "В недавнем выпуске моего любимого подкаста АТП Марко Армент рассказывал, как делал обновление Оверкаста, своего подкастного приложения",
            "date_published": "2025-12-24T13:56:00+02:00",
            "date_modified": "2025-12-24T13:56:36+02:00",
            "tags": [
                "АТП",
                "Эгея"
            ],
            "image": "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg",
            "_date_published_rfc2822": "Wed, 24 Dec 2025 13:56:00 +0200",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "6618",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg"
                ]
            }
        },
        {
            "id": "6592",
            "url": "https:\/\/ilyabirman.ru\/meanwhile\/all\/think-on-50\/",
            "title": "Думаем дальше № 50 — «Просто очень хороший стандарт»",
            "content_html": "<p>С Михаилом Руденко продолжаем применять его модель ДКЦП к Эгее. Не забывайте, что <a href=\"http:\/\/blogengine.ru\/get\/special\/\">у Эгеи скидка до конца недели<\/a>.<\/p>\n<p>Все выпуски подкаста:<br \/>\n<a href=\"https:\/\/podcasts.apple.com\/us\/podcast\/думаем-дальше\/id1744862171\">Эпл<\/a> · <a href=\"https:\/\/www.youtube.com\/playlist?list=PLl7kvlp_qh0j9uzQGU2ws4DkBWdbjY1_d\">Ютюб<\/a> · <a href=\"https:\/\/music.yandex.com\/album\/29069497\">Я.Музыка<\/a> · <a href=\"https:\/\/thinkon.mave.digital\">Мейв<\/a> · <a href=\"https:\/\/cloud.mave.digital\/51724\">РСС для подкастного приложения<\/a><\/p>\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"e2-text-table\">\n  <tr>\n    <td style=\"text-align: left\">0:00<\/td>\n    <td style=\"text-align: left\">В предыдущих сериях. Вспоминаем выводы об Эгее и ДКЦП из предыдущего разговора<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">2:25<\/td>\n    <td style=\"text-align: left\">Эгея должна продолжать нравиться<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">5:19<\/td>\n    <td style=\"text-align: left\">Внешний вид, «дефолтность», «выверенность», «стандартность», «устойчивость» и Линди-эффект Эгеи<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">17:53<\/td>\n    <td style=\"text-align: left\">Нематериальный вклад клиента в виде сложной установки. «Продукт для эстетически неквалифицированных админов»<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">20:04<\/td>\n    <td style=\"text-align: left\">Важность владения своим контентом. «Движок до неустаревающего контента», анти-снепчат<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">27:11<\/td>\n    <td style=\"text-align: left\">Как Эгея помогает писать вечный контент. Роли навигации, поиска, тегов. «Старый пост» не значит устаревший<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">30:44<\/td>\n    <td style=\"text-align: left\">Кто клиент?<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">39:03<\/td>\n    <td style=\"text-align: left\">Ключевой конфликт: хочется писать вечное, но современные соцсети заточены на однодневку<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">41:30<\/td>\n    <td style=\"text-align: left\">Фичи Эгеи, помогающие его разрешить. Главное меню и ссылка на случайную заметку<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">44:19<\/td>\n    <td style=\"text-align: left\">Автоматические рекомендации и перебивки<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">46:06<\/td>\n    <td style=\"text-align: left\">Почему в Эгее нет маргиналий<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">47:40<\/td>\n    <td style=\"text-align: left\">Кнопка «Подписаться» и идея шаринга цитат, контекстных комментариев<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">53:20<\/td>\n    <td style=\"text-align: left\">Планирование публикаций на будущее вызывает сомнения, потому что это про количество, а не качество<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">56:48<\/td>\n    <td style=\"text-align: left\">Секретные ссылки и идея рецензирования<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">58:37<\/td>\n    <td style=\"text-align: left\">Монетизация блогов: реклама или пейвол<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">1:08:26<\/td>\n    <td style=\"text-align: left\">Деление на платную и бесплатную версию и минусы «варварского» использования Эгеи<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">1:14:32<\/td>\n    <td style=\"text-align: left\">Подводим итоги<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">1:16:56<\/td>\n    <td style=\"text-align: left\">И всё-таки, кто клиент? Соцдемпрофиль и воспитание авторов<\/td>\n  <\/tr>\n<\/table>\n",
            "summary": "С Михаилом Руденко продолжаем применять его модель ДКЦП к Эгее. Не забывайте, что у Эгеи скидка до конца недели",
            "date_published": "2025-11-24T18:24:34+02:00",
            "date_modified": "2025-11-25T07:27:51+02:00",
            "tags": [
                "ДКЦП",
                "Думаем дальше",
                "Эгея"
            ],
            "image": "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg",
            "_date_published_rfc2822": "Mon, 24 Nov 2025 18:24:34 +0200",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "6592",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg"
                ]
            }
        },
        {
            "id": "6589",
            "url": "https:\/\/ilyabirman.ru\/meanwhile\/all\/aegea-11-4\/",
            "title": "Эгея 11.4",
            "content_html": "<p>Вышел очередной апдейт <a href=\"https:\/\/ilyabirman.ru\/meanwhile\/all\/aegea-11\/\">11-й версии<\/a> (сборка v4169).<\/p>\n<h2>Редактор новой заметки<\/h2>\n<p>Редактор новой заметки теперь работает надёжнее и не требует интернета. Если хотя бы один раз открыть страницу \/new\/, то она радикально закешируется и дальше уже будет открываться из офлайна. В сочетании с локальным автосохранением в браузере это позволяет писать заметки из самолёта или где вы там пишете. Если попытаться сохранить заметку на сервер, Эгея скажет, что интернета нет, но если просто перезагрузить страницу, то всё откроется с того же места. Также исправлен досадный баг, из-за которого локальное автосохранение в браузере иногда могло не срабатывать.<\/p>\n<p>Можете попробовать сами <a href=\"https:\/\/demo.blogengine.ru\">в демоблоге<\/a>.<\/p>\n<h2>Загрузка и управление файлами<\/h2>\n<p>Добавилась поддержка аудиоформата Ogg, графического формата AVIF, а также улучшена поддержка WebP (при условии поддержки этих форматов используемой сборкой ПХП). Теперь в диалоговом окне выбора файла для загрузки не поддерживаемые файлы забледнены.<\/p>\n<p>Заодно исправлены разные мелочи вокруг файлов и редактора:<\/p>\n<ul>\n  <li>если вы загружали файлы picture.png и picture.jpg, Эгея могла запутаться и показывать одному другой в качестве превьюшки (кажется, этот баг появился в 11.2);<\/li>\n  <li>при изменении набора картинок, загруженных в тег, мог устаревать кеш картинок в связанных с ним заметках; теперь не устаревает;<\/li>\n  <li>при перетаскивании картинок, в именах файлов которых содержались неразрешённые символы, Эгея могла их «потерять» (это случалось, например, при перетаскивании картинок напрямую из Телеграма, где в именах файлов он использовал двоеточия);<\/li>\n  <li>если попытаться перетащить кучу файлов, часть из которых поддерживается, а часть нет, спиннер загрузки продолжал крутиться до бесконечности;<\/li>\n  <li>у аудиофайлов превьюшка иногда была ноткой в квадратике, а иногда в прямоугольничке;<\/li>\n  <li>если при загрузке юзерпика на сервере не окажется нужной для него папки, Эгея попытается создать её, и только если не получится, скажет об ошибке;<\/li>\n  <li>если перетащить пачку файлов прямо в поле текста заметки, они могли вставляться в неожиданном порядке, а если до этого был выделен кусок текста, то он вообще мог замениться, причём после этого ещё и анду не работало; теперь файлы вставляются по порядку, перед абзацем, в котором сейчас курсор, и в зависимости от браузера может даже работать анду;<\/li>\n  <li>исправлены ещё несколько эзотерических багов вокруг загрузки файлов связанных с определение того, что такой файл уже есть, нумерацией, автоконвертацией в джипег и т. д.;<\/li>\n  <li>сообщения об ошибке при попытке перетащить файл неподдерживаемого формата стали информативнее; вообще, повысилась внятность сообщений об ошибках при работе с файлами (загрузка, переименование, удаление).<\/li>\n<\/ul>\n<h2>Безопасность<\/h2>\n<p>В этой версии залатаны несколько потенциальных уязвимостей, за что спасибо Владиславу Покровскому — тут без подробностей, чтобы не подвергать риску тех, кто не обновляется.<\/p>\n<p>Также по умолчанию куки теперь работают только на ХТТПС-соединении и при локальном использовании (можно настоять на использовании всегда, включив insecure_cookies в конфиге). И ещё улучшена защита от перебора пароля, за что спасибо Жене Степанищеву.<\/p>\n<h2>Разное<\/h2>\n<p>Что ещё изменилось:<\/p>\n<ul>\n  <li>Лайкли обновились до 3.2 (теперь умеют называть Твиттер «иксом»; обновились иконки части соцсетей);<\/li>\n  <li>в списке комментариев у каждого комментария появился якорь в коде, чтобы можно было дать ссылку на конкретный.<\/li>\n<\/ul>\n<p>Исправлено ещё несколько багов:<\/p>\n<ul>\n  <li>кажется, поля поиска и ввода тегов, наконец, заработали на Андроиде;<\/li>\n  <li>если при распаковке дистрибутива вы потеряли скрытый файл .htaccess, инсталлятор должен был сам создавать его и работать гладко, да вот только забывал это делать в некоторых случаях, да ещё и не выводил внятных сообщений об ошибках; теперь и пытается создать всегда, и ошибки выводит чёткие, если не получается;<\/li>\n  <li>в скрытых заметках, которые обычно отображаются бледно-серыми, жирный текст оставался чёрным;<\/li>\n  <li>если у заметки было слишком длинное описание для соцсетей, его поле забывало растянуться на весь текст, но вдруг вспоминало об этом при первом же изменении (теперь сразу отображается нужного размера);<\/li>\n  <li>убраны несколько сообщений об ошибках, появлявшихся под ПХП 8.2.<\/li>\n<\/ul>\n<h2>Как обновиться<\/h2>\n<p>Если Эгея у вас оплачена, напишите мне, и я дам вам полную версию 11.4. Если вы пользуетесь сервисом, у вас уже последняя Эгея.<\/p>\n<p>Свежий дистрибутив лайт-версии — в конце страницы <a href=\"https:\/\/blogengine.ru\/get\/\" class=\"nu\">«<u>Стать пользователем<\/u>»<\/a>. Замените папку \/system\/ новой.<\/p>\n",
            "summary": "Вышел очередной апдейт 11-й версии (сборка v4169)...",
            "date_published": "2025-11-23T18:38:43+02:00",
            "date_modified": "2025-11-23T18:42:07+02:00",
            "tags": [
                "релиз",
                "Эгея"
            ],
            "image": "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg",
            "_date_published_rfc2822": "Sun, 23 Nov 2025 18:38:43 +0200",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "6589",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg"
                ]
            }
        },
        {
            "id": "6584",
            "url": "https:\/\/ilyabirman.ru\/meanwhile\/all\/dialog-s-kodeksom-chatagpt-pri-razraboke-egei\/",
            "title": "Диалог с «Кодексом» ЧатаГПТ при разрабоке Эгеи",
            "content_html": "<p>Писать код с ИИ-помощником — огромный кайф, продуктивность значительно вырастает, а главное — снимается сопротивление перед тем, как за что-то взяться. Но относиться к нему важно как коллеге со слабым пониманием продукта и плохим вкусом, который зато начинался всех книжек про лучшие практики и знает всю документацию про всё.<\/p>\n<p>Вот краткий художественный пересказ сегодняшнего нашего диалога об Эгее:<\/p>\n<p>— Изучи мой код внимательно и расскажи, что нужно, чтобы добавить на страницу новой заметки такую-то фичу.<br \/>\n— Изучил. Чтобы добавить фичу на страницу с адресом \/@\/new\/ есть два способа: первый не работает, а второй работает, это всего 30 строчек кода.<br \/>\n— Почему ты пишешь \/@\/new, ведь адрес страницы просто \/new\/. И зачем обсуждать первый способ, если он не работает?<br \/>\n— Ах да, я просто посмотрел, что когда-то раньше (коммит такой-то десять лет назад) адрес был \/@\/new\/, поэтому решил упомянуть это, если вдруг ты захочешь его вернуть.<br \/>\n— Нет, не захочу. Ладно, давай свои 30 строчек кода.<br \/>\n— Вот, написал.<br \/>\n— Окей, у меня не работает. Вот что я делаю, вот чего ожидаю, вот что получаю, а вот что вижу в консоли.<br \/>\n— Всё правильно, оно и не должно работать, это ожидаемое поведение, ведь ты не написал ещё другой кусок кода.<br \/>\n— Как понять «я не написал»? Это же ты не написал. Ну напиши.<br \/>\n— Вот, написал.<br \/>\n— Хорошо, теперь работает, но грузится немыслимые пятнадцать секунд или около того. Надо мгновенно.<br \/>\n— Исправил одну строчку, теперь должно быть мгновенно.<br \/>\n— Всё работает как надо. Давай теперь разбираться, что ты понаписал. Для чего вот это? А вот это? А почему тут не использовать вот такой уже имеющийся у меня код?<br \/>\n— Это на такой-то случай. Это в принципе можно убрать. А тут твой код подходит даже лучше, молодец, что заметил!<br \/>\n— Ну так исправь.<br \/>\n— Исправил. Но теперь не будет работать из-за того-то.<br \/>\n— Ёлки, так что ж ты сразу не сказал?<br \/>\n— Прости, я не так тебя понял. Хочешь, верну как было.<br \/>\n— Я хочу, чтобы ты убрал лишнее и переиспользовал имеющийся код, где можно, но чтобы всё работало.<br \/>\n— Хорошо, сделал.<br \/>\n— Теперь я заметил, что ты положил новый файл в такую-то папку, а у меня всё подобное лежит в другой. Давай перенесём.<br \/>\n— Перенёс. Заодно убрал комментарии и поменял стиль кода в случайных местах.<br \/>\n— А об этом-то кто просил? Верни мой нормальный стиль кода и комментарии. Ещё ты добавил в конфиг Вебпака исключение чисто ради нашей новой фичи. Мне не нравится это, потому что я никогда не вспомню, что оно там. Придумай, как локализовать всё про неё в одном месте.<br \/>\n— Готово.<br \/>\n— Я смотрю, ты заодно переписал файл .htaccess, добавил туда какую-то отсебятину, а мои правила убил. Это что такое?<br \/>\n— Чтобы фича работала, нужно отправить определённые хедеры браузеру, вот я и добавил правило в .htaccess. Твои правила случайно удалил, прости, уже вернул.<br \/>\n— Так, а эта функция вообще будет у нас работать, если пользователь установил Эгею не в корень блога, а в подпапку? Я смотрю, ты какие-то пути к файлам там пишешь от корня.<br \/>\n— Не будет, и вот тебе объяснение на три страницы, почему именно.<br \/>\n— Ну так а надо-то, чтобы работало. Напиши так, чтобы работало.<br \/>\n— Готово, я добавил по 2-3 строчки разного кода в десяток файлов, теперь всё будет работать. Файл .htaccess теперь будет генерироваться динамически во время инсталляции и содержать нужный путь, чтобы работало в любой подпапке.<br \/>\n— Боже, ты с ума сошёл? Смотри сколько всего ты нагородил. Надо придумать, как сделать, чтобы работало без этого. Зачем ты вообще этот .htaccess трогать вздумал? Во всех остальных случаях я шлю хедеры просто из кода на ПХП функцией header (). Почему вдруг именно тут ты решил это сделать через .htaccess? Давай сделаем как везде.<br \/>\n— Ты прав. Я написал ПХП-файл и положил его вместо .htaccess, чтобы он слал нужные хедеры. Всё, что нагородил до этого, удалил.<br \/>\n— А почему этот ПХП-файл ты положил туда? У меня в проекте такого нет, у меня весь ПХП-код живёт в одном месте, а не в раскиданных где попало ПХП файлах. Если надо, чтобы этот файл отдавался по определённому урлу, для этого у меня есть роутер. Разберись как он работает и положи свой ПХП-код в логичное место, как у меня принято.<br \/>\n— Сделал. Я ещё написал вспомогательную функцию, которая конкатенирует две строки, и теперь вызываю её в двух местах!<br \/>\n— Жесть. Я удалил твою функцию и просто конкатенирую две строки напрямую. Я ещё переписал твой код так, чтобы он стал вдвое короче, убрал часть проверок. Убедись, что я ничего не сломал.<br \/>\n— Твоё исправление выглядит отлично! Действительно, ничего этого проверять не нужно было! Осталось только убедиться, что значение не заканчивается слешем.<br \/>\n— Не понял. Зачем ты написал, что осталось убедиться? Я ж эту проверку как раз оставил, то есть убеждаюсь.<br \/>\n— Да, убеждаешься, это я так просто написал, разговор поддержать...<br \/>\n— Также я смотрю, ты ещё и часть логики в шаблон дизайна засунул. Где такое видано? Перенеси эту логику в ядро, а в шаблоне дизайна используй уже подготовленную переменную.<br \/>\n— Код из шаблона в ядро перенёс, заодно добавил там других ненужных проверок.<br \/>\n— Убери.<br \/>\n— Убрал.<br \/>\n— Так, а вот эта штука у тебя зачем?<br \/>\n— Это нужно для того-то.<br \/>\n— Но для того-то у меня уже есть вот такая своя штука, давай использовать её.<br \/>\n— Давай. Отличная идея. У тебя тут ещё и такой-то случай учтён, ну надо же! Какой ты молодец!<\/p>\n<p>Ну и так далее. Это всё ужасно бесит, но с другой стороны за пару часов я сделал с ним то, что без него не сделал бы примерно никогда.<\/p>\n<p>Честно говоря, я не понимаю, что получается у вайб-кодеров. Страшно представить, какая там глючная и кривая каша под капотом. ЧатГПТ как бы делает и оно даже работает, но настолько через жопу, что доверять ему нельзя. Важно проверять каждую строчку и внимательно убеждаться, что ты её понимаешь, и что весь код, который он пишет, действительно нужен, учитывает твои реалии и стоит именно в том месте, где это логично для твоего проекта.<\/p>\n",
            "summary": "Писать код с ИИ-помощником — огромный кайф, продуктивность значительно вырастает, а главное — снимается сопротивление перед тем, как за что-то взяться",
            "date_published": "2025-11-15T08:05:41+02:00",
            "date_modified": "2025-11-15T10:28:52+02:00",
            "tags": [
                "нейросети",
                "программирование",
                "Эгея"
            ],
            "image": "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg",
            "_date_published_rfc2822": "Sat, 15 Nov 2025 08:05:41 +0200",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "6584",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg"
                ]
            }
        },
        {
            "id": "6541",
            "url": "https:\/\/ilyabirman.ru\/meanwhile\/all\/think-on-45\/",
            "title": "Думаем дальше № 45 — «Комната интеллектуальной разгрузки» c Михаилом Руденко",
            "content_html": "<p>С Михаилом Руденко обсуждаем его модель ДКЦП, принятую в ней терминологию, а также её возможное приложение к Эгее.<\/p>\n<p>Все выпуски подкаста:<br \/>\n<a href=\"https:\/\/podcasts.apple.com\/us\/podcast\/думаем-дальше\/id1744862171\">Эпл<\/a> · <a href=\"https:\/\/www.youtube.com\/playlist?list=PLl7kvlp_qh0j9uzQGU2ws4DkBWdbjY1_d\">Ютюб<\/a> · <a href=\"https:\/\/music.yandex.com\/album\/29069497\">Я.Музыка<\/a> · <a href=\"https:\/\/thinkon.mave.digital\">Мейв<\/a> · <a href=\"https:\/\/cloud.mave.digital\/51724\">РСС для подкастного приложения<\/a><\/p>\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"e2-text-table\">\n  <tr>\n    <td style=\"text-align: left\">0:00<\/td>\n    <td style=\"text-align: left\">Что такое <a href=\"https:\/\/ponedelnik.ru\/dkcp-lection\">ДКЦП<\/a><\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">7:55<\/td>\n    <td style=\"text-align: left\">Что вообще значит «модель»<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">12:32<\/td>\n    <td style=\"text-align: left\">Польза лингвистических инструментов анализа<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">15:43<\/td>\n    <td style=\"text-align: left\">«Проблема», «задача» или «конфликт»? Объяснение на сырке<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">24:11<\/td>\n    <td style=\"text-align: left\">Обсуждаем эфир с Кириллом Мышкиным и какие там конфликты в его боте<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">40:17<\/td>\n    <td style=\"text-align: left\">Инварианты обмена: зачем так называть и почему их именно девять<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">55:51<\/td>\n    <td style=\"text-align: left\">Как применить ДКЦП к Эгее<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">1:04:19<\/td>\n    <td style=\"text-align: left\">Эгея и «маниакальное внимание к мелочам»<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">1:12:03<\/td>\n    <td style=\"text-align: left\">Аудитория Эгеи и что у неё общего с Роллс-Ройсом<\/td>\n  <\/tr>\n<\/table>\n<p>Виспер и ЧатГПТ послушали выпуск за вас и делятся выводами:<\/p>\n<blockquote>\n<p>В этом выпуске обсуждается «Дворец культуры ценностного предложения» (ДКЦП) — методология и модель, созданная Михаилом. Илья читает статью Михаила и делится впечатлением: идея кажется очень интересной и полезной, но изложение чрезмерно сложным, будто бы его можно было объяснить проще. Михаил соглашается, что тема действительно непростая, и рассказывает, что намеренно сделал акцент на нюансах, которые обычно теряются при упрощениях, пусть и ценой усложнения. Суть модели — рассматривать любую продажу или обмен как систему взаимосвязанных элементов, которые помогают понять, что именно мешает или помогает сделке состояться.<\/p>\n<p>Главное в подходе — мыслить через девять «инвариантов», составляющих структуру обмена. Это как чертёж или глобус: глядя на модель, можно увидеть целое явление, которое иначе слишком абстрактно. В центре внимания оказывается конфликт — противоречие между желанием и препятствием. На примере белкового сырка Михаил показывает, что ценность продукта проявляется именно в том, как он помогает разрешить конфликт (хочу восполнить белок, но неудобно готовить коктейли). Такие конфликты не всегда очевидны и формулируются не сразу, а часто обнаруживаются в исследовании клиентского опыта.<\/p>\n<p>Много внимания уделено и терминам. Илья сомневается в словах «модель» и особенно «инварианты», ведь они звучат тяжеловесно и неочевидно. Михаил поясняет, что «инвариант» здесь не содержание, а форма: как неизменные категории обмена, которые всегда есть (участники, объект, коммуникация и т. д.), даже если их наполнение меняется. В повседневной работе он чаще говорит «блоки» или «элементы дворца». Также они обсуждают, зачем нужны редкие термины — иногда это вопрос брендинга, иногда — способ точнее схватить смысл.<\/p>\n<p>Под конец Илья предлагает применить ДКЦП к его собственному проекту — движку для блога «Эгея». Он делится историей его появления и сомнениями: проект для души, но хочется понять, как из него можно получать больше пользы и денег, не разрушая его смысл. Михаил показывает, как модель может помочь: выявить ценности (например, внимание к мелочам и аутентичность), определить вклад клиента (не только деньги, но и усилия при установке), найти сегменты аудитории (редакторы, дизайнеры, айтишники) и увидеть, какие конфликты продукт решает.<\/p>\n<p>Основные идеи и выводы:<br \/>\n— ДКЦП — это модель обмена, позволяющая увидеть структуру и взаимосвязи в любой продаже или сделке.<br \/>\n— Центр модели — конфликт: противоречие между «хочу» и «мешает», которое продукт должен разрешать.<br \/>\n— Девять «инвариантов» — неизбежные элементы любого обмена; термин спорный, но отражает идею постоянных категорий.<br \/>\n— Лексика и термины важны: язык задаёт рамку мышления и помогает точнее видеть смысл (гипотеза Сепира—Уорфа).<br \/>\n— Модель полезна не только для бизнеса, но и для личных проектов: помогает выявить ценность, аудиторию, сценарии применения.<br \/>\n— Необязательно менять продукт под рынок — можно искать аудиторию, у которой ценности совпадут с твоими.<br \/>\n— Подражание и символический смысл (например, использовать инструмент «как у Бирмана») тоже могут быть драйверами ценности.<\/p>\n<p>Такой выпуск будет интересен предпринимателям, продакт-менеджерам, дизайнерам и редакторам, а также всем, кто делает свои проекты и хочет системнее понимать, как формируется ценность и что мешает продукту находить отклик у людей.<\/p>\n<\/blockquote>\n",
            "summary": "С Михаилом Руденко обсуждаем его модель ДКЦП, принятую в ней терминологию, а также её возможное приложение к Эгее...",
            "date_published": "2025-09-16T10:16:30+02:00",
            "date_modified": "2025-09-16T13:46:58+02:00",
            "tags": [
                "Думаем дальше",
                "Эгея"
            ],
            "image": "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg",
            "_date_published_rfc2822": "Tue, 16 Sep 2025 10:16:30 +0200",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "6541",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg"
                ]
            }
        },
        {
            "id": "6532",
            "url": "https:\/\/ilyabirman.ru\/meanwhile\/all\/aegea-2025-sep-1-special\/",
            "title": "Первосентябрьская скидка на Эгею — 2025",
            "content_html": "<p>С этого момента и до конца среды, 3 сентября (по Москве), объявляется акция — скидка на год Эгеи.<\/p>\n<p>А именно 2999 ₽ вместо обычных 3999 ₽:<br \/>\n— за лицензию на год при установке на вашем сервере;<br \/>\n— за продление такой лицензии на год (можно продлить хоть на сколько, даже если у вас ещё действующая, но вы собираетесь пользоваться ещё долго).<\/p>\n<p>Воспользуйтесь специальными условиями <a href=\"https:\/\/blogengine.ru\/get\/special\/\">на специальной странице<\/a>.<\/p>\n<p>Бонус: если вы это сделаете прямо сегодня (по Москве), то ещё три месяца получите бесплатно, а если у вас лицензия истекла за последние три месяца, то долг прощается и вы получаете год и три месяца от сегодняшнего дня.<\/p>\n<p>Вот, купите на сэкономленные деньги себе учебник. День знаний же!<\/p>\n",
            "summary": "С этого момента и до конца среды, 3 сентября (по Москве), объявляется акция — скидка на год Эгеи",
            "date_published": "2025-09-01T15:43:42+02:00",
            "date_modified": "2025-09-01T15:45:20+02:00",
            "tags": [
                "Эгея"
            ],
            "image": "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg",
            "_date_published_rfc2822": "Mon, 01 Sep 2025 15:43:42 +0200",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "6532",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg"
                ]
            }
        },
        {
            "id": "6469",
            "url": "https:\/\/ilyabirman.ru\/meanwhile\/all\/switching-to-cursor\/",
            "title": "Как перейти на Курсор",
            "content_html": "<p>Вы наверное слышали про новый <a href=\"https:\/\/cursor.com\">редактор кода Курсор<\/a> со встроенным ИИ. Я даже слушал подкаст с его авторами несколько месяцев назад. Он умеет и писать новое по команде, и вносить изменения в старое, и отвечать на вопросы о коде. Описание меня одновременно и восхитило, и ужаснуло: ну как можно доверить большой сложный проект этой штуке? Он же там всё сломает!<\/p>\n<p>Я давно хожу в Дипсик с вопросами типа «накидай мне ХТМЛ+ЦСС для того-то», или «напиши алгоритм такой-то переработки массива», или «сделай регулярное выражение». Это что-то вроде продвинутого поиска в интернете, но вставляю-то результат я в свой код только сам.<\/p>\n<p>В общем, оказалось, что Курсор — это совсем не страшно, рекомендую всем.<\/p>\n<p>Просто скачайте Курсор и откройте свой проект, он вам ничего там не сломает. Для начальной настройки доверия с ним можно просто поговорить. Я открыл репозиторий Эгеи и сказал: посмотри, что за изменения я сделал в рабочей папке, и опиши их смысл и цели, как ты их понял. Он покрутил колёсиком и выдал очень внятное описание. Я бы вам показал, но не хочу раскрывать планы на Эгею раньше времени.<\/p>\n<p>Дальше его можно просить о чём хочешь, он будет что-то предлагать, и при этом показывать, какие изменения он будет вносить. Их можно принимать и отклонять, а можно попросить его что-то объяснить или додумать. Мне понравился такой момент: я попросил его доработать метод walk (), чтобы он передавал в колбек не только текущий элемент, но и предыдущий и следующий:<\/p>\n<blockquote>\n<p>expand this function to pass not only the $band, but also previous and next bands in the flow<\/p>\n<\/blockquote>\n<p>Курсор:<\/p>\n<blockquote>\n<p>I’ll help modify the walk function in the Neasden Model class to pass previous and next bands to the callback. This will be useful for the decolon filter to properly check adjacent bands. First, let me search for the Model class to see its full implementation...<\/p>\n<\/blockquote>\n<p>То есть он не просто принял команду, а даже между делом объяснил, зачем это может быть полезно. И это правильное объяснение! Я ровно за этим его об этом и попросил.<\/p>\n<p>Он написал код, но на каждом обороте цикла он стал по три раза вызывать некую функцию <tt>expandFlowElement<\/tt>. Я попросил убрать это, он переписал. Я спросил:<\/p>\n<blockquote>\n<p>is it worth it?<\/p>\n<\/blockquote>\n<p>Курсор:<\/p>\n<blockquote>\n<p>Looking at the <tt>expandFlowElement<\/tt> implementation, I can see that it’s actually a very lightweight operation that just:<\/p>\n  <ol start=\"1\">\n    <li>For strings: Splits by newlines and wraps in a simple array structure<\/li>\n    <li>For arrays: Just wraps the input in a slightly different array structure<\/li>\n  <\/ol>\n<p>The operation is:<\/p>\n  <ul>\n    <li>Pure memory operations (no I\/O)<\/li>\n    <li>No complex calculations<\/li>\n    <li>No external calls<\/li>\n    <li>No database queries<\/li>\n    <li>No file operations<\/li>\n  <\/ul>\n<p>Given this, the optimization I suggested might actually be counterproductive because:<\/p>\n  <ol start=\"1\">\n    <li>It creates an additional array in memory (<tt>$expanded_flow<\/tt>)<\/li>\n    <li>The original version only expands elements when they’re actually needed<\/li>\n    <li>The memory overhead of storing the expanded array might be more significant than the small CPU savings<\/li>\n  <\/ol>\n<p>I would recommend reverting the change. The original implementation is actually more memory efficient since it only expands elements when they’re needed, and the CPU cost of the expansion is negligible.<\/p>\n<p>Would you like me to revert the changes back to the original implementation?<\/p>\n<\/blockquote>\n<p>Ну это разве не магия?<\/p>\n<p>А вчера он мне помог ответить на письмо. Мне написал пользователь Эгеи с вопросом о том, как ему внести постоянные изменения в <tt>.htaccess<\/tt>, чтобы Эгея их не перетирала при обновлении. Я помню, что что-то такое вроде предусматривал, пишу Курсору:<\/p>\n<blockquote>\n<p>do I have a feature where a user can add their own lines that will be automatically added to .htaccess file when I’m generatnig it<\/p>\n<\/blockquote>\n<p>Курсор:<\/p>\n<blockquote>\n<p>Let me search through the codebase to find any functionality related to custom <tt>.htaccess<\/tt> directives.<\/p>\n<p>Yes, I can confirm that the project does have a feature for adding custom <tt>.htaccess<\/tt> directives. There are two configuration parameters that allow users to add their own custom directives to the <tt>.htaccess<\/tt> file:<\/p>\n  <ul>\n    <li><tt>custom_htaccess_directives<\/tt> — For adding general Apache directives<\/li>\n    <li><tt>custom_htaccess_rewrites<\/tt> — For adding custom rewrite rules<\/li>\n  <\/ul>\n<p>These can be set in your config file (<tt>user\/config.php<\/tt>). When the <tt>.htaccess<\/tt> file is generated, your custom directives will be inserted at specific locations:<br \/>\nGeneral directives will be placed at the top of the file (after the comment)<br \/>\nRewrite rules will be placed inside the <tt>&lt;IfModule mod_rewrite.c&gt;<\/tt> block, before the default rewrite rules<\/p>\n<p>For example, in your <tt>user\/config.php<\/tt> you could add:<\/p>\n<\/blockquote>\n<pre class=\"e2-text-code\"><code>$_config['custom_htaccess_directives'] = &quot;\n# Custom directives\nAddType application\/x-httpd-php .php\n&quot;;\n\n$_config['custom_htaccess_rewrites'] = &quot;\n# Custom rewrite rules\nRewriteRule ^custom-page$ index.php?go=custom-page [L]\n&quot;;<\/code><\/pre><blockquote>\n<p>The system will automatically insert these custom directives when generating the <tt>.htaccess<\/tt> file, while preserving all the default functionality. This is handled by the <tt>e2_ensure_htaccess_on_apache ()<\/tt> function in <tt>system\/core\/install.php<\/tt>. Note that the <tt>.htaccess<\/tt> file will be regenerated during updates, but your custom directives will be preserved as long as they are properly set in your config file.<\/p>\n<\/blockquote>\n<p>Он всё понял, описал и даже примеры использования привёл! Ну я и ответил на письмо этим текстом.<\/p>\n<p>Там есть не только чат. Он ещё прямо в коде иногда пытается читать мысли и подсказывать, что написать. Бывает такое, что ты изменил что-то в одном месте в коде, и потом идёшь в другое, чтобы сделать там аналогичное изменение. Например, изменил порядок аргументов в функции, а потом идёшь в вызовах исправить. В таком случае, когда ты туда придёшь, тебя там будет ждать готовое изменение, которое надо будет просто принять кнопкой «Таб».<\/p>\n<p>Короче, я уверовал примерно за первый час.<\/p>\n<p>Но ведь переход с одного редактора на другой — это всё равно всегда боль? А тут этого этапа просто не было. Курсор настолько буквально слизал весь вид ВС Кода, что я иногда даже не понимаю, что это другой редактор. Он импортировал все сочетания клавиш, расцветку и прочее. Ощущение, что я никуда не переезжал, просто ВС Код научился чтению мыслей. Самый драматический переход по смыслу и самый безболезненный на практике за всю историю редакторов кода.<\/p>\n<p>Если бы пару лет назад мне показали скриншот ВС Кода, где ко всем панелям добавилась бы ещё панель «Чат», я бы подумал, что это шутка с доведением до абсурда раздувания ВС Кода всё новыми панелями. А вот оказалось, что совсем не шутка.<\/p>\n",
            "summary": "Вы наверное слышали про новый редактор кода Курсор со встроенным ИИ. Я даже слушал подкаст с его авторами несколько месяцев назад",
            "date_published": "2025-04-16T10:43:44+02:00",
            "date_modified": "2025-04-16T11:53:39+02:00",
            "tags": [
                "искусственный интеллект",
                "Курсор",
                "программирование",
                "Эгея"
            ],
            "image": "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg",
            "_date_published_rfc2822": "Wed, 16 Apr 2025 10:43:44 +0200",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "6469",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": true,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg"
                ]
            }
        },
        {
            "id": "6341",
            "url": "https:\/\/ilyabirman.ru\/meanwhile\/all\/kak-rabotayut-otlozhennye-publikacii-v-egee\/",
            "title": "Как работают отложенные публикации в Эгее",
            "content_html": "<h2>Смысл «отложенности» с точки зрения веб-программирования<\/h2>\n<p><a href=\"https:\/\/blogengine.ru\">В платной Эгее<\/a> есть возможность запланировать заметку на время. Понятно, что у меня нормальный интерфейс выбора даты и времени. Но интересно, что для реализации самой функции отложенных публикаций нужно думать как веб-программист, а я заметил, что это не у всех получается.<\/p>\n<p>Допустим, автор запланировал выход заметки на 15:00. Как добиться, чтобы в 15:00 заметка вышла? Веб-сервер умеет отвечать только на запросы, он не умеет по собственной инициативе просыпаться и что-то начинать делать. И тут почему-то многие разработчики начинают думать в сторону крона — планировщика запуска задач по расписанию.<\/p>\n<p>Эгея должна работать на любом шаред-хостинге, у меня нет возможности настраивать и запускать там произвольные вещи. Но главное, что это и не нужно.<\/p>\n<p>Чтобы заметка вышла в 15:00, в 15:00 ничего не должно произойти, буквально ничего. Потому что что вообще значит «вышла»? Допустим вот сервер может проснуться в 15:00 и начать действовать, что он должен сделать-то? Отправить эту заметку на случайный айпи-адрес?..<\/p>\n<p>Сама фраза «заметка должна выйти в 15:00» означает только одно: на все запросы, сделанные начиная с 15:00 нужно отвечать сайтом, где уже опубликована эта заметка. Если на сайт кто-то зайдёт в 14:54, а потом кто-то в 15:19, то заметку нужно будет показать по второму запросу, вот и всё.<\/p>\n<p>Чтобы это работало, нужно было сделать три вещи. Первая — это дать назначать в качестве даты-времени выхода заметки дату-время из будущего. Вторая — при формировании страниц сайта отображать и вообще учитывать только заметки, время которых уже наступило. Третья — доработать систему кеширования, чтобы в 15:19 сайт не открывался в устаревшем виде из кеша.<\/p>\n<h2>Доработка системы кеширования<\/h2>\n<p>Эгея — редчайший пример веб-приложения, где <a href=\"https:\/\/ilyabirman.ru\/meanwhile\/all\/glavny-princip-keshirovaniya-dannye-vsegda-aktualny\/\">хорошо запрограммирован кеш<\/a>: он хранится вечно, пока актуален, но перестаёт показать устаревшие данные ровно в тот момент, когда они устарели. До появления фичи отложенных заметок устаревшие кеши удалялись при редактировании данных. Например я отредактировал заметку, добавив в неё новый тег — все кеши, которые использовались для выдаче заметок по этому тегу, удаляются, чтобы при следующем запросе сформироваться заново.<\/p>\n<p>А тут нам нужно сделать, чтобы кеш каким-то чудом в 15:00 удалился несмотря на то, что автор ничего не редактирует. Разумеется, в 15:00 мы ничего делать не будем; решать этот вопрос мы будем в 15:19, когда читатель обратится за заметкой.<\/p>\n<p>Но откуда мы узнаем, что именно запрос в 15:19 потребует пересборки кеша, а на тот, что был в 14:54, можно ещё отвечать из кеша? Ведь время публикации заметки хранится в базе данных, а если мы будем ходить в неё на каждый запрос для проверки, то это обессмыслит само существование кеша!<\/p>\n<p>Чтобы решить эту задачу, пришлось реализовать запланированное устаревание кеша. Рядом с кешем на диске хранится файл с датами-временами, в которые кеш должен устаревать. Каждый раз, когда пользователь планирует выход заметки на будущее, эти дата-время записываются в этот файл. Перед тем, как выдать данные из кеша, Эгея смотрит: а нету ли в файле дат-времён устаревания даты-времени из прошлого? Если есть, значит кеш устарел, и его надо удалить, а уже потом собирать страницу по-честному, из базы.<\/p>\n<p>Таким образом фича планирование заметок на будущее фактически сводится к фиче планирования устаревания кеша.<\/p>\n",
            "summary": "В платной Эгее есть возможность запланировать заметку на время. Понятно, что у меня нормальный интерфейс выбора даты и времени",
            "date_published": "2024-08-31T19:21:18+02:00",
            "date_modified": "2024-08-31T19:32:20+02:00",
            "tags": [
                "программирование",
                "Эгея"
            ],
            "image": "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg",
            "_date_published_rfc2822": "Sat, 31 Aug 2024 19:21:18 +0200",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "6341",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg"
                ]
            }
        },
        {
            "id": "6184",
            "url": "https:\/\/ilyabirman.ru\/meanwhile\/all\/think-on-1\/",
            "title": "Думаем дальше № 1 — «Тексту положено быть быстрым» с Никитой Прокоповым",
            "content_html": "<p>Так, ну <a href=\"https:\/\/t.me\/ilyabirman_channel\/9883\">вот вам первый экспериментальный выпуск подкаста<\/a>. В этот раз беседуем с Никитой Прокоповым. Что будет дальше — пока не знаю, но хочу ещё. Обложек, чаптеров и платформ пока нет; пока просто файлик в телеграме. Я решил, что если будет хотя бы несколько выпусков, тогда уже буду всем этим заморачиваться. Название тоже может поменяться.<\/p>\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"e2-text-table\">\n  <tr>\n    <td style=\"text-align: left\">0:00<\/td>\n    <td style=\"text-align: left\">История про табло<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">5:56<\/td>\n    <td style=\"text-align: left\"><a href=\"https:\/\/t.me\/nikitonsky_pub\/577\">Пост Никиты про сложное и простое<\/a><\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">10:15<\/td>\n    <td style=\"text-align: left\">Как мы с разных сторон познакомились с переусложнением<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">15:36<\/td>\n    <td style=\"text-align: left\">Не верь в сложность, когда говорят «просто поверь»<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">20:13<\/td>\n    <td style=\"text-align: left\">Оценивать чужую работу плохо, но...<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">22:16<\/td>\n    <td style=\"text-align: left\">Причина как критерий хорошего дизайна<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">27:51<\/td>\n    <td style=\"text-align: left\">Интуиция, факты и законы природы<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">34:05<\/td>\n    <td style=\"text-align: left\">Элон (Илон?) Маск и ПХП<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">36:00<\/td>\n    <td style=\"text-align: left\">Эгея быстрая, хотя Илья даже не старался<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">37:55<\/td>\n    <td style=\"text-align: left\">Нисден 3.0 стал в сто раз быстрее<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">46:38<\/td>\n    <td style=\"text-align: left\">Современный компьютер предательски тормозит незаметно<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">51:18<\/td>\n    <td style=\"text-align: left\">Парсинг ХТМЛ<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">58:46<\/td>\n    <td style=\"text-align: left\">Ускорение ТОМЛ-парсера<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">1:02:54<\/td>\n    <td style=\"text-align: left\">Формальные грамматики<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">1:08:11<\/td>\n    <td style=\"text-align: left\">Апач против Нгинкса<\/td>\n  <\/tr>\n  <tr>\n    <td style=\"text-align: left\">1:11:26<\/td>\n    <td style=\"text-align: left\">Как файлы с точкой в начале стали скрытыми<\/td>\n  <\/tr>\n<\/table>\n<p>Чё, как вам? Какие темы раскрыть в следующих выпусках?<\/p>\n",
            "summary": "Так, ну вот вам первый экспериментальный выпуск подкаста. В этот раз беседуем с Никитой Прокоповым. Что будет дальше — пока не знаю, но хочу ещё",
            "date_published": "2023-12-25T17:09:58+02:00",
            "date_modified": "2023-12-29T14:59:10+02:00",
            "tags": [
                "Думаем дальше",
                "Нисден",
                "подкаст",
                "технологии",
                "Эгея"
            ],
            "image": "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg",
            "_date_published_rfc2822": "Mon, 25 Dec 2023 17:09:58 +0200",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "6184",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg"
                ]
            }
        },
        {
            "id": "6169",
            "url": "https:\/\/ilyabirman.ru\/meanwhile\/all\/aegea-11-3\/",
            "title": "Эгея 11.3",
            "content_html": "<p>Вышел очередной апдейт <a href=\"https:\/\/ilyabirman.ru\/meanwhile\/all\/aegea-11\/\">11-й версии<\/a> (сборка v4134).<\/p>\n<h2>Что изменилось<\/h2>\n<p>Теперь с Эгеей идёт новый прекресный Нисден 3.0, см. ниже.<\/p>\n<p>Также добавлен автосброс кеша при смене домена, об этом тоже см. ниже.<\/p>\n<p>Ещё ранее в версии 11.2 <a href=\"https:\/\/ilyabirman.ru\/meanwhile\/all\/aegea-11-2\/\">добавилось переименование файла<\/a>:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-11-2-file-rename@2x.jpg\" width=\"488\" height=\"280\" alt=\"\" \/>\n<\/div>\n<p>Роберт Блинов обратил моё внимание на то, что это меню сделано буквально так, как я сам учу не делать: в нём кнопка удаления находится предательски близко к часто используемой кнопке «Вставить», из-за чего можно случайно удалить только что загруженный файл.<\/p>\n<p>В 11.3 я сделал минимальное движение, чтобы проблема была не настолько острой — отодвинул удаление за черту:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-11-3-file-rename@2x.jpg\" width=\"488\" height=\"280\" alt=\"\" \/>\n<\/div>\n<p>А ещё теперь картинку вставляет даблклик по ней, чтобы вообще в это меню не ходить.<\/p>\n<p>Что ещё изменилось:<\/p>\n<ul>\n  <li>видосы с пометкой @loop автозапускаются с большей надёжностью;<\/li>\n  <li>размер и качество юзерпика теперь можно настроить в конфиге (userpic_size, userpic_jpeg_quality) — для Ильяхова пришлось добавить, а то он здоровенный юзерпик вывел, и ему пикселей не хватало;<\/li>\n  <li>Лайкли обновились до 3.1;<\/li>\n  <li>Эгея теперь проверяет наличие библиотеки GD в одной из первых строк, и сразу останавливается, если её нет, вместо того, чтобы удивлять пользователя тем, что с картинками что-то ничего не работает;<\/li>\n  <li>другие проблемы с обработкой изображений логируются более подробно, чтобы можно было, если что, раскопать, почему не работает.<\/li>\n  <li>подкрутились цвета тегов в некоторых темах.<\/li>\n<\/ul>\n<p>Починилась разная эзотерика:<\/p>\n<ul>\n  <li>если поисковый запрос буквально совпадает с существующим тегом, Эгея показывает этот тег в начале выдачи поиска; так вот, этот тег выводился в том регистре, как было введено в поиск (например, <a href=\"https:\/\/ilyabirman.ru\/meanwhile\/found\/италия\/\" class=\"nu\">«<u>италия<\/u>»<\/a>), а не в том, в котором он реально записан (например, «Италия»);<\/li>\n  <li>если изменить время публикации заметки, которая была опубликована не в том часовом поясе, где вы находитесь сейчас, оно сохранялось неправильно как раз с разницей между этими часовыми поясами (точнее, оно сохранялось «правильно» в текущем вашем часовом поясе, и съезжало при отображении в часовом поясе заметки);<\/li>\n  <li>надёжнее отображается информация о сроке действия платной лицензии;<\/li>\n  <li>теги, которые были запинены в платной или старинной версии Эгеи, продолжали выделяться в списке сильнее даже после перехода на бесплатную версиях, и это никак нельзя было победить.<\/li>\n<\/ul>\n<h2>Нисден 3.0<\/h2>\n<p>За обработку форматирования текста в Эгее отвечает форматтер Нисден. Я его написал для Эгеи, но использую кое-где ещё. Это он превращает текст в звёздочках в жирный шрифт, имена загруженных файлов в настоящие адаптивные картинки и играющие песни; умеет узнавать и красиво оформлять списки, таблицы, ссылки; расставлять правильные кавычки и тире, неразрывные пробелы, оживлять ссылки на таймкоды в видео и аудио.<\/p>\n<p>С Эгеей 11.2 шёл Нисден версии 2.87. За время своего существования он оброс кучей хаков и костылей, что мешало его развивать. А мои задумки на 12-ю Эгею потребуют от него намного больше разных умений. Поэтому я взялся переписать его.<\/p>\n<p>С Эгеей 11.3 идёт Нисден версии 3.0. Особых новых фич вы не заметите, они будут потом. Но зато вы можете заметить катастрофическое ускорение обработки текста — иногда в десятки раз. Конечно, обработку одной заметки нормальной длины вы и раньше не замечали: даже если она длилась 0,1 с, это всё равно мгновенно на фоне задержки интернета. Но вообще-то это было очень медленно.<\/p>\n<p>Чтобы убедиться, что новый Нисден ничего не сломает, я протестировал его на одиннадцати тысячах заметок: всём своём блоге и всём блоге Болка — мы оба ведём блоги по двадцать с лишним лет.<\/p>\n<p>Есть и несколько приятных побочных эффектов переписывания более прямыми руками:<\/p>\n<ul>\n  <li>типограф теперь типографит текст в подписях аудиотреков (да, раньше не умел);<\/li>\n  <li>если нумерованный список начать с «0.», то он отображался как маркированный, а теперь  станет нормальным нумерованным с нуля;<\/li>\n  <li>если написать два подряд заголовка одинакового уровня, теперь они корректно определяются как два заголовка, а не как один с переносом внутри (а если вы как раз имели в виду перенос строки внутри заголовка, теперь придётся его сделать явно через &lt;br \/&gt;);<\/li>\n  <li>таймкоды заработали в загруженном на сервер Эгеи видео (раньше, оказывается, работали только с Ютюбом и Вимео).<\/li>\n  <li>джаваскрипт для обработки таймкодов в видео теперь подгружается только если вы их используете (раньше подгружался всегда, так как был неотъемлемой частью модуля видео);<\/li>\n  <li>саммари заметок (отображаются на страницах тегов; передаются в качестве метатега description) стали чище: туда стало попадать меньше мусора, не являющегося текстом заметки, например те же таймкоды.<\/li>\n<\/ul>\n<p>Это изменения автоматически случатся во всех уже опубликованных заметках. Я считаю их все правильными, но если для вас какие-то из них нежелательны, придётся подкрутить вручную.<\/p>\n<h2>Автосброс кеша при смене домена<\/h2>\n<p>Также теперь Эгея автоматически сбрасывает весь кеш, если вы запрашиваете её по новому имени домена. Зачем это?<\/p>\n<p>Некоторые пользователи ранее сталкивались такой проблемой. Если хреново настроен сервер так, что одна и та же Эгея открывается по разным доменам (например, с www и без), без редиректа, то Эгея может закешировать свои внутренние ссылки с одним доменом и использовать этот кеш на другом. Например, вы зашли на example.com, потом переходите на конкретную заметку, а она открывается уже с www.example.com. Это выглядело неожиданно и некрасиво.<\/p>\n<p>Хуже всего, если там вместо домена вдруг возникал айпи-адрес, потому что у кого-то сервер открывается прямо по нему! Мне жаловались: «Эгея ставит ссылки на айпи-адрес вместо домена!» А Эгея ничё не ставит, она даже не знает, какой у вас айпи-адрес. Это вы или кто-то зашёл по этому айпи-адресу, а Эгея закешировала ссылки.<\/p>\n<p>Долгое время я считал, что такая кривая настройка сервера — проблема пользователя. Не должно по разным адресам открываться одно и то же! Потом оказалось, что некоторые пользователи пользуются такими хостингами, где настроить редирект невозможно или сложно. Тогда, ещё много версий назад, в конфиге Эгеи добавился параметр preferred_domain_name, чтобы Эгея хотя бы сама могла редиректить на тот домен, который вы считаете каноническим. Но кто ж пойдёт настраивать? Проще пожаловаться мне.<\/p>\n<p>У меня была мысль попробовать как-то переписать кеширование так, чтобы в кеш адреса всегда попадали без домена, а домен к ним пририсовывался уже после вытаскивания их из кеша, но оказалось, что это слишком дофига работы. Поэтому я плюнул и сделал в Эгее тупое правило: если тебя открывают не по тому домену, по которому открывали в прошлый раз, убей все кеши и генерируй все страницы заново.<\/p>\n<p>Это решение никак не меняет того факта, что сервер настроен плохо. Более того, если он у вас настроен плохо, Эгея теперь будет неэффективно использовать кеш, удаляя его каждый раз, когда домен сменился. Нагрузка на ваш неправильно настроенный сервер возрастёт. Но зато снизится нагрузка на меня, связанная с необходимостью разруливать такие ситуации вручную!<\/p>\n<p>Приятный побочный эффект — если вы реально переехали с одного домена на другой, просто перенеся все те же файлы с собой, кеш сбрасывать не придётся.<\/p>\n<h2>Как обновиться<\/h2>\n<p>Если Эгея у вас оплачена, напишите мне, и я дам вам полную версию 11.3. Если вы пользуетесь сервисом, подождите, пока мы обновим его.<\/p>\n<p>Свежий дистрибутив лайт-версии — в конце страницы <a href=\"https:\/\/blogengine.ru\/get\/\" class=\"nu\">«<u>Стать пользователем<\/u>»<\/a>. Замените папку \/system\/ новой.<\/p>\n<p>См. также: <a href=\"https:\/\/blogengine.ru\/compare\/\">Что изменилось в файлах с версии 11.2<\/a> (или любой другой).<\/p>\n",
            "summary": "Накопилось мелочей, а также — Нисден 3.0, ускоренный в десятки раз",
            "date_published": "2023-12-11T07:57:23+02:00",
            "date_modified": "2025-11-23T18:42:02+02:00",
            "tags": [
                "Нисден",
                "релиз",
                "Эгея"
            ],
            "image": "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-11-2-file-rename@2x.jpg",
            "_date_published_rfc2822": "Mon, 11 Dec 2023 07:57:23 +0200",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "6169",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-11-2-file-rename@2x.jpg",
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-11-3-file-rename@2x.jpg",
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg"
                ]
            }
        },
        {
            "id": "6082",
            "url": "https:\/\/ilyabirman.ru\/meanwhile\/all\/aegea-2023-sep-1-special\/",
            "title": "Первосентябрьская скидка на Эгею",
            "content_html": "<p>С этого момента и до конца воскресенья, 3 сентября, объявляется акция — скидка на год Эгеи.<\/p>\n<p>А именно 2999 ₽ вместо обычных 3999 ₽:<br \/>\n— за лицензию на год при установке на вашем сервере;<br \/>\n— за продление такой лицензии на год (можно продлить хоть на сколько, даже если у вас ещё действующая, но вы собираетесь пользоваться ещё долго);<br \/>\n— за продление сервиса Эгеи на год (можно заплатить только один раз, но тоже независимо от того, сколько у вас осталось до истечения действующей).<\/p>\n<p>Воспользуйтесь специальными условиями <a href=\"https:\/\/blogengine.ru\/get\/special\/\">на специальной странице<\/a>.<\/p>\n<p>Вот, купите на сэкономленные деньги себе учебник. День знаний же!<\/p>\n",
            "summary": "С этого момента и до конца воскресенья, 3 сентября, объявляется акция — скидка на год Эгеи",
            "date_published": "2023-08-31T16:54:23+02:00",
            "date_modified": "2023-08-31T17:00:30+02:00",
            "tags": [
                "Эгея"
            ],
            "image": "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg",
            "_date_published_rfc2822": "Thu, 31 Aug 2023 16:54:23 +0200",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "6082",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg"
                ]
            }
        },
        {
            "id": "6031",
            "url": "https:\/\/ilyabirman.ru\/meanwhile\/all\/what-aegea-does-talk\/",
            "title": "Доклад «Что делает движок блога „Эгея“»",
            "content_html": "<p>Прочитал в мае в Москве доклад о своём <a href=\"http:\/\/blogengine.ru\/\">движке блога «Эгея»<\/a>:<\/p>\n<div class=\"e2-text-video\">\n<iframe src=\"https:\/\/www.youtube.com\/embed\/vrcXLs_PhVA?enablejsapi=1\" allow=\"autoplay\" frameborder=\"0\" allowfullscreen><\/iframe>\n<p>\n00:00 Интро<br \/>\n03:32 Обработка текста и содержимое заметок<br \/>\n09:36 Внешний мир: шаринг, сео, урлы, комментарии<br \/>\n16:59 Навигация: поиск, теги, рекомендации, перебивки и меню<br \/>\n25:48 Качество жизни<br \/>\n<\/p>\n<\/div>\n<p>Встречается мнение, что движок блога — это простейшая задача веб-разработки. Нужно вытащить из базы данных заметки и показать их в определённом порядке. Ну ещё дать интерфейс добавления и редактирования. «Эгею» называют «лёгким» движком. Рассказываю, сколько всего «Эгея» делает под капотом, чтобы быть такой приятной и при этом оставаться «лёгкой» в глазах пользователей.<\/p>\n<p>Смотрите и обязательно покажите знакомым программистам, чтобы настроить их на нужный лад.<\/p>\n<p>Спасибо организаторам HolyJS — конференции для JavaScript‑разработчиков — за приглашение и запись выступления! Ребята просили передать, что сейчас <a href=\"https:\/\/holyjs.ru\/callforpapers\/?utm_source=partner&utm_medium=birman&utm_campaign=cfp\">открыт приём заявок<\/a> на осеннюю конференцию.<\/p>\n",
            "summary": "Прочитал в мае в Москве доклад о своём движке блога «Эгея»...",
            "date_published": "2023-07-04T21:12:31+02:00",
            "date_modified": "2023-09-19T18:15:32+02:00",
            "tags": [
                "видео",
                "доклады",
                "Эгея"
            ],
            "image": "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/remote\/youtube-vrcXLs_PhVA-cover.jpg",
            "_date_published_rfc2822": "Tue, 04 Jul 2023 21:12:31 +0200",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "6031",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": true,
                "links_required": [
                    "jquery\/jquery.js",
                    "jquery\/jquery.js",
                    "media-seek\/media-seek.js"
                ],
                "og_images": [
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/remote\/youtube-vrcXLs_PhVA-cover.jpg",
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg"
                ]
            }
        },
        {
            "id": "6004",
            "url": "https:\/\/ilyabirman.ru\/meanwhile\/all\/aegea-11-2\/",
            "title": "Эгея 11.2",
            "content_html": "<p>Ещё один апдейт <a href=\"https:\/\/ilyabirman.ru\/meanwhile\/all\/aegea-11\/\">11-й версии<\/a> (сборка v4116).<\/p>\n<p>Появилась возможность переименовать загруженный файл из меню с превьюшками в редакторе:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-11-2-file-rename@2x.jpg\" width=\"488\" height=\"280\" alt=\"\" \/>\n<\/div>\n<p>Зачем это надо. Вы могли загрузить файл вставкой картинки через ⌘V в редактор, и он назвался как попало, а вам хочется, чтобы назывался по-вашему. Или вы могли забыть написать @2x в названии ретинового файла или @loop в названии зацикленного видео. Раньше надо было удалить файл, переименовать у себя на диске, загрузить новый, не забыть исправить имя в редакторе, а сейчас — просто переименовываешь и всё. Эгея сразу переименовывает и в редакторе тоже.<\/p>\n<p>Эгея переименовывает внимательно:<\/p>\n<ul>\n  <li>не даст случайно переписать другой файл с тем же именем, но промолчит, если существующий файл с тем же именем — это реально точно такой же файл байт в байт;<\/li>\n  <li>не сломает другие заметки, если вдруг в них используется файл под старым именем (сделает копию вместо переименования);<\/li>\n  <li>не даст переименовать jpeg в mp3, но даст в jpg, если вам так нравится больше.<\/li>\n<\/ul>\n<p>Что ещё изменилось:<\/p>\n<ul>\n  <li>у Черновиков появилась иконка с карандашиком, чтобы сразу перейти в редактор, а не просто открыть превью заметки;<\/li>\n  <li>добавились параметры конфига custom_htaccess_rewrites и custom_htaccess_directives, чтобы можно было добавить отсебятины в .htaccess и Эгея её не перетирала при обновлении (при изменении этих параметров Эгея сама перезапишет .htaccess, то есть его по-прежнему не нужно редактировать руками);<\/li>\n  <li>можно установить переменную окружения или серверную переменную E2_SYNTH_URLS, чтобы Эгея генерировала красивые урлы, так что если у вас Нгинкс, и вы настроили все реврайты в нём, то можете заодно сделать fastcgi_param E2_SYNTH_URLS true, чтобы не трогать конфиг Эгеи;<\/li>\n  <li>подтюнились темы оформления;<\/li>\n  <li>на странице \/settings\/underhood\/ теперь показывает, на каком серверном ПО крутится Эгея.<\/li>\n<\/ul>\n<p>Починилось:<\/p>\n<ul>\n  <li>ошибки в инсталяторе под ПХП 8.2;<\/li>\n  <li>ошибки под ПХП 5.6;<\/li>\n  <li>у всех превьюшек картинок на сервере было то же расширение, что у исходных файлов, хотя на самом деле они все джипеги — теперь будут с расширением jpg как положено;<\/li>\n  <li>могла не работать загрузка файлов на конфигурациях без красивых урлов;<\/li>\n  <li>редкие баги в РСС;<\/li>\n  <li>вёрстка количества новых комментариев иногда ломалась в новом дизайне;<\/li>\n  <li>поля для ввода имени и почты в комментариях иногда могли появляться, когда не нужно;<\/li>\n<\/ul>\n<h2>Как обновиться<\/h2>\n<p>Если Эгея у вас оплачена, напишите мне, и я дам вам полную версию 11.2. Если вы пользуетесь сервисом, подождите, пока мы обновим его.<\/p>\n<p>Свежий дистрибутив лайт-версии — в конце страницы <a href=\"https:\/\/blogengine.ru\/get\/\" class=\"nu\">«<u>Стать пользователем<\/u>»<\/a>. Замените папку \/system\/ новой.<\/p>\n<p>См. также: <a href=\"https:\/\/blogengine.ru\/compare\/\">Что изменилось в файлах с версии 11.1<\/a> (или любой другой).<\/p>\n",
            "summary": "Ещё один апдейт 11-й версии (сборка v4116)",
            "date_published": "2023-06-02T15:12:11+02:00",
            "date_modified": "2025-11-23T18:41:55+02:00",
            "tags": [
                "релиз",
                "Эгея"
            ],
            "image": "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-11-2-file-rename@2x.jpg",
            "_date_published_rfc2822": "Fri, 02 Jun 2023 15:12:11 +0200",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "6004",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-11-2-file-rename@2x.jpg",
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg"
                ]
            }
        },
        {
            "id": "5965",
            "url": "https:\/\/ilyabirman.ru\/meanwhile\/all\/aegea-11-1\/",
            "title": "Эгея 11.1",
            "content_html": "<p>ебольшой апдейт <a href=\"https:\/\/ilyabirman.ru\/meanwhile\/all\/aegea-11\/\">11-й версии<\/a> (сборка v4098).<\/p>\n<p>Изменилось в интерфейсе:<\/p>\n<ul>\n  <li>время, просмотры и теги под заметкой теперь упакованы в горизонтально-прокручивающийся модуль похожий на главное меню, так что эти метаданные компактнее выглядят на мобиле (спасибо, Нина Папченя!);<\/li>\n  <li>при комментировании теперь более понятно, что надо выбрать соцсеть для входа или оставить имя и почту (оказывается, там сломалось нормальное поведение давным давно, а я не замечал; то есть я просто вернул, как было когда-то);<\/li>\n  <li>если комментатор уже оставлял комментарий через почту, то поля имени и почты будут сразу показаны ему развёрнутыми с его именем и почтой;<\/li>\n  <li>в редакторе появились подписи у полей, которые разворачиваются снизу за пунктирной ссылкой — стало понятнее, что там;<\/li>\n  <li>теперь отправка всех форм с нажатым ⌘ в Сафари открывает их в новом окне и не теряет их данные (это не работало из-за бага Сафари, но Алексей Елисеев помог его обойти);<\/li>\n  <li>по адресу \/calendar\/ теперь срабатывает редирект на последний день календаря — такой способ дать ссылку на навигацию по календарю для тех, у кого лайт-версия без меню.<\/li>\n<\/ul>\n<p>Починилось:<\/p>\n<ul>\n  <li>кнопка «Подписаться на блог» отображалась на английском языке (Follow this blog), независимо от выбранного в Настройке языка;<\/li>\n  <li>запланированная на будущее заметка теперь не забывает свою «избранность», если вы поставили ей звёздочку, пока она ждала своего выхода;<\/li>\n  <li>загрузка файлов с зажатым альтом (чтобы переписать существующий, а не добавить новый) могла не работать;<\/li>\n  <li>улучшено определение размеров джипегов (спасибо, Женя Степанищев);<\/li>\n  <li>если база данных недоступна, но страницу удалось открыть без неё из кеша, то показывалось, будто у всех заметок ровно по одному просмотру;<\/li>\n  <li>убрано сообщение об ошибке про «go» на конфигурациях с ПХП 8 и без поддержки красивых урлов;<\/li>\n  <li>исправлено ещё несколько недосовместимостей с ПХП 8 и других мелких багов.<\/li>\n<\/ul>\n<p>Заодно напомню, что если вы уже хоть раз платили за любую Эгею, для вас <a href=\"https:\/\/blogengine.ru\/get\/special\/\">действуют специальные условия до конца марта<\/a>, то есть последние несколько дней. Даже если у вас уже и так оплачено с запасом, вы можете продлить сервис на год за 1900 ₽ или обычную лицензию на любое количество лет за 3000 ₽ в год. С апреля для вас будут действовать общие тарифы — на полгода за 2699 ₽ (~449 ₽ в месяц) и на год за 3999 ₽ (~333 ₽ в месяц).<\/p>\n<h2>Как обновиться<\/h2>\n<p>Если Эгея у вас оплачена, напишите мне, и я дам вам полную версию 11.1. Если вы пользуетесь сервисом, подождите, пока мы обновим его.<\/p>\n<p>Свежий дистрибутив лайт-версии — в конце страницы <a href=\"https:\/\/blogengine.ru\/get\/\" class=\"nu\">«<u>Стать пользователем<\/u>»<\/a>. Замените папку \/system\/ новой.<\/p>\n<p>См. также: <a href=\"https:\/\/github.com\/ilyabirman\/Aegea-Comparisons\/compare\/11.0-v4079..11.1-v4098\">Что изменилось в файлах с версии 11.0<\/a>.<\/p>\n",
            "summary": "ебольшой апдейт 11-й версии (сборка v4098)",
            "date_published": "2023-03-27T12:48:51+02:00",
            "date_modified": "2025-11-23T18:41:50+02:00",
            "tags": [
                "релиз",
                "Эгея"
            ],
            "image": "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg",
            "_date_published_rfc2822": "Mon, 27 Mar 2023 12:48:51 +0200",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "5965",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg"
                ]
            }
        },
        {
            "id": "5941",
            "url": "https:\/\/ilyabirman.ru\/meanwhile\/all\/aegea-11\/",
            "title": "Эгея 11.0",
            "content_html": "<p>Готова Эгея 11.0 (сборка v4079).<\/p>\n<p>Обновились страницы <a href=\"https:\/\/blogengine.ru\/features\/\" class=\"nu\">«<u>Фичи<\/u>»<\/a> и <a href=\"https:\/\/blogengine.ru\/get\/\" class=\"nu\">«<u>Стать пользователем<\/u>»<\/a>.<\/p>\n<p>Эта заметка подытоживает предыдущие анонсы: <a href=\"https:\/\/ilyabirman.ru\/meanwhile\/all\/aegea-2-11-alpha\/\">альфа<\/a>, <a href=\"https:\/\/ilyabirman.ru\/meanwhile\/all\/aegea-2-11-alpha-2\/\">альфа 2<\/a>, <a href=\"https:\/\/ilyabirman.ru\/meanwhile\/all\/aegea-11-beta\/\">бета<\/a>. В конце — про новые цены.<\/p>\n<p><a href=\"https:\/\/ilyabirman.ru\/meanwhile\/all\/aegea-2-10\/\">В прошлой версии 2.10 появились рекомендации и перебивки<\/a> — крутейшие инструменты, благодаря которым читатели могут находить хорошие заметки в вашем блоге независимо от того, когда они были написаны. А что нового в 11.0?<\/p>\n<h2>Главное меню<\/h2>\n<p>Главное меню — очередной важный шаг для улучшения навигации. Это снова для тех, для кого блог — инструмент, а не просто игрушка. У меня-то на сайте давно есть навигация по темам блога — важные теги вынесены наверх. Но у меня это было сделано вручную. Вы такое тоже могли заверстать в своей теме оформления.<\/p>\n<p>А теперь ничего и верстать не надо — Главное меню есть в Эгее «из коробки»:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-main-menu@2x.png\" width=\"940\" height=\"336\" alt=\"\" \/>\n<\/div>\n<p>Если самая верхняя заметка не заинтересовала читателя, теперь видна альтернатива, а значит меньше шансов, что читатель уйдёт. Меню помогает понять, что интересного в блоге, и подталкивает к тому, чтобы проявить ещё большее любопытство.<\/p>\n<p>В этом примере в начале меню стоит Избранное, а потом — любимые теги автора. Можно походить по тегам и посмотреть, какие есть заметки по разным темам:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-main-menu-interface@2x.png\" width=\"940\" height=\"400\" alt=\"\" \/>\n<\/div>\n<p>Смотрите, какое чистенькое и аккуратненькое меню! Но при этом умное и функциональное.<\/p>\n<p>Понятно, что когда ты ткнул в тег в меню, ты попадаешь на его страницу, и в меню этот пункт подсвечивается. Но даже если просто читать какую-то заметку, тег которой закреплён в меню, будет видно, что ты как бы в этом разделе. Да, если таких тегов несколько, подсвечиваются они все:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-double-tagged@2x.png\" width=\"940\" height=\"224\" alt=\"\" \/>\n<\/div>\n<p>При этом и на них можно ткнуть и перейти на общую страницу тега. Это всё тоже подталкивает к тому, чтобы походить по блогу и почитать ещё заметки.<\/p>\n<p>Меню включается в Настройке, вот так:<\/p>\n<div class=\"e2-text-video\">\n<video src=\"https:\/\/ilyabirman.ru\/meanwhile\/video\/aegea-2-11-main-menu-setup@loop@2x.mp4#t=0.001\" width=\"940\" height=\"376\" autoplay muted loop playsinline alt=\"\" \/>\n\n<\/div>\n<p>Как видите, гибкость довольно большая: в меню можно добавить разные системные страницы. Наконец-то до Избранного, Обсуждаемого, Популярного будет легко добраться. Страница с полным списком тегов раньше пряталась за иконкой внутри поля поиска, а теперь её тоже можно показать в меню.<\/p>\n<p>Если включить вообще всё и добавить кучу тегов, меню может получиться длинным:<\/p>\n<div class=\"e2-text-video\">\n<video src=\"https:\/\/ilyabirman.ru\/meanwhile\/video\/aegea-2-11-main-menu-full-scrolling@loop@2x.mp4#t=0.001\" width=\"940\" height=\"61\" autoplay muted loop playsinline alt=\"\" \/>\n\n<\/div>\n<p>Предполагаю, что «вообще всё» мало кому понадобится, но это дело автора. Вам не нужно думать, влезет ли меню у читателей с узким экраном. Не влезет — будет красиво прокручиваться прямо в своей строке.<\/p>\n<p>Более того, если открыть страницу, которая есть в меню, меню обязательно сразу же откроется прокрученным так, чтобы выбранный пункт было видно (за такие вещи вы и любите Эгею):<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-main-menu-full-scrolled@2x.png\" width=\"940\" height=\"204\" alt=\"\" \/>\n<\/div>\n<p>Чтобы тег попал в меню, его нужно «закрепить» вот этой кнопкой:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-pin-tag@2x.png\" width=\"940\" height=\"600\" alt=\"\" \/>\n<\/div>\n<p>Заходите на страницу любого тега через список под заметкой, через связанные теги или через поиск, и жмёте там. Надоел тег в меню — заходите в него и жмёте ещё раз. Эта кнопка показывается, только если есть само меню.<\/p>\n<p>Автор блога расставляет пункты меню в любом порядке простым перетаскиванием:<\/p>\n<div class=\"e2-text-video\">\n<video src=\"https:\/\/ilyabirman.ru\/meanwhile\/video\/aegea-2-11-main-menu-reorder@loop@2x.mp4#t=0.001\" width=\"940\" height=\"61\" autoplay muted loop playsinline alt=\"\" \/>\n\n<\/div>\n<p>Главное меню и закреплённые теги будут доступны только в платной версии. Пользователи лайт-версии увидят такое:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-main-menu-is-paid@2x.png\" width=\"940\" height=\"148\" alt=\"\" \/>\n<\/div>\n<p>Если вы пользовались закреплёнными тегами раньше в бесплатной версии, расскажите мне, как именно. Но вроде никому до них не было дела.<\/p>\n<p>Если вы включили Главное меню в Настройке, но не выбрали ни одной специальной страницы, и закреплённых тегов у вас нет, то меню тоже отображаться не будет, потому что там нечему отображаться. Также главное меню не будет показываться, пока в блоге нет заметок. Это общий принцип: Эгея не показывает элементы управления, которые ведут «вникуда». Например, поиск тоже не отображается, пока заметок нет. И кнопочка черновиков появляется только когда появляются черновики. Но пункты меню всё-таки будут показываться все, которые вы выбрали, даже если их страницы пустые. Иначе будет ощущение неуправляемости: включаешь «Обсуждаемое», а оно не показывается фиг пойми почему.<\/p>\n<h2>Немодальный поиск<\/h2>\n<p>Поиск стал немодальным! То есть не нужно сначала тыкать в поле поиска, а потом начинать писать запрос. Любой ввод на странице сразу интерпретируется как поиск. Просто жмёшь букву «щ», и она сразу оказывается в поле поиска.<\/p>\n<p>Я это изобрёл когда-то для торгового терминала «Маркетс», который мы делали в бюро. Потом у нас так стал работать поиск во всех бюрошных книгах. Так должно работать всё. Это чувство лёгкости ни с чем не сравнить.<\/p>\n<p>Как вы могли заметить, когда есть меню, поиск показывается прямо в нём, и всё вместе выглядит очень опрятно:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-main-menu-search@2x.png\" width=\"940\" height=\"61\" alt=\"\" \/>\n<\/div>\n<p>Если меню нет (выключено или лайт-версия), поиск остаётся в уголке, как раньше, но немодальность работает в любом случае.<\/p>\n<p>Есть ещё одна мелкая приятность, связанная с поиском. Бывает, начинаешь писать заметку, а надо поискать что-то в предыдущих заметках. Раньше приходилось открывать ещё одну вкладку, и там уже искать, чтобы не «перебить» редактор заметки результатами поиска.<\/p>\n<p>Теперь можно искать прямо в редакторе. Эгея автоматически открывает результаты поиска в новом окне, если вы пытаетесь искать из редактора или любой другой формы. Чтобы вы были уверены, что Эгея всё понимает правильно, она даже показывает иконку, что результаты откроются в новом окне:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-main-menu-search-new-window@2x.png\" width=\"940\" height=\"248\" alt=\"\" \/>\n<\/div>\n<p>Заботушка.<\/p>\n<h2>Навигация по календарю<\/h2>\n<p>Один из возможных пунктов Главного меню — «Календарь». Он открывает доступ к навигации по датам:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-calendar@2x.png\" width=\"940\" height=\"732\" alt=\"\" \/>\n<\/div>\n<p>На этом примере мы перешли в «Календарь» — открылся день, когда была написана последняя заметка (на момент снятия скриншота). Видны заметки за день, можно перейти к другому дню, а также вверх к любому месяцу или году. Видно, если в какие-то даты не было заметок. А снизу есть навигация влево-вправо по соседним датам. Она же работает по альт-стрелкам аналогично тому, как можно альт-стрелками ходить по заметкам.<\/p>\n<p>Как ни странно, в каком-то виде это всё было и в предыдущих версиях. Давным-давно в Эгее заметки получали адреса вида \/год\/месяц\/день\/номер\/. Соответственно, до любой части адрес можно было стереть, и открывался список заметок за соответствующий день, месяц или год. Когда Эгея перешла на текстовые адреса заметок, мало кто мог догадаться сходить по урлу типа \/2019\/05\/. А теперь такое можно просто натыкать.<\/p>\n<p>Вот страница 2018-го года, например:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-calendar-free@2x.png\" width=\"940\" height=\"574\" alt=\"\" \/>\n<\/div>\n<p>Альт-стрелками тут можно листать годы. Строчки календаря сделаны из того же компонента, что и Главное меню, поэтому умеют прокручиваться, если в них всё не влезает. Я веду блог с 2002 года, поэтому годы у меня не влезают никуда.<\/p>\n<p>Как видите, календарь работает и без Главного меню (если выключено или лайт-версия). Но придётся догадаться, как туда зайти.<\/p>\n<h2>Скрытые теги<\/h2>\n<p>Теперь теги можно делать скрытыми, как последний тут:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-hidden-tag@2x.png\" width=\"940\" height=\"125\" alt=\"\" \/>\n<\/div>\n<p>Скрытые теги видны только автору, но учитываются при формировании рекомендаций. Вы можете щедро разметить заметки тегами для повышения качества рекомендаций, но при этом не заваливать ими читателей.<\/p>\n<p>Ещё иногда сомневаешься, дать ли тег заметке: будут ли ещё заметки с таким тегом или эта останется единственной и тег просто болтаться будет мусором? Теперь можно просто дать скрытый тег, а потом, если дозреет, открыть для всех.<\/p>\n<p>Чтобы тег стал скрытым, нужно его назвать с точкой в начале:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-hidden-tag-add@2x.png\" width=\"940\" height=\"125\" alt=\"\" \/>\n<\/div>\n<p>Почему такой «программистский» интерфейс, а не красивый тумблер как-нибудь? А потому так намного удобнее писать в строчку — ничего настраивать не надо! При этом точка не является частью названия, это именно интерфейс скрытия такой. Нельзя, например, добавить два тега, отличающихся только точкой в начале.<\/p>\n<p>Если потом тег захочется открыть, можно зайти в его карандашик и убрать эту точку:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-hidden-tag-edit@2x.png\" width=\"940\" height=\"205\" alt=\"\" \/>\n<\/div>\n<p>Точно так же можно добавить точку уже существующим тегам, и они скроются.<\/p>\n<p>Скрытые теги невозможно закрепить в Главном меню. Ленты заметок по скрытому тегу видны тоже только автору (остальным видна страница 404):<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-hidden-tag-page@2x.png\" width=\"940\" height=\"94\" alt=\"\" \/>\n<\/div>\n<h2>Безопасность<\/h2>\n<p>В Эгее появился фоновый мониторинг беззащитности. Подробно писал о нём, <a href=\"https:\/\/ilyabirman.ru\/meanwhile\/all\/aegea-2-11-alpha\/\">когда рассказывал про альфа-версию<\/a>.<\/p>\n<p>Ещё одно улучшение — в настройке параметров доступа к базе данных раньше был виден пароль от базы, а теперь нет:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-db-password-hidden@2x.png\" width=\"940\" height=\"390\" alt=\"\" \/>\n<\/div>\n<p>Конечно, сам этот экран доступен только автору. Но вдруг злоумышенник подошёл к компьютеру автора, пока тот отошёл, и сфоткал себе пароль от базы? А ведь в базе кроме Эгеи может быть и что-то ещё. Короче, так надёжнее.<\/p>\n<p>И ещё. В недавнем апдейте Эгеи 2.10 были устранены несколько уязвимостей. В 11.0 сделаны несколько внутренних изменений, которые сделают подобные уязвимости менее вероятными в будущем.<\/p>\n<h2>Остальное<\/h2>\n<p>Есть ещё куча мелочей, которые не удостоились своего раздела с заголовком. Про эти вы могли уже догадаться, глядя на скриншоты выше. Например, что Эгея-лайт контекстно показывает, что можно было бы сделать в платной.<\/p>\n<p>Появилась фича «Случайная заметка», о которой давно просили. Работает, только если заметок хотя бы 10. Если есть избранные заметки, выбирать случайную будет из них. Это было просто сделать, но я не понимал, куда это поставить, а теперь для этого как раз есть Главное меню.<\/p>\n<p>Новая тема оформления — Галь (голубенькая, это она на скриншотах выше). Поддерживает тёмный режим. Дизайн чекбоксов также осовременился.<\/p>\n<p>Кстати, благодаря прокручиваемому дизайну Главного меню, на мобиле оно работает как родное:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-mobile-sparse@2x.png\" width=\"375\" height=\"403\" alt=\"\" \/>\n<\/div>\n<p>Но обратите внимание, что отступ между пунктами меню чуть больше. Это сделано, чтобы в них было легче попадать пальцем. Зелёные иконки управления тоже «расступаются». Причём на самом деле тут дело не в мобиле, а именно в тач-экране. На 12-дюймовом айпаде тоже будут увеличенные отступы между пунктами меню и иконками управления.<\/p>\n<p>А также:<\/p>\n<ul>\n  <li>добавилась поддержка изображений формата ВебП (если ваша версия ПХП собрана с библиотекой gd, которая его поддерживает);<\/li>\n  <li>по аналогии с тем, как @2x в имени файла подсказывает Эгее, что картинка ретиновая, @loop в имени файла видоса теперь подсказывает, что видос надо предзагрузить и играть по кругу без контролов (так вставлены видосы в этом посте);<\/li>\n  <li>в заметках теперь хорошо выглядят два уровня подзаголовков;<\/li>\n  <li>добавился итальянский язык интерфейса (автор — Роберт Блинов);<\/li>\n  <li>если оплаченный срок платной версии позади, показывается красная точечка в Настройке;<\/li>\n  <li>раньше при апгрейде до платной версии не сбрасывались кеши, потому что архитектурно Эгея не считала включение платности «обновлением», поэтому какие-то платные фичи могли проявиться не сразу, а теперь Эгея видит, что произошла подмена и сбрасывается кеш автоматически;<\/li>\n  <li>заодно изменения в config.php теперь тоже приводит к автоматическому сбросу кеша (разумеется, если вы просто что-то меняете в Настройке, то о кешах вам и раньше не нужно было заботиться);<\/li>\n  <li>до Эгеи 11.0 нельзя обновиться с Эгеи 2.6 или более старой (сначала обновитесь до 2.10, а уже потом до 11.0);<\/li>\n  <li>сообщение об успешном обновлении теперь чуток человечнее (кроме номеров билдов теперь есть номера версий);<\/li>\n  <li>Эгея больше не даёт поисковикам инструкций о том, что индексировать, а что нет — пусть сами разбираются;<\/li>\n  <li>все ссылки в комментариях теперь получают атрибут nofollow;<\/li>\n  <li>user\/.htaccess теперь отдаёт файлы с расширениями svg, woff, woff2, eot, ttf, otf, так что вы можете подключать свои шрифты без дополнительной настройки;<\/li>\n  <li>теперь можно через конфиг настроить, через какие соцсети давать входить (sing_in_with), и если убрать оттуда какие-нибудь соцсети, через которые у вас оставляли комментарии к старым заметкам, то те заметки не ломаются;<\/li>\n  <li>джейсон-фид теперь <a href=\"https:\/\/www.jsonfeed.org\/2020\/08\/07\/json-feed-version.html\">версии 1.1<\/a>;<\/li>\n  <li>в джейсон-фиде теперь отдаются теги заметки, а <a href=\"https:\/\/blogengine.ru\/blogs\/\" class=\"nu\">«<u>Блоги<\/u>»<\/a> умеют их принимать;<\/li>\n  <li>в списках сниппетов заметок для автора блога больше не показываются по две звёздочки избранности, одна из которых — элемент управления;<\/li>\n  <li>дефолтный часовой пояс (\/settings\/timezone\/) теперь обновляется при редактировании и публикации заметок;<\/li>\n  <li>обновление теперь работает «прозрачно», то есть открывается именно та страница, которую вы запросили без редиректа на главную;<\/li>\n  <li>обновились лайкли.<\/li>\n<\/ul>\n<h2>Технические дела<\/h2>\n<p>Эгея теперь поддерживает ПХП 8. Минимальные требования — ПХП 5.6, Майэскуэль 5.6 или МарияДБ 10.1.<\/p>\n<p>Системные и пользовательские темы разделились. Папки \/themes\/ в корне больше нет, теперь есть \/system\/themes\/ и \/user\/themes\/. Если у вас были свои темы, перенесите их в \/user\/themes\/.<\/p>\n<p>Если у вас платная Эгея и вы использовали subscribe-sheet, то теперь вместо него — follow-sheet. Внесите в него нужные вам изменения.<\/p>\n<p>Теперь заморочка для тех, у кого Эгея больше 9 лет. Перечитайте заметку <a href=\"https:\/\/ilyabirman.ru\/meanwhile\/all\/aegea-v3849\/\">об окончательном избавлении от Каллиопе в следующей версии<\/a>. Начиная с Эгеи 11.0 Каллиопе не поддерживается ни в каком виде. Страницы \/settings\/calliope\/ в 11.0 тоже нет. Если вы ещё не прошли через неё, рекомендую сначала поставить 2.10, и разгрести заметки оттуда. Прочитайте там.<\/p>\n<p>Про улучшения в поддержке нескольких блогов на одном сервере, видимо, надо будет писать отдельно.<\/p>\n<h2>Благодарности<\/h2>\n<p>Самая большая благодарность в этот раз — Нине Папчене. Нина сверстала меню со всем его волшебным и прекрасным поведением.<\/p>\n<p>Также спасибо Арсению Шароглазову за помощь с безопасностью.<\/p>\n<h2>Новые тарифы<\/h2>\n<p>Как и обещал, цена годовой лицензии вырастает с сегодняшнего дня.<\/p>\n<p>Теперь есть два тарифа: на полгода за 2699 ₽ (~449 ₽ в месяц) и на год за 3999 ₽ (~333 ₽ в месяц). Также цена больше не зависит от того, ставите ли вы Эгею себе сами или пользуетесь нашим сервисом.<\/p>\n<p>Раньше я относился к бесплатной версии как к основной, и считал, что «а ещё есть платная версия». Теперь основной, полной версией я считаю как раз платную. Бесплатная теперь будет называться «лайт».<\/p>\n<p>Все варианты показаны на странице <a href=\"https:\/\/blogengine.ru\/get\/\" class=\"nu\">«<u>Стать пользователем<\/u>»<\/a>.<\/p>\n<p>Если вы уже хоть раз платили за любую Эгею, для вас <a href=\"https:\/\/blogengine.ru\/get\/special\/\">действуют специальные условия до конца марта<\/a>. Даже если у вас уже и так оплачено с запасом, вы можете продлить сервис на год за 1900 ₽ или обычную лицензию на любое количество лет за 3000 ₽ в год. С апреля для вас будут действовать общие тарифы.<\/p>\n<p>Если вы ставили платную альфу или бету и воспользовались заморозкой времени, то с сегодняшнего дня время обратно размораживается.<\/p>\n<h2>Как обновиться<\/h2>\n<p>Если Эгея у вас оплачена, напишите мне, и я дам вам полную версию 11.0 с меню и другими платными фичами.<\/p>\n<p>Если вы пользуетесь сервисом, подождите, пока мы обновим его.<\/p>\n<p>Свежий дистрибутив лайт-версии — в конце страницы <a href=\"https:\/\/blogengine.ru\/get\/\" class=\"nu\">«<u>Стать пользователем<\/u>»<\/a>.<\/p>\n<p>Замените папку \/system\/ новой.<\/p>\n<p>Если у вас были свои темы, перенесите их в \/user\/themes\/. Теперь можно смотреть изменения <a href=\"https:\/\/github.com\/ilyabirman\/Aegea-Comparisons\/compare\/11.0b-v4065..11.0-v4079\">с беты<\/a> и  <a href=\"https:\/\/github.com\/ilyabirman\/Aegea-Comparisons\/compare\/2.10-v3877..11.0-v4079\">с 2.10<\/a>.<\/p>\n<p>О предыдущей версии: <a href=\"http:\/\/ilyabirman.ru\/meanwhile\/all\/aegea-2-10\/\">2.10<\/a>.<\/p>\n",
            "summary": "Готова Эгея 11.0 (сборка v4079)",
            "date_published": "2023-01-24T13:35:26+02:00",
            "date_modified": "2023-01-25T12:17:35+02:00",
            "tags": [
                "Эгея"
            ],
            "image": "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-main-menu@2x.png",
            "_date_published_rfc2822": "Tue, 24 Jan 2023 13:35:26 +0200",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "5941",
            "_rss_enclosures": [
                {
                    "url": "https:\/\/ilyabirman.ru\/meanwhile\/video\/aegea-2-11-main-menu-setup@loop@2x.mp4",
                    "type": "video\/mp4",
                    "length": 104298
                },
                {
                    "url": "https:\/\/ilyabirman.ru\/meanwhile\/video\/aegea-2-11-main-menu-full-scrolling@loop@2x.mp4",
                    "type": "video\/mp4",
                    "length": 117096
                },
                {
                    "url": "https:\/\/ilyabirman.ru\/meanwhile\/video\/aegea-2-11-main-menu-reorder@loop@2x.mp4",
                    "type": "video\/mp4",
                    "length": 242288
                }
            ],
            "_e2_data": {
                "is_favourite": true,
                "links_required": [],
                "og_images": [
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-main-menu@2x.png",
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-main-menu-interface@2x.png",
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-double-tagged@2x.png",
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-main-menu-full-scrolled@2x.png",
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-pin-tag@2x.png",
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-main-menu-is-paid@2x.png",
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-main-menu-search@2x.png",
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-main-menu-search-new-window@2x.png",
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-calendar@2x.png",
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-calendar-free@2x.png",
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-hidden-tag@2x.png",
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-hidden-tag-add@2x.png",
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-hidden-tag-edit@2x.png",
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-hidden-tag-page@2x.png",
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-db-password-hidden@2x.png",
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-2-11-mobile-sparse@2x.png",
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg"
                ]
            }
        },
        {
            "id": "5930",
            "url": "https:\/\/ilyabirman.ru\/meanwhile\/all\/aegea-comparisons\/",
            "title": "Сравнивалка для Эгей",
            "content_html": "<p>Это пост для тех, кто сильно кастомизирует Эгею.<\/p>\n<p>Обновления даются вам нелегко. Например, вы сделали свою тему оформления, а в новой версии какая-то фича требует другой вёрстки — довольно тяжело найти, что же именно поменять, чтобы фича появилась. Ещё хуже, если из своей темы запрашиваете какой-то стандартный для прошлой версии элемент, которого в новой версии вообще нет — тогда ваша тема вообще перестаёт работать, и хрен разберёшься, как починить.<\/p>\n<p>Я сделал <a href=\"https:\/\/github.com\/ilyabirman\/Aegea-Comparisons\/compare\/2.10-v3877..11.0b-v4065\">сравнивалку для Эгей на основе Гитхаба<\/a>. Например, вы делали свою версию файла note.tmpl.php. Тогда находите его в сравнивалке и видите:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-compare-example.jpg\" width=\"1792\" height=\"1300\" alt=\"\" \/>\n<\/div>\n<p>Видите, что изменилась вёрстка переключалки избранности. И забираете изменение себе аккуратно. Потом скролите ниже, а там ещё изменения есть, и тоже их себе внедряете. Ну или не внедряете, если они вам не нужны.<\/p>\n<p>Сверху там можно выбрать, какую версию с какой сравнивать:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-compare-select.jpg\" width=\"1792\" height=\"692\" alt=\"\" \/>\n<\/div>\n<p>Нет, Эгея не стала опенсорсом: там нет большей части кода, которая собирается в core.php. Это только инструмент для кастомизаторов.<\/p>\n<p>Это лучше, чем ничего, но если вы знаете, как сделать ещё лучше, расскажите. Когда в Гитхабе делают пул-реквест, он вроде бы даёт более удобное сравнение, когда можно файлы по отдельности просматривать, а не такой простынёй неповоротливой. Как бы такое реализовать?<\/p>\n",
            "summary": "Это пост для тех, кто сильно кастомизирует Эгею",
            "date_published": "2023-01-01T15:22:01+02:00",
            "date_modified": "2023-01-01T15:21:55+02:00",
            "tags": [
                "Эгея"
            ],
            "image": "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-compare-example.jpg",
            "_date_published_rfc2822": "Sun, 01 Jan 2023 15:22:01 +0200",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "5930",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-compare-example.jpg",
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-compare-select.jpg",
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg"
                ]
            }
        },
        {
            "id": "5929",
            "url": "https:\/\/ilyabirman.ru\/meanwhile\/all\/aegea-11-beta\/",
            "title": "Эгея 11.0 бета",
            "content_html": "<p>Готова бета Эгеи 11.0. Об альфе <a href=\"https:\/\/ilyabirman.ru\/meanwhile\/all\/aegea-2-11-alpha\/\">я писал ранее<\/a>, тогда она называлась 2.11. Пришло время избавиться от двойки в начале, потому что никогда бы это не превратилось в 3.0.<\/p>\n<p>Это заметка для того, чтобы ещё раз призвать вас потестировать.<\/p>\n<p>Что изменилось со второй альфы:<\/p>\n<ul>\n  <li>починился вход через соцсети;<\/li>\n  <li>теперь можно через конфиг настроить, через какие соцсети давать входить (sing_in_with), и если убрать оттуда какие-нибудь соцсети, через которые у вас оставляли комментарии к старым заметкам, то те заметки не ломаются;<\/li>\n  <li>джейсон-фид теперь <a href=\"https:\/\/www.jsonfeed.org\/2020\/08\/07\/json-feed-version.html\">версии 1.1<\/a>;<\/li>\n  <li>в джейсон-фиде теперь отдаются теги заметки, а <a href=\"https:\/\/blogengine.ru\/blogs\/\" class=\"nu\">«<u>Блоги<\/u>»<\/a> умеют их принимать — посмотрим, какие это нам даст организационные возможности в будущем;<\/li>\n  <li>добавился итальянский язык интерфейса (автор — Роберт Блинов);<\/li>\n  <li>в списках сниппетов заметок для автора блога больше не показываются по две звёздочки избранности, одна из которых — элемент управления;<\/li>\n  <li>если при обновлении не удалось сделать бекап, теперь выводится более специфичное сообщение об ошибке;<\/li>\n  <li>дефолтный часовой пояс (\/settings\/timezone\/) теперь обновляется при редактировании и публикации заметок;<\/li>\n  <li>обновились лайкли.<\/li>\n<\/ul>\n<p>Какие ещё баги исправлены:<\/p>\n<ul>\n  <li>загруженные в редактор новой заметки файлы не теряются при перезагрузке страницы;<\/li>\n  <li>в предпросмотре тем;<\/li>\n  <li>в сортировке пунктов главного меню;<\/li>\n  <li>календарь вёл на 404-ю страницу при наличии запланированных на будущее заметок;<\/li>\n  <li>опечатки в локализациях;<\/li>\n  <li>заметка в редких случаях могла попадаться в собственных рекомендациях того, что читать дальше.<\/li>\n<\/ul>\n<p>Если вам интересно поэкспериментировать, то скачайте, пожалуйста, свежую сборку <s>v4065b<\/s> <a href=\"https:\/\/ilyabirman.ru\/meanwhile\/all\/aegea-11\/\">релиз<\/a>, поставьте себе, и попробуйте с ней пожить. Не забывайте, что нет вообще никакой поддержки и даже на несложные вопросы вроде «а в каком файле ты хранишь то-то» я могу отвечать долго. Если в вашем блоге есть хоть что-то ценное, сделайте максимальный бекап. В моём блоге сейчас, конечно же, крутится именно v4065b. Чтобы обновиться, замените папку \/system\/.<\/p>\n<p>Если вам нужен платный дистрибутив, напишите мне.<\/p>\n",
            "summary": "Готова бета Эгеи 11.0. Об альфе я писал ранее, тогда она называлась 2.11. Пришло время избавиться от двойки в начале, потому что никогда бы это не превратилось в 3",
            "date_published": "2022-12-31T13:21:56+02:00",
            "date_modified": "2023-01-24T13:35:59+02:00",
            "tags": [
                "Эгея"
            ],
            "image": "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg",
            "_date_published_rfc2822": "Sat, 31 Dec 2022 13:21:56 +0200",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "5929",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg"
                ]
            }
        },
        {
            "id": "5925",
            "url": "https:\/\/ilyabirman.ru\/meanwhile\/all\/aegea-2-11-alpha-2\/",
            "title": "Эгея 2.11 альфа 2",
            "content_html": "<p>Готова новая сборка Эгеи 2.11 альфа, <a href=\"https:\/\/ilyabirman.ru\/meanwhile\/all\/aegea-2-11-alpha\/\">о которой я писал ранее<\/a>. Скачивая альфа-версию, вы рискуете всем.<\/p>\n<p>Это заметка для того, чтобы ещё раз призвать вас потестировать.<\/p>\n<p>Что изменилось с первой альфы:<\/p>\n<ul>\n  <li>улучшена работа на ПХП 8, в том числе ПХП 8.2;<\/li>\n  <li>улучшена проверка номера версии МарияДБ (она там такую чушь иногда возвращает, оказывается);<\/li>\n  <li>починена работа со включенным sql_mode=only_full_group_by;<\/li>\n  <li>мониторинг беззащитности мог зацикливаться на некоторых конфигурациях, вроде теперь не должен;<\/li>\n  <li>корневой .htaccess теперь закрывает доступ ко вложенным .htaccess — мониторинг беззащитности  показал, что на некоторых хостингах это не настроено по умолчанию!<\/li>\n  <li>user\/.htaccess теперь отдаёт файлы с расширениями svg, woff, woff2, eot, ttf, otf, так что вы можете подключать свои шрифты без дополнительной настройки;<\/li>\n  <li>в джейсон-фиде в качестве обложки заметки не отдавалась картинка, загруженная как обложка используемого в заметке тега;<\/li>\n  <li>новая иконка того, что результаты поиска откроются в новом окне;<\/li>\n  <li>новая иконка ВК;<\/li>\n  <li>ещё всякие мелочи.<\/li>\n<\/ul>\n<p>Если вам интересно поэкспериментировать, то скачайте, пожалуйста, свежую сборку <s>4045a<\/s> <s>v4065b<\/s> <a href=\"https:\/\/ilyabirman.ru\/meanwhile\/all\/aegea-11\/\">релиз<\/a>, поставьте себе, и попробуйте с ней пожить. Не забывайте, что нет вообще никакой поддержки и даже на несложные вопросы вроде «а в каком файле ты хранишь то-то» я могу отвечать долго. Если в вашем блоге есть хоть что-то ценное, сделайте максимальный бекап. В моём блоге сейчас, конечно же, крутится именно v4045a. Чтобы обновиться, замените \/system\/, корневой .htaccess, user\/.htaccess.<\/p>\n<p>Если вам нужен платный дистрибутив, напишите мне.<\/p>\n<p>См. также: <a href=\"https:\/\/ilyabirman.ru\/meanwhile\/all\/aegea-11-beta\/\">Бета<\/a><\/p>\n",
            "summary": "Готова новая сборка Эгеи 2.11 альфа, о которой я писал ранее. Скачивая альфа-версию, вы рискуете всем",
            "date_published": "2022-12-13T18:30:49+02:00",
            "date_modified": "2023-01-24T13:36:21+02:00",
            "tags": [
                "Эгея"
            ],
            "image": "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg",
            "_date_published_rfc2822": "Tue, 13 Dec 2022 18:30:49 +0200",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "5925",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/ilyabirman.ru\/meanwhile\/pictures\/aegea-og-image.jpg"
                ]
            }
        }
    ],
    "_e2_version": 4259,
    "_e2_ua_string": "Aegea 12.0a (v4259e)"
}