{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "M9K blog: заметки с тегом selfhosted",
    "_rss_description": "Заметки обо всём: devops, lifestyle, культура.",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/blog.m9k.space\/tags\/selfhosted\/",
    "feed_url": "https:\/\/blog.m9k.space\/tags\/selfhosted\/json\/",
    "icon": "https:\/\/blog.m9k.space\/pictures\/userpic\/userpic@2x.jpg?1769095194",
    "authors": [
        {
            "name": "M",
            "url": "https:\/\/blog.m9k.space\/",
            "avatar": "https:\/\/blog.m9k.space\/pictures\/userpic\/userpic@2x.jpg?1769095194"
        }
    ],
    "items": [
        {
            "id": "256",
            "url": "https:\/\/blog.m9k.space\/all\/vecherniy-selfhosted-2-5d-parallaks-v-brauzere\/",
            "title": "Вечерний selfhosted. 2.5D — параллакс в браузере.",
            "content_html": "<div class=\"e2-text-picture\">\n<img src=\"https:\/\/blog.m9k.space\/pictures\/izobrazhenie-2.png\" width=\"655\" height=\"931\" alt=\"\" \/>\n<\/div>\n<p>Владение несколькими IG-аккаунтами, из которых только один реально активный-активный, позволяет выйти из информационного алгоритмического пузыря. Наткнулся на <a href=\"https:\/\/bio.fojcikdominik.com\">Web-дизайнера<\/a>, делающего прикольные сайты — визитки. С точки зрения прикладного использования <s>человека, познавшего grep и cat<\/s>, это понятное дело, специфический изюм — сайт должен быть про быстроту поиска информации — в этом отношение условный tsukumo, вывалившийся прямиком из нулевых отправит в ноудаун все нынешние модные-и-красивые дизайнерские сайты, но иногда можно поиграться и в красивости.<\/p>\n<p>Внимание привлёк <a href=\"https:\/\/lab.revelium.studio\/milkmaid\">Milkmaid<\/a><br \/>\nЦитирую:<\/p>\n<p class=\"loud\">Эффект строится из фотографии и карты глубины — изображения в оттенках серого, где яркость задаёт условное расстояние до камеры. Для новых фотографий карту оценивает нейросеть по одному кадру.<\/p>\n<p class=\"loud\">Фотография преобразуется в облако цветных точек. Каждая точка получает цвет исходного пикселя, положение по горизонтали и вертикали и смещение в глубину. При необходимости создаются дополнительные слои с небольшим отступом. Они добавляют плотность облаку, но не восстанавливают скрытые части объектов.<\/p>\n<p class=\"loud\">При повороте сцены ближние и дальние точки смещаются на экране по-разному. Этот параллакс создаёт ощущение объёма. У краёв изображения прозрачность точек постепенно уменьшается, поэтому фотография мягко растворяется в фоне.<\/p>\n<p class=\"loud\">Движение рассчитывается как система частиц: у каждой точки есть исходное положение и скорость. Виртуальная пружина возвращает её на место, затухание гасит колебания, а вихревое поле и воздействие курсора отклоняют от исходной позиции. Кнопка сборки убирает рассеивание, после чего облако восстанавливает изображение.<\/p>\n<p class=\"loud\">Python заранее готовит фотографию и карту глубины. Отрисовка и движение частиц выполняются на видеочипе устройства через WebGL 2. Получается интерактивная 2.5D-сцена: небольшой поворот выглядит объёмно, но посмотреть за предметы или увидеть их обратную сторону нельзя.<\/p>\n<p><a href=\"https:\/\/particle.m9k.space\/\">Selfhost demo в стилистике<\/a><\/p>\n",
            "summary": "Владение несколькими IG-аккаунтами, из которых только один реально активный-активный, позволяет выйти из информационного алгоритмического пузыря",
            "date_published": "2026-10-14T23:27:01+07:00",
            "date_modified": "2026-10-14T23:27:17+07:00",
            "tags": [
                "llm",
                "selfhosted",
                "нейрогенерация",
                "системное администрирование"
            ],
            "image": "https:\/\/blog.m9k.space\/pictures\/izobrazhenie-2.png",
            "_date_published_rfc2822": "Wed, 14 Oct 2026 23:27:01 +0700",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "256",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/blog.m9k.space\/pictures\/izobrazhenie-2.png"
                ]
            }
        }
    ],
    "_e2_version": 4199,
    "_e2_ua_string": "Aegea 11.5 (v4199)"
}