{
    "version": "https:\/\/jsonfeed.org\/version\/1",
    "title": "Блог ни о чём, заметки с тегом: HTML",
    "home_page_url": "https:\/\/gladilov.org.ru\/blog\/tags\/html\/",
    "feed_url": "https:\/\/gladilov.org.ru\/blog\/tags\/html\/json\/",
    "icon": false,
    "author": {
        "name": "Павел Гладилов",
        "url": "https:\/\/gladilov.org.ru\/blog\/",
        "avatar": false
    },
    "items": [
        {
            "id": "2444",
            "url": "https:\/\/gladilov.org.ru\/blog\/all\/file-for-aegea-vol-4\/",
            "title": "Напильник для Эгеи, часть 4",
            "content_html": "<p><img src=\"\/blog\/pictures\/file-aegea\/aegea-file.jpg\" align=\"left\" \/>      Четвёртая часть о «доводке напильником» Эгеи.<\/p>\n<p>      <strong>Август 2022 года:<\/strong><br \/>\nПозавчера (02.08.2022) вынужден был переместить сайт (и блог) на домашний сервер. После переезда в тегах блога стали отображаться сообщения об ошибках: <b class=\"spoiler-controller pop-up_camper_04_08_22-aegea-error\">Показать<\/b><section class=\"spoiler pop-up_camper_04_08_22-aegea-error\"><\/p>\n<p><\/p>\n<p><a class=\"lightbox2\" data-lightbox=\"04_08_22-aegea\" href=\"\/blog\/pictures\/file-aegea\/error.jpg\"><img src=\"\/blog\/pictures\/file-aegea\/error-preview.jpg\" style=\"vertical-align:middle;\" \/><\/a><\/section><\/p>\n<p>Лёгкий гугляж завёл меня на страницу Александра Токарева <a href=\"https:\/\/alexandertokarev.ru\/all\/aegea-core-php-line-2\/\">Эгея и красные банеры \/core.php, line 2<\/a>, но предлагаемый способ лечения (понизить версию PHP) оказался для меня неприемлемым. Решено было бороться радикальными методами — править код.<\/p>\n<p><a class=\"lightbox2\" data-lightbox=\"04_08_22-aegea\" href=\"\/blog\/pictures\/file-aegea\/mcedit.png\"><img src=\"\/blog\/pictures\/file-aegea\/mcedit-preview.png\" style=\"vertical-align:middle;\" \/><\/a><\/p>\n<p>В файле <b>system\/core.php<\/b> ищу переменную, вызвавшую сообщение об ошибке (<b>k<\/b>). Для этого в редакторе mc ищу символ <b>k<\/b> как слово целиком (whole word). Комментирую второе вхождение работы с этой переменной. После обновления страницы ошибка исчезла.<\/p>\n<p>P. S. Эмпирический список пакетов, необходимых к установке для работы <img src=\"\/img\/sites\/\/blog.png\" style=\"vertical-align:middle;width:20px;height:20px;\" \/> блога, <img src=\"\/img\/sites\/\/reader.png\" style=\"vertical-align:middle;width:20px;height:20px;\" \/> RSS-ридера и <img src=\"\/\/\/cloud.gladilov.org.ru\/core\/img\/favicon.ico\" style=\"vertical-align:middle;width:20px;height:20px;\" \/> облака:<br \/>\n<b>php-mbstring php-mysql php-gd php-curl php-cli libapache2-mod-php php-xml php-zip php-intl<\/b><\/p>\n<p>P. P. S. Версия Эгеи — релиз 2.7, версия 3249.<\/p>\n",
            "date_published": "2022-08-04T00:41:30+03:00",
            "date_modified": "2022-08-04T17:49:00+03:00",
            "_date_published_rfc2822": "Thu, 04 Aug 2022 00:41:30 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "2444",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        },
        {
            "id": "287",
            "url": "https:\/\/gladilov.org.ru\/blog\/all\/file-for-aegea-vol-3\/",
            "title": "Напильник для Эгеи, часть 3",
            "content_html": "<p><img src=\"\/blog\/pictures\/file-aegea\/aegea-file.jpg\" align=\"left\" \/>      Небольшой отчёт о проделаной работе с Эгеей.<\/p>\n<p>      <strong>Март 2018 года:<\/strong><br \/>\nПришла пора <a href=\"\/blog\/tags\/my-reading\/\"><img src=\"\/img\/sites\/me\/books.png\" style=\"vertical-align:middle;width:20px;height:20px;\" \/> книжного раздела<\/a>. Добавил ко всем заметкам о прочтённых книгах тэг «Моё чтиво», так как тэг «Книги» использую, в том числе, для статей об известных авторах или их произведениях. Все обложки прочтённых книг перенёс к себе на сервер (раньше тэги IMG смотрели на картинки на разных сайтах) и причесал их к стандартному размеру 105&times;150 точек. К каждому такому изображению применил класс «bookimg», так описав его в файле <b>user\/extras\/header-pre.tmpl.php<\/b>:<\/p>\n<p><b class=\"spoiler-controller pop-up_camper_06_01_19\">Показать<\/b><\/p>\n<p><section class=\"spoiler pop-up_camper_06_01_19\"><\/p>\n<p><\/p>\n<p><font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>.bookimg {\r\n    width:106px;\r\n    height:150px;\r\n    vertical-align:middle;\r\n    border:1px solid grey;\r\n}<\/code><\/pre><\/pre>\n<p><\/font>Для заголовочных картинок там же описал классы «main_left_img» и «main_right_img»:<font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>.main_left_img {\r\n    float:left;\r\n    margin-right:10px;\r\n}\r\n.main_right_img {\r\n    float:right;\r\n    margin-left:10px;\r\n}<\/code><\/pre><\/pre>\n<p><\/font>      <strong>Май 2018 года:<\/strong><br \/>\nПриделал к блогу <a href=\"https:\/\/www.google.com\/recaptcha\/intro\/v3.html\">реКАПЧУ<\/a> для отсекания сообшений от ботов.<\/p>\n<p>      <strong>Октябрь 2018 года:<\/strong><br \/>\nВ конце октября <a href=\"\/blog\/all\/adding-swap-file-in-debian\/\">настроил в системе своп-файл<\/a> для борьбы с частыми вылетами демона агрегатора новостей. Эксперимент можно считать успешным, так как с тех пор не было ни одного аварийного завершения демона.<br \/>\nСтатистика и динамика в графиках: <b class=\"spoiler-controller pop-up_camper_06_01_19-stats\">Показать<\/b><section class=\"spoiler pop-up_camper_06_01_19-stats\"><font size=\"2\">(данные графиков зафиксированы на 06.01.2019 г.)<\/font><\/p>\n<div class=\"e2-text-table\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n<tr>\n<td style=\"text-align: center\"><b>Размер свопа<\/b><\/td>\n<td style=\"text-align: center\"><\/td>\n<td style=\"text-align: center\"><b>Используемая память<\/b><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><img src=\"\/blog\/pictures\/file-aegea3\/swap.png\" \/><\/td>\n<td style=\"text-align: center\"><\/td>\n<td style=\"text-align: center\"><img src=\"\/blog\/pictures\/file-aegea3\/memory.png\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><b>Выполняемые процессы<\/b><\/td>\n<td style=\"text-align: center\"><\/td>\n<td style=\"text-align: center\"><b>Load average<\/b><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><img src=\"\/blog\/pictures\/file-aegea3\/processes.png\" \/><\/td>\n<td style=\"text-align: center\"><\/td>\n<td style=\"text-align: center\"><img src=\"\/blog\/pictures\/file-aegea3\/la.png\" \/><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><b>Размер базы агрегатора<\/b><\/td>\n<td style=\"text-align: center\"><\/td>\n<td style=\"text-align: center\"><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center\"><img src=\"\/blog\/pictures\/file-aegea3\/dbreader.png\" \/><\/td>\n<td style=\"text-align: center\"><\/td>\n<td style=\"text-align: center\"><\/td>\n<\/tr>\n<\/table>\n<\/div>\n<p><\/section><\/p>\n<p><\/p>\n<p>      <strong>Январь 2019 года:<\/strong><br \/>\nПривинтил к Эгее <a href=\"https:\/\/github.com\/lokesh\/lightbox2\">lightbox2<\/a> для показа скринов разных ОСей. Для этого в файле <b>user\/extras\/header-pre.tmpl.php<\/b> добавил записи:<font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>&lt;link href=&quot;\/lightbox2\/css\/lightbox.css&quot; rel=&quot;stylesheet&quot; type=&quot;text\/css&quot;&gt;\r\n&lt;script src='\/lightbox2\/js\/lightbox-plus-jquery.min.js'&gt;&lt;\/script&gt;<\/code><\/pre><\/pre>\n<p><\/font>а в постах пишу такой код:<font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>&lt;font size=&quot;2&quot;&gt;&lt;a class=&quot;lightbox2&quot; data-lightbox=&quot;&lt;уникальный ID&gt;&quot; href=&quot;\/img\/osdetect\/ОСь.png&quot;&gt;&lt;img src=&quot;\/img\/install\/os\/ось.png&quot; style=&quot;vertical-align:middle;&quot; \/&gt;&amp;nbsp;ОСь&lt;br \/&gt;&lt;img src=&quot;\/img\/osdetect\/preview\/ОСь.png&quot; style=&quot;vertical-align:middle;&quot; \/&gt;&lt;\/a&gt;&lt;\/font&gt;<\/code><\/pre><\/pre>\n<p><\/font>Уникальный ID нужен для исключения создания галереи из нескольких картнок.<\/section><\/p>\n",
            "date_published": "2019-01-06T11:53:07+03:00",
            "date_modified": "2019-01-06T12:03:16+03:00",
            "_date_published_rfc2822": "Sun, 06 Jan 2019 11:53:07 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "287",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "446",
            "url": "https:\/\/gladilov.org.ru\/blog\/all\/file-for-ttrss\/",
            "title": "Напильник для Tiny Tiny RSS",
            "content_html": "<p><img src=\"\/blog\/pictures\/file-ttrss\/ttrss-file.jpg\" class=\"main_left_img\" \/> Как я недавно писал <a href=\"\/blog\/all\/auto-executing-command-in-screen\/\">тут<\/a>, после переезда на VDS’ку на сервере из-за недостатка памяти стала отваливаться сессия screen’а, в которой крутится демон опроса и наполнения БД новостей Tiny Tiny RSS. Для контроля того, что screen-сессия и процесс демона опроса и агрегирования новостей запущены, я написал скриптик на похапе, который опрашивает состояние этих процессов и отображает на WEB-странице. <b class=\"spoiler-controller pop-up_camper_28_07_18\">Показать<\/b><section class=\"spoiler pop-up_camper_28_07_18\"><\/p>\n<p><\/p>\n<p>Возможны 2<sup>2<\/sup> вариантов:<\/p>\n<ol start=\"1\">\n<li>Скрин запущен, демон запущен: <b class=\"spoiler-controller pop-up_camper_28_07_18-onon\">Показать<\/b><section class=\"spoiler pop-up_camper_28_07_18-onon\"><img src=\"\/blog\/pictures\/file-ttrss\/on-on.jpg\" \/><\/section><\/li>\n<\/ol>\n<ol start=\"2\">\n<li>Скрин запущен, демон выпал: <b class=\"spoiler-controller pop-up_camper_28_07_18-offon\">Показать<\/b><section class=\"spoiler pop-up_camper_28_07_18-offon\"><img src=\"\/blog\/pictures\/file-ttrss\/off-on.jpg\" \/><\/section><\/li>\n<\/ol>\n<ol start=\"3\">\n<li>Скрин отвалился, демон вместе с ним: <b class=\"spoiler-controller pop-up_camper_28_07_18-offoff\">Показать<\/b><section class=\"spoiler pop-up_camper_28_07_18-offoff\"><img src=\"\/blog\/pictures\/file-ttrss\/off-off.jpg\" \/><\/section><\/li>\n<\/ol>\n<ol start=\"4\">\n<li>Четвёртый вариант я не привожу, так как демона не в скрине я никогда не запускаю.<\/li>\n<\/ol>\n<p>Однако мне достаточно быстро надоело открывать новую вкладку со страницей статистики каждый раз, когда у меня возникало подозрение о том, что скрин\/демон отвалился. Поэтому я интегрировал индикаторы работы прямо на страницу Tiny Tiny RSS.<\/p>\n<p>Ищу две картинки индикаторов <img src=\"\/blog\/pictures\/file-ttrss\/on.png\" style=\"vertical-align:middle;\" \/> ON и <img src=\"\/blog\/pictures\/file-ttrss\/off.png\" style=\"vertical-align:middle;\" \/> OFF, создаю файл скрипта опроса (допустим, readerstates.php) в том каталоге, где развёрнут TT RSS, с таким содержимым:<br \/>\n<font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>&lt;?php $screen=exec(&quot;ps aux | grep -e 'SCREEN -dmS reade[r]'&quot;);\r\n$daemon=exec(&quot;ps aux | grep -e 'php &lt;путь к скрипту демона&gt;\/update_daemon2.ph[p]'&quot;);\r\n$scrn_t=$dmn_t='не запущен';\r\n$scrn=$dmn='off';if($screen){$scrn='on';$scrn_t='запущен';}\r\nif($daemon){$dmn='on';$dmn_t='запущен';}?&gt;\r\n&lt;img src='\/... путь к картинке ...\/&lt;?php echo$dmn;?&gt;.png' title='Демон &lt;?php echo$dmn_t;?&gt;' \/&gt;\r\n&lt;img src='\/... путь к картинке ...\/&lt;?php echo$scrn;?&gt;.png' title='SCREEN &lt;?php echo$scrn_t;?&gt;' \/&gt;<\/code><\/pre><\/pre>\n<p><\/font>Затем прописываю require в файле <b>index.php<\/b>:<font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>&lt;?php\r\n    foreach (PluginHost::getInstance()-&gt;get_hooks(PluginHost::HOOK_TOOLBAR_BUTTON) as $p) {\r\n        echo $p-&gt;hook_toolbar_button();\r\n    }\r\n    require_once &quot;readerstates.php&quot;;\r\n?&gt;<\/code><\/pre><\/pre>\n<p><\/font>После этого все вышеописанные ситуации выглядят у меня на странице так:<\/p>\n<ol start=\"1\">\n<li>Скрин запущен, демон работает: <b class=\"spoiler-controller pop-up_camper_28_07_18-ronon\">Показать<\/b><section class=\"spoiler pop-up_camper_28_07_18-ronon\"><img src=\"\/blog\/pictures\/file-ttrss\/r-on-on.jpg\" \/><\/section><\/li>\n<\/ol>\n<ol start=\"2\">\n<li>Скрин запущен, демон нет: <b class=\"spoiler-controller pop-up_camper_28_07_18-roffon\">Показать<\/b><section class=\"spoiler pop-up_camper_28_07_18-roffon\"><img src=\"\/blog\/pictures\/file-ttrss\/r-off-on.jpg\" \/><\/section><\/li>\n<\/ol>\n<ol start=\"3\">\n<li>Скрин отвалился, демон тоже: <b class=\"spoiler-controller pop-up_camper_28_07_18-roffoff\">Показать<\/b><section class=\"spoiler pop-up_camper_28_07_18-roffoff\"><img src=\"\/blog\/pictures\/file-ttrss\/r-off-off.jpg\" \/><\/section><\/section><\/li>\n<\/ol>\n",
            "date_published": "2018-07-28T00:24:19+03:00",
            "date_modified": "2018-07-28T00:22:51+03:00",
            "_date_published_rfc2822": "Sat, 28 Jul 2018 00:24:19 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "446",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "240",
            "url": "https:\/\/gladilov.org.ru\/blog\/all\/bounce\/",
            "title": "Упругость",
            "content_html": "<style type=\"text\/css\">\r\nhtml,body{height:100%;padding:0;margin:0}\r\n#lh{display:table;height:100%;overflow:hidden;width:100%}\r\n#lh2{display:table-cell;vertical-align:middle;width:100%}\r\n#lh3{height:150px;width:150px;margin:auto;position:relative}\r\n#lg{display:block;margin:auto;top:0;left:0}\r\n#lg2{position:absolute}\r\n.animated {-webkit-animation-duration: 1s;animation-duration: 1s;-webkit-animation-fill-mode: both;animation-fill-mode: both;-webkit-animation-timing-function: ease-in;animation-timing-function: ease-in;}\r\n@-webkit-keyframes bounceIn {0% {opacity: 0;-webkit-transform: scale(.3);}50% {opacity: 1;-webkit-transform: scale(1.05);}70% {-webkit-transform: scale(.9);}100% {-webkit-transform: scale(1);}}\r\n@keyframes bounceIn {0% {opacity: 0;transform: scale(.3);}50% {opacity: 1;transform: scale(1.05);}70% {transform: scale(.9);}100% {transform: scale(1);}}\r\n.bounceIn {-webkit-animation-name: bounceIn;animation-name: bounceIn;}\r\n<\/style>\n<div id=\"lh\" class=\"animated bounceIn\"><div id=\"lh2\"><div id=\"lh3\"><p><img src=\"\/img\/special\/soul.png\" id=\"lg2\" width=\"150\" height=\"150\" style=\"box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15); -moz-border-radius: 75px; -webkit-border-radius: 75px; -o-border-radius: 75px; border-radius: 75px; vertical-align: bottom;\" \/><\/p>\n<\/div><\/div><\/div><p><br \/><br \/><br \/>Слизал с сайта блога Ильи Бирмана прикольный эффект и выложил у себя на <a href=\"https:\/\/pavel-gladilov.tk\/\">мини-сайте<\/a>. Вот код HTML-страницы:<\/p>\n<p><b class=\"spoiler-controller pop-up_camper_28_02_18\">Показать<\/b><\/p>\n<p><section class=\"spoiler pop-up_camper_28_02_18\"><\/p>\n<p><\/p>\n<p><font size=\"2\"><\/p>\n<pre class=\"s2-text-code\"><pre class=\"e2-text-code\"><code>&lt;!DOCTYPE html&gt;\r\n&lt;html&gt;\r\n  &lt;head&gt;\r\n    &lt;title&gt;Soul&lt;\/title&gt;\r\n    &lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=edge&quot;\/&gt;\r\n    &lt;meta charset=&quot;utf-8&quot;\/&gt;\r\n    &lt;style type=&quot;text\/css&quot;&gt;\r\n        html,body{height:100%;padding:0;margin:0}\r\n        #lh{display:table;height:100%;overflow:hidden;width:100%}\r\n        #lh2{display:table-cell;vertical-align:middle;width:100%}\r\n        #lh3{height:150px;width:150px;margin:auto;position:relative}\r\n        #lg{display:block;margin:auto;top:0;left:0}\r\n        #lg2{position:absolute}\r\n        .animated {-webkit-animation-duration: 1s;animation-duration: 1s;-webkit-animation-fill-mode: both;animation-fill-mode: both;-webkit-animation-timing-function: ease-in;animation-timing-function: ease-in;}\r\n        @-webkit-keyframes bounceIn {\r\n            0% {opacity: 0;-webkit-transform: scale(.3);}\r\n            50% {opacity: 1;-webkit-transform: scale(1.05);}\r\n            70% {-webkit-transform: scale(.9);}\r\n            100% {-webkit-transform: scale(1);}}\r\n        @keyframes bounceIn {\r\n            0% {opacity: 0;transform: scale(.3);}\r\n            50% {opacity: 1;transform: scale(1.05);}\r\n            70% {transform: scale(.9);}\r\n            100% {transform: scale(1);}}\r\n        .bounceIn {-webkit-animation-name: bounceIn;animation-name: bounceIn;}\r\n    &lt;\/style&gt;\r\n  &lt;\/head&gt;\r\n  &lt;body&gt;\r\n  &lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;\r\n    &lt;div id=&quot;lh&quot; class=&quot;animated bounceIn&quot;&gt;&lt;div id=&quot;lh2&quot;&gt;&lt;div id=&quot;lh3&quot;&gt;\r\n      &lt;img src=&quot;\/img\/special\/soul.png&quot; id=&quot;lg2&quot; width=&quot;150&quot; height=&quot;150&quot; style=&quot;box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15); -moz-border-radius: 75px; -webkit-border-radius: 75px; -o-border-radius: 75px; border-radius: 75px; vertical-align: bottom;&quot; \/&gt;\r\n    &lt;\/div&gt;&lt;\/div&gt;&lt;\/div&gt;\r\n  &lt;\/td&gt;&lt;\/tr&gt;&lt;\/tbody&gt;&lt;\/table&gt;\r\n  &lt;\/body&gt;\r\n&lt;\/html&gt;<\/code><\/pre><\/pre>\n<p><\/font><\/section><\/p>\n",
            "date_published": "2018-02-28T15:57:23+03:00",
            "date_modified": "2019-09-17T13:49:37+03:00",
            "_date_published_rfc2822": "Wed, 28 Feb 2018 15:57:23 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "240",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "199",
            "url": "https:\/\/gladilov.org.ru\/blog\/all\/file-for-aegea-vol-2\/",
            "title": "Напильник для Эгеи, часть 2",
            "content_html": "<p><img src=\"\/blog\/pictures\/file-aegea\/aegea-file.jpg\" class=\"main_left_img\" \/>      Устроил для блога ревизию — все длинные статьи спрятал под спойлер, ведь ката в Эгее нет в принципе, разработчик объяснил причину этого в своей <a href=\"https:\/\/ilyabirman.ru\/meanwhile\/all\/no-cut-in-aegea\/\">статье<\/a>.<\/p>\n<p>Реализацию спойлера подсмотрел у других, у себя реализовал следующим образом:<\/p>\n<p><b class=\"spoiler-controller pop-up_camper_00_01_18\">Показать<\/b><\/p>\n<p><section class=\"spoiler pop-up_camper_00_01_18\"><\/p>\n<p><\/p>\n<p>В файле <b>\/user\/extras\/header-pre.tmpl.php<\/b> прописал следующие строки:<font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>&lt;script type=&quot;text\/javascript&quot; src=&quot;\/blog\/user\/extras\/spoiler-hider.js&quot;&gt;&lt;\/script&gt;\r\n&lt;link rel=&quot;stylesheet&quot; href=&quot;\/blog\/user\/extras\/spoiler-hider.css&quot;&gt;<\/code><\/pre><\/pre>\n<p><\/font><br \/>\n<b>spoiler-hider.js<\/b>:<font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>\/\/ Спойлеры для Эгеи\r\n$(function(){\r\n    $('.spoiler-controller').click(function(){\r\n        var aClasses = this.className.split(\/\\s+\/);\r\n        for (var i in aClasses) {\r\n            if (aClasses[i] == 'spoiler-controller' || aClasses[i] == 'spoiler-shown') {\r\n                aClasses.splice(i, 1);\r\n            }\r\n        }\r\n        if ($(this).hasClass('spoiler-shown')) {\r\n            this.innerHTML = this.innerHTML.replace('Скрыть', 'Показать');\r\n            $(this).removeClass('spoiler-shown');\r\n        } else {\r\n            this.innerHTML = this.innerHTML.replace('Показать', 'Скрыть');\r\n            $(this).addClass('spoiler-shown');\r\n        }\r\n        for (i in aClasses) {\r\n            if (!aClasses[i]) continue;\r\n            var jContainer = $('.'+aClasses[i]).not('.spoiler-controller');\r\n            jContainer.slideToggle();\r\n        }\r\n    });\r\n});<\/code><\/pre><\/pre>\n<p><\/font><b>spoiler-hider.css<\/b><font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>.spoiler-controller { border-bottom: 1px dashed black; cursor: pointer; }\r\n.spoiler-controller:hover { color: #b30; border-color: #b30; }\r\n.spoiler { display: none; }<\/code><\/pre><\/pre>\n<p><\/font>Теперь в нужном месте страницы пишу код<font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>&lt;p&gt;&lt;b class=&quot;spoiler-controller pop-up_camper_&lt;уникальный идентификатор&gt;&quot;&gt;Показать&lt;\/b&gt;&lt;\/p&gt;\r\n&lt;section class=&quot;spoiler pop-up_camper_&lt;уникальный идентификатор&gt;&quot;&gt;&lt;p&gt;&lt;\/p&gt;<\/code><\/pre><\/pre>\n<p><\/font>а в конце текста (и спойлера)<font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>&lt;\/section&gt;<\/code><\/pre><\/pre>\n<p><\/font><hr width=\"100%\">Также изменил размер заголовка блога, указав в <b>\/themes\/plain\/styles\/main.css<\/b><font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>.title h1 {...; font-size: 24px ;...}<\/code><\/pre><\/pre>\n<p><\/font><hr width=\"100%\">Изменил подсвечивание кода (по <a href=\"http:\/\/dmitrypodgorniy.com\/blog\/all\/podsvetka-koda-v-egee-s-pomoschyu-highlight-js\/\">этой статье<\/a>) с помощью <b><a href=\"https:\/\/highlightjs.org\/\">highlight.js<\/a><\/b>:<font size=\"2\"><\/p>\n<pre><pre class=\"e2-text-code\"><code>&lt;link rel=&quot;stylesheet&quot; href=&quot;\/\/yandex.st\/highlightjs\/7.3\/styles\/github.min.css&quot;&gt;\r\n&lt;script src=&quot;\/\/yandex.st\/highlightjs\/7.3\/styles\/github.min.css&quot;&gt;&lt;\/script&gt;\r\n&lt;script&gt;\r\n\thljs.tabReplace = '    ';\r\n\thljs.initHighlightingOnLoad();\r\n&lt;\/script&gt;<\/code><\/pre><\/pre>\n<p><\/font><i>hljs.tabReplace<\/i> нужен для того, чтобы табуляции в коде заменялись на пробелы. highlight.js сам определяет на каком языке написан код, но можно явно указывать язык, добавляя <i>class<\/i> к тегу <i>pre<\/i>.<hr width=\"100%\"><\/p>\n<!-- http:\/\/kak-zarabotat.org\/blog\/?go=all\/spryatat-pod-kat\/ --><p><\/section><\/p>\n",
            "date_published": "2018-02-16T09:19:19+03:00",
            "date_modified": "2018-03-14T12:52:10+03:00",
            "_date_published_rfc2822": "Fri, 16 Feb 2018 09:19:19 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "199",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "214",
            "url": "https:\/\/gladilov.org.ru\/blog\/all\/svg-codes-instead-images\/",
            "title": "SVG-код вместо картинки",
            "content_html": "<p>Вместо того, чтобы франить на ФС мелкий файл с простой картинкой (типа индикатор онлайн\/офлайн) можно просто в тег img передавать svg-код этой картинки. Например HTML-код<font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>&lt;img src=&quot;data:image\/svg+xml,&lt;?xml version=&quot;1.0&quot;?&gt;&lt;svg height=&quot;8px&quot; viewBox=&quot;0 0 20 20&quot; version=&quot;1.1&quot; xmlns=&quot;http:\/\/www.w3.org\/2000\/svg&quot;&gt;&lt;circle cx=&quot;10&quot; cy=&quot;10&quot; r=&quot;8&quot; fill=&quot;red&quot;&gt;&lt;\/svg&gt;&quot; \/&gt;\r\n&amp;nbsp;\r\n&lt;img src=&quot;data:image\/svg+xml,&lt;?xml version=&quot;1.0&quot;?&gt;&lt;svg height=&quot;8px&quot; viewBox=&quot;0 0 20 20&quot; version=&quot;1.1&quot; xmlns=&quot;http:\/\/www.w3.org\/2000\/svg&quot;&gt;&lt;circle cx=&quot;10&quot; cy=&quot;10&quot; r=&quot;8&quot; fill=&quot;gold&quot;&gt;&lt;\/svg&gt;&quot; \/&gt;\r\n&amp;nbsp;\r\n&lt;img src=&quot;data:image\/svg+xml,&lt;?xml version=&quot;1.0&quot;?&gt;&lt;svg height=&quot;8px&quot; viewBox=&quot;0 0 20 20&quot; version=&quot;1.1&quot; xmlns=&quot;http:\/\/www.w3.org\/2000\/svg&quot;&gt;&lt;circle cx=&quot;10&quot; cy=&quot;10&quot; r=&quot;8&quot; fill=&quot;green&quot;&gt;&lt;\/svg&gt;&quot; \/&gt;<\/code><\/pre><\/pre>\n<p><\/font>выведет такие три точки: <img style=\"vertical-align:middle!important;margin-right:2px;\" src=\"data:image\/svg+xml,&lt;?xml version=&quot;1.0&quot;?&gt;&lt;svg height=&quot;8px&quot; viewBox=&quot;0 0 20 20&quot; version=&quot;1.1&quot; xmlns=&quot;http:\/\/www.w3.org\/2000\/svg&quot;&gt;&lt;circle cx=&quot;10&quot; cy=&quot;10&quot; r=&quot;8&quot; fill=&quot;red&quot;\/&gt;&lt;\/svg&gt;\" \/> <img style=\"vertical-align:middle!important;margin-right:2px;\" src=\"data:image\/svg+xml,&lt;?xml version=&quot;1.0&quot;?&gt;&lt;svg height=&quot;8px&quot; viewBox=&quot;0 0 20 20&quot; version=&quot;1.1&quot; xmlns=&quot;http:\/\/www.w3.org\/2000\/svg&quot;&gt;&lt;circle cx=&quot;10&quot; cy=&quot;10&quot; r=&quot;8&quot; fill=&quot;gold&quot;\/&gt;&lt;\/svg&gt;\" \/> <img style=\"vertical-align:middle!important;margin-right:2px;\" src=\"data:image\/svg+xml,&lt;?xml version=&quot;1.0&quot;?&gt;&lt;svg height=&quot;8px&quot; viewBox=&quot;0 0 20 20&quot; version=&quot;1.1&quot; xmlns=&quot;http:\/\/www.w3.org\/2000\/svg&quot;&gt;&lt;circle cx=&quot;10&quot; cy=&quot;10&quot; r=&quot;8&quot; fill=&quot;green&quot;\/&gt;&lt;\/svg&gt;\" \/> (сделал форматирование по строкам для удобства и «читаемости», хе-хе). При размере кластера 4К это может быть существенно...<\/p>\n<p>P. S. Наверное, этим все уже давно пользуются, но до меня только дошла выгода этого метода.<\/p>\n",
            "date_published": "2018-02-07T21:59:12+03:00",
            "date_modified": "2018-02-12T16:38:09+03:00",
            "_date_published_rfc2822": "Wed, 07 Feb 2018 21:59:12 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "214",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "180",
            "url": "https:\/\/gladilov.org.ru\/blog\/all\/file-for-aegea\/",
            "title": "Напильник для Эгеи",
            "content_html": "<style>\r\nkbd {\r\nborder:1px solid gray;\r\nfont-size:0.8em;\r\nbox-shadow:1px 0 1px 0 #eee, 0 2px 0 2px #ccc, 0 2px 0 3px #444;\r\n-webkit-border-radius:3px;\r\n-moz-border-radius:3px;\r\nborder-radius:3px;\r\nmargin:2px 3px;\r\npadding:1px 5px;\r\n}\r\n<\/style>\n<p><img src=\"\/blog\/pictures\/file-aegea\/aegea-file.jpg\" class=\"main_left_img\" \/> Как можно заметить, мой блог ведётся на бесплатном (для личных блогов) движке <a href=\"http:\/\/blogengine.ru\/\"><img src=\"\/img\/blog\/favicon.png\" style=\"vertical-align:middle!important;\" \/> Эгея<\/a>. Это отличный блого-движок, отличающийся своей простотой, элегантностью и дружелюбием к пользователю. Поэтому, после восстановления сбоя на сервере с моим сайтом, я опять решил настроить блог на Эгее. Правда, незадолго до сбоя я обновил систему до Debian 9, вычистив все упоминания о PHP5, остался только PHP7 (с FPM), но движок блога может работать как на пятом, так и на седьмом PHP.<\/p>\n<p><b class=\"spoiler-controller pop-up_camper_10_01_18\">Показать<\/b><\/p>\n<p><section class=\"spoiler pop-up_camper_10_01_18\"><\/p>\n<p><\/p>\n<p>Возможно, что из-за кривоватых настроек моего сервера Эгея из старого бэкапа сразу работать отказалась (нет баз, не известен пароль к базам и т. д.). Это было, вероятно, тяжкое наследие старой системы, я обновлял её через aptitude dist-upgrade.<\/p>\n<p>Пришлось бэкапить MySQL-базы с наполнением блога, затем переустанавливать заново движок (скачал релиз 2.7, версию 3249), инсталлятор создал новые базы, поверх которых я вытащил из бэкапа мои блоговые статьи, комменты и прочее. Причём начальные таблицы в базе создаются с префиксом ’e2Blog’, нужно не забыть поменять на используемый мной префикс в файле <b>system\/defaut\/config.php<\/b>, строка<\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>$_config['db_table_prefix'] = 'e2Blog';<\/code><\/pre><\/pre>\n<p>Да, и <b>user\/settings.json<\/b> желательно привести к такому виду<\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>{  &quot;db&quot;: {&quot;server&quot;: &quot;&lt;узел&gt;&quot;,&quot;user_name&quot;: &quot;&lt;имя&gt;&quot;,&quot;passw&quot;: &quot;&lt;пароль&gt;&quot;,&quot;name&quot;: &quot;&lt;база&gt;&quot;},\r\n    &quot;timezone&quot;: {&quot;offset&quot;: 10800,&quot;is_dst&quot;: false},\r\n    &quot;template&quot;: &quot;plain&quot;,\r\n    &quot;language&quot;: &quot;ru&quot;,\r\n    &quot;appearance&quot;: {&quot;notes_per_page&quot;: 10},\r\n    &quot;comments&quot;: {&quot;default_on&quot;: true},\r\n    &quot;site_title&quot;: &quot;Блог ни о чём&quot;,\r\n    &quot;description&quot;: &quot;Мысли, факты, цитаты, заметки.&quot;,\r\n    &quot;author&quot;: &quot;Павел Гладилов&quot;,\r\n    &quot;user&quot;: {&quot;email&quot;: &quot;pavel@gladilov.org.ru&quot;},\r\n    &quot;notifications&quot;: {&quot;new_comments&quot;: true}  }<\/code><\/pre><\/pre>\n<p>Затем выяснилось, что вместо статей открывается страница с ошибкой<\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>Fatal error: Uncaught Error: Call to undefined function dl() in &lt;файл&gt; line &lt;строка&gt;<\/code><\/pre><\/pre>\n<p>Пришлось погружать свои ручки в код движка... В результате просмотра кода было найдено решение — замена части кода в ядре движка <b>system\/core.php<\/b> с<\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>if (!extension_loaded('gd')) { if (!dl('gd.so')) { header('Content-type: image\/gif'); return false; } }<\/code><\/pre><\/pre>\n<p>на<\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>if (!extension_loaded('gd')) { header('Content-type: image\/gif'); return false; }<\/code><\/pre><\/pre>\n<p>После этого блог заработал, но теперь пропала возможность быстрого сохранения в редакторе по комбинации клавиш <kbd>Ctrl<\/kbd> + <kbd>Enter<\/kbd> (в старых версиях — <kbd>Ctrl<\/kbd> + <kbd>S<\/kbd>) и при попытке движка сформировать или вызвать на редактирование страницу, на которой есть ссылки на несуществующие файлы картинок — открывалась страница с серым фоном и маленьким пустым квадратом посередине. Причём, если такая «кривая» страница открылась — то даже при устранении всех причин всё равно отображается ошибочная страница. Я думаю (но не проверял), что это связано с хранением сгенереных страниц (или их частей) в <b>user\/caches\/*.psa<\/b>. Возможно, мне повезло, что со временем истёк срок хранения кешированных «кривых» страниц, и они стали отображаться нормально. Или возникновение такой проблемы как-то связано с разными форматами таблиц старой и новой версии движка. А вообще эту проблему я обошёл с помощью прямой правки заметок в записях таблицы <префикс>Notes, затем там-же стал выставлять атрибут ’Null’ в поле «Uploads» и использовать полный путь к файлам картинок от корня.<\/p>\n<p>В файле <b>user\/extras\/header-pre.tmpl.php<\/b> прописываю заголовок для блога — кнопки <a style=\"border: none!important; text-decoration:none!important;\" href=\"https:\/\/gladilov.org.ru\" title=\"Перейти на gladilov.org.ru\"><img style=\"vertical-align:middle!important;\" src=\"\/blog\/pictures\/header\/gor.png\" alt=\"gladilov.org.ru\" width=\"79\" height=\"24\" onmouseover=\"this.src='\/blog\/pictures\/header\/gorh.png'\" onmouseout=\"this.src='\/blog\/pictures\/header\/gor.png'\" \/><\/a> и <a style=\"border: none!important; text-decoration:none!important;\" href=\"https:\/\/gladilov.org.ua\" title=\"Перейти на gladilov.org.ua\"><img style=\"vertical-align:middle!important;\" src=\"\/blog\/pictures\/header\/gou.png\" alt=\"gladilov.org.ua\" width=\"79\" height=\"24\" onmouseover=\"this.src='\/blog\/pictures\/header\/gouh.png'\" onmouseout=\"this.src='\/blog\/pictures\/header\/gou.png'\" \/><\/a>.<\/p>\n<p>В файле <b>themes\/<имя используемой темы>\/templates\/layout.tmpl.php<\/b> рисую верхнее меню:<\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>&lt;?php if ($content['class'] == 'frontpage') { ?&gt;\r\n          &lt;div id=&quot;e2-blog-description&quot;&gt;&lt;?= $content['blog']['description'] ?&gt;&lt;\/div&gt;\r\n        &lt;?php } ?&gt;\r\n&lt;br \/&gt;\r\n&lt;table width=&quot;650&quot;&gt;\r\n&lt;tbody&gt;\r\n&lt;tr&gt;\r\n&lt;td&gt;&lt;a href=&quot;&lt;ссылка1&gt;&quot;&gt;&lt;img src=&quot;&lt;картинка1&gt;&quot; style=&quot;vertical-align:middle!important&quot; \/&gt;&amp;amp;&amp;nbsp;&lt;пункт1&gt;&lt;\/a&gt;&lt;\/td&gt;\r\n&lt;td width=&quot;15&quot;&gt;&lt;\/td&gt;\r\n&lt;td&gt;&lt;a href=&quot;&lt;ссылка2&gt;&quot;&gt;&lt;img src=&quot;&lt;картинка2&gt;&quot; style=&quot;vertical-align:middle!important&quot; \/&gt;&amp;amp;&amp;nbsp;&lt;пункт2&gt;&lt;\/a&gt;&lt;\/td&gt;\r\n&lt;td width=&quot;15&quot;&gt;&lt;\/td&gt;\r\n...\r\n&lt;td&gt;&lt;a href=&quot;&lt;ссылкаN&gt;&quot;&gt;&lt;img src=&quot;&lt;картинкаN&gt;&quot; style=&quot;vertical-align:middle!important&quot; \/&gt;&amp;amp;&amp;nbsp;&lt;пунктN&gt;&lt;\/a&gt;&lt;\/td&gt;\r\n&lt;\/tr&gt;\r\n&lt;\/tbody&gt;\r\n&lt;\/table&gt;\r\n      &lt;\/div&gt;\r\n    &lt;\/div&gt;<\/code><\/pre><\/pre>\n<p>Ну и тоже выплывшую при правке <b>system\/core.php<\/b> проблему с невозможностью определить новую картинку для юзера решаю изменением в этом же файле определений DEFAULT_USERPIC_FILENAME и DEFAULT_USERPIC_PLACEHOLDER_FILENAME на путь к моей картинке.<\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>define('DEFAULT_USERPIC_FILENAME','&lt;soul.png&gt;'); define('DEFAULT_USERPIC_PLACEHOLDER_FILENAME','&lt;soul.png&gt;');<\/code><\/pre><\/pre>\n<p>Теперь мой блог выглядит приблизительно так:<br \/>\n<center><img src=\"\/blog\/pictures\/file-aegea\/desktop.jpg\" \/><\/center><\/section><\/p>\n",
            "date_published": "2018-01-10T20:53:53+03:00",
            "date_modified": "2022-08-29T19:58:13+03:00",
            "_date_published_rfc2822": "Wed, 10 Jan 2018 20:53:53 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "180",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "14",
            "url": "https:\/\/gladilov.org.ru\/blog\/all\/pomenyal-nemnogo-dizayn-svoego-sayta\/",
            "title": "Поменял немного дизайн своего сайта",
            "content_html": "<p>Сменил расположение элементов своего <a href=\"\/\"><img src=\"\/img\/favicon.png\" style=\"vertical-align:middle!important;\" \/> сайта<\/a>. Теперь сверху — ссылки на ресурсы без паролей, внизу — соответственно, запаролированные. И шапку тоже зеркально отобразил. Чуть позже расположу ссылки в порядке их интересности )))<br \/>\nИ <a href=\"\/mobile\/\"><img src=\"\/img\/mobile\/favicon.png\" style=\"vertical-align:middle!important;\" \/>мобильную версию<\/a> поправлю.<\/p>\n",
            "date_published": "2013-08-12T17:44:33+03:00",
            "date_modified": "2018-02-08T12:02:38+03:00",
            "_date_published_rfc2822": "Mon, 12 Aug 2013 17:44:33 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "14",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        },
        {
            "id": "6",
            "url": "https:\/\/gladilov.org.ru\/blog\/all\/new-mini-site-about-yue-fey\/",
            "title": "Новый мини-сайт (про Юэ Фея)",
            "content_html": "<p>Набросал новый мини-сайтик о Юэ Фее, китайском полководце династии Южная Сун. Создавал его под впечатлением от книги 1963 г. «Сказание о Юэ Фэе», написанной Цянь Цаем и переведённой с китайского В. Панасюком. Очень советую всем, хоть читал я её в последний раз году этак в 1985...<br \/>\n<img src=\"\/img\/yuefei\/book1.png\"><\/p>\n<p>Итак — <a href=\"\/me\/books\/yuefei\/\"><img src=\"\/img\/yuefei\/favicon.png\" stile=\"vertical-align:middle!important;\" \/> Сказание о Юэ Фее<\/a>.<\/p>\n",
            "date_published": "2013-05-28T11:56:57+03:00",
            "date_modified": "2020-01-10T09:56:46+03:00",
            "_date_published_rfc2822": "Tue, 28 May 2013 11:56:57 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "6",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        }
    ],
    "_e2_version": 3249,
    "_e2_ua_string": "E2 (v3249; Aegea)"
}