Зерокодинг — это создание сайтов и приложений без навыков программирования. IT-продукт можно собрать самостоятельно с помощью специальных no-code инструментов. Такой подход позволяет быстро проверять продуктовые и бизнес-гипотезы и тестировать прототипы, экономя время и деньги на классической разработке.
Дмитрий Амелин больше 20 лет работает продакшн продюсером разного мультимедийного контента: от выставок до фильмов. У него есть технические навыки в видеомонтаже, к��мпьютерной графике и умение выстраивать процессы для решения технических задач. Но самостоятельным программированием и созданием IT-продуктов Дмитрий не занимался.
Несколько лет назад у него появилась идея создать приложение для организации досуга. Дмитрий пошёл классическим путём и собрал команду разработчиков. На реализацию потратили год и больше миллиона рублей, но запуск так и не состоялся.
Когда Дмитрий узнал о зерокодинге, он из любопытства сделал прототип приложения за неделю и понял, что этот способ позволит довести проект до публикации в App Store и Google Play с минимальными затратами. Так и произошло.
Рассказываем о том, как реализовать свою идею с помощью зерокода и запустить IT-стартап без опыта.
Как появилась идея проекта
Идея создать своё приложение появилась в начале 2019 года.
Дмитрий часто ездил по России из-за работы в кинопроизводстве и как автопутешественник. В большинстве мест, где он бывал, не было развитой инфраструктуры. Поэтому первоначально планировалось создать туристический планер.
По задумке это было бы приложение, в котором можно спланировать туристические активности, просчитать автомобильную и пешую нагрузку и вступить в коммуникацию с местными жителями, чтобы попросить совета или помощи. Например: узнать о локальных экотропах, местах для стоянки или где можно зарядить телефон.
Идея приложения показалась интересной друзьям Дмитрия, поэтому они согласились на финансовую поддержку проекта — разделили ежемесячные платежи по текущим расходам.
Дальше был период обсуждения концепции будущего проекта и, как часто бывает, она изменилась на этапе проработки. В итоге первоначальная задумка эволюционировала в идею создать приложение, которое показывает досуговые мероприятия рядом с пользователем.
Автор сравнивает суть приложения с супермаркетом. Когда пользователь не знает, чем конкретно хотел бы заняться, он может просмотреть все предложения и выбрать. Главным стартовым фильтром при выборе является локация пользователя.
За основу было решено взять простой и понятный интерфейс с привычной картой и отметками. Для сбора информации хотели использовать парсинг.
ОНЛАЙН-ПРАКТИКУМ
ЗАПУСК DEEPSEEK R1 ЛОКАЛЬНО НА СВОЕМ КОМПЬЮТЕРЕ
ЧТО БУДЕТ НА ОБУЧЕНИИ?
- ПОКАЖЕМ, КАК РАЗВЕРНУТЬ МОДЕЛЬ DEEPSEEK R1 ПРЯМО НА СВОЁМ КОМПЬЮТЕРЕ
- Где и как применять? Потестируем модель после установки на разных задачах
- Как дообучить модель под себя?
Почему отказались от разработки на коде
Полгода ушло на разработку дизайна и сбор команды разработчиков. Тестовый запуск планировался в феврале 2020 года на пользователей из Москвы.
Из-за пандемии все офлайн-мероприятия отменили, а команда экстренно приняла решение переделать приложение под онлайн-мероприятия.
Ещё через полгода стало понятно, что сменить фокус с офлайн на онлайн не просто. Это принципиально другой рынок. Нужны большие вложения в разработку рекомендательных алгоритмов, машинного обучения и т.д.
Ресурсы автора проекта и мотивация разработчиков закончились, а результата всё ещё не было.
На тот момент уже было потрачено около 1 млн рублей и время команды. Поэтому проект поставили на паузу.
Как пришли к зерокоду
Несмотря на сложности, Дмитрий не отказался от идеи реализовать проект.
К концу 2020 года решили возобновить работу и вернуться к фокусу на офлайн-мероприятия. К тому моменту сделали анализ аудитории и предполагаемых конкурентов. Результаты по-прежнему подтверждали, что на рынке действительно нет подобного продукта.
Но оказалось, что результаты прошлой разработки уже успели устареть меньше, чем за год. То есть всё нужно было начинать практически с нуля.
До перезапуска работы Дмитрий решил пройти обучение по управлению IT-проектами, чтобы глубже погрузиться в процесс разработки, эффективнее организовать команду и говорить с разработчиками на одном языке.
На курсах, которые он проходил, приглашенным спикером был Вадик Михалёв. Он рассказал про зерокодинг и несколько инструментов: Glide, Adalo и Integromat.
Дмитрия заинтересовал этот подход и он решил изучить инструменты самостоятельно. На тот момент было непонятно, сколько ещё ресурсов нужно будет потратить на разработку. К тому же, сыграло элементарное любопытство.
Из трёх инструментов сразу понравился Adalo интуитивно понятным интерфейсом и визуальным сходством с Figma. Дмитрий собрал первый прототип приложения на Adalo за неделю.
Первая версия приложения на Adalo
Как шла работа над проектом на зерокоде
После сборки прототипа Дмитрий понял, что зерокод — решение для его проекта. Но к приложению нужно было прикрутить мощный функционал: по сбору данных, по их обработке и синхронизации.
Пришлось тратить много времени на самостоятельное изучение целого набора различных инструментов и работе с базами данных, которые по сути — фундамент всего продукта. К базам данных приходилось возвращаться неоднократно, чтобы доработать их.
По словам Дмитрия, курс по мобильной разработке помог бы сэкономить время и быстрее получить нужные навыки.
В итоге работу над проектом вели около года. Менялись названия, дорабатывали функционал и даже несколько раз полностью переделывали дизайн.
С какими трудностями столкнулись
Сам процесс разработки занял примерно 3 месяца, остальные 9 месяцев — исследования, тестирования и улучшения. Во время тестирования находили проблемы, например: какие-то элементы абсолютно по-разному работали на ios и android, а то что «летало» на компьютере, сильно тормозило на некоторых смартфонах.
Зерокодинговые инструменты помогают получить первые результаты с минимальными затратами и без опыта в IT. Но чтобы развивать навыки и сам продукт нужно погружаться в них глубже.
На каждом новом этапе Дмитрию нужны были всё новые и новые компетенции, поэтому он обрастал знаниями, в том числе и из области классической разработки. 70% времени работы над приложением ушло на самообучение и освоение новых IT-инструментов.
Сколько человек участвовали в разработке на зерокоде
Вёрсткой приложения в Adalo Дмитрий занимался сам.
Ещё до запуска проекта обязанности непосредственно по разработке планировалось передать техническому директору. Дмитрий хотел сосредоточиться на привычной роли продюсера.
В какой-то момент такой специалист пришёл в команду. Но в это время продукт активно разрастался, поэтому тогда не получилось эффективно передать другому человеку всю информацию и идеи по разработке авторского продукта.
К тому же зарплата техдира — это дополнительные расходы — 50 евро в час и через несколько месяцев Дмитрий вернулся к совмещению обязанностей продюсера и главного и единственного разработчика.
Что получилось в итоге
Финальная версия приложения доступна для скачивания и называется «Мероприятия района».
«Мероприятия района» — это афиша актуальных мероприятий Тверского района Москвы.
Экраны приложения «Мероприятия района»
В приложении собирается информация о более 2 000 мероприятий в месяц. Для сравнения: у Kudago примерно то же количество мероприятий в месяц, но по всей Москве, а не в пределах одного района.
Информация о 80% мероприятий есть только на сайтах организаторов. Но часто пользователю трудно ориентироваться на этих ресурсах.
Цель приложения — соединить локальную аудиторию и организаторов локальных мероприятий. С приложением пользователям не нужно тратить часы на самостоятельный поиск информации, а организаторам искать способы продвижения среди целевой аудитории.
У «Мероприятий района» есть две основные категории пользователей и две дополнительные роли для команды. То есть всего четыре разных интерфейса:
1. Клиентский интерфейс в мобильном приложении
В интерфейсе доступны списки мероприятий поблизости в заданный временной период. Есть фильтры и возможность прочитать информацию о мероприятии и организаторе.
Для использования приложения не требуется регистрация. Но чтобы подписаться на организатора или добавить мероприятие в избранное, нужно авторизоваться.
2. Авторский интерфейс в веб-приложении
Интерфейс для организаторов, чтобы публиковать информацию о мероприятиях. В зависимости от выбора формата мероприятия (разовое, повторяющееся, сеанс и т.д.) запускаются разные сценарии и авторам открываются разные информационные блоки для заполнения. Вся информация сначала проверяется на корректность, а после публикуется.
Авторский режим
3. Модераторский функционал в отдельном веб-приложении
Модераторы контролируют информацию, которую размещают авторы, и блокируют автора, если пользователи пожаловались на неверные данные. Например, если бесплатное мероприятие оказалось платным.
Интерфейс модератора
4. Редакторский функционал в отдельном веб-приложении
Редакторы также вносят в приложение информацию о новых мероприятиях. Для этого каждый редактор мониторит порядка 40 организаций. От первоначальной идеи с парсингом отказались, так как нужно прописывать сценарии отдельно под каждый источник данных. При этом всё равно придётся тратить время на «чистку» и форматирование информации.
Также редакторы отслеживают статистику и реальную пользовательскую активность: сколько человек просматривали мероприятия и переходили по разным ссылкам в приложении.
Интерфейс редактора
Всего в команде шесть человек. Вместе с Дмитрием над проектом работают два сооснователя — инвестор и второй продюсер, а также три редактора. Иногда роль редактора берут на себя остальные участники.
В самом начале пути Дмитрий делал оценку стоимости запуска. На 2019 год собрать прототип стоило порядка 5 — 6 млн. рублей, а разработка, вывод на рынок и продвижение — 30 млн. рублей.
За три года работы потратили порядка 6 млн. рублей. По словам Дмитрия, если бы сразу выбрали зерокод-подход, то уложились бы в 2 — 3 млн.
Что под капотом
Приложение сделано в Adalo — это несколько десятков связанных между собой экранов мобильного приложения и страниц веб-приложения.
Текущая версия приложения на Adalo
Но функционала Adalo не хватает как для работы с базами данных, так и с отдельными характеристиками самих мероприятий. Например, в Adalo нельзя задать временной диапазон для сортировки мероприятий. А в приложении мероприятия делятся на утренние, дневные и вечерние. Кроме временного диапазона в таблице мероприятий собрано больше сотни характеристик. Поэтому дополнительно подключили базу данных Airtable через Intergromat.
На Integromat выстроен большой объём функционала бэкенда, в том числе автомодерация, обработка изображений, модераторский функционал и т.д.
Airtable подключили для сбора и анализа различной статистики. С помощью Integromat из приложения собирают данные по действиям пользователей, которые передаются в Airtable для анализа. Результаты используют для принятия маркетинговых решений.
Статистика, собранная с помощью Airtable и Intergromat
Подключенный Intergromat
Ещё один инструмент, который подключен к приложению, — CloudConvert. Инструмент обрабатывает все фотографии, которые загружают авторы, и оптимизирует в единый формат.
Схема технической модерации мероприятий
Что дальше
Приложение запустили в апреле 2022 года. Сейчас идёт стадия анализа и проверки трёх основных гипотез:
- У локальной аудитории есть потребность в продукте (продуктовая гипотеза).
- У авторов есть потребность в новом канале продвижения среди локальной аудитории (продуктовая гипотеза).
- Авторы готовы платить за публикацию информации о своих мероприятиях в приложении (гипотеза бизнес-модели).
Главный плюс зерокодинга — можно быстро вносить изменения в продукт и проверять гипотезы.
Первые две гипотезы уже подтвердились. Чтобы проверить третью — нужно сгенерировать больше трафика.
Если и третья гипотеза подтвердится, проект перейдёт на следующий этап — масштабирование, то есть выход за пределы района. Глобальная цель — создать маркетинговый инструмент продвижения на локальную аудиторию и выйти на международный рынок.
Также в планах перенести приложение на FlutterFlow, чтобы усовершенствовать текущую версию. А после этапа пилотирования — вести дальнейшую разработку уже на коде.
Сейчас Дмитрий всё-таки передал роль разработчика второму продюсеру проекта. Несмотря на гуманитарный бэкграунд коллеги (по специальности он учитель географии), у него получилось разобраться в Adalo буквально за месяц и даже обновить приложение, добавив новые функции и изменив дизайн интерфейса.
Это ещё одно преимущество зерокод-подхода — можно быстро передать техническое ведение действующего IT-проекта другому человеку.
Если ты хочешь попробовать мобильный зерокодинг, приходи на бесплатный 3-х дневный интенсив, где ты попробуешь Glide и Adalo и создашь 2 настоящих приложения на них!
Большой практикум
ЗАМЕНИ ВСЕ НЕЙРОСЕТИ НА ОДНУ — PERPLEXITY
ПОКАЖЕМ НА КОНКРЕТНЫХ КЕЙСАХ
- Освой Perplexity и узнай, как пользоваться функционалом остальных ИИ в одном
- УЧАСТВОВАТЬ ЗА 0 РУБ.
- Расскажем, как получить подписку (240$) бесплатно
Участвовать бесплатно
ОНЛАЙН-ПРАКТИКУМ
ЗАПУСК DEEPSEEK R1 ЛОКАЛЬНО НА СВОЕМ КОМПЬЮТЕРЕ
ЧТО БУДЕТ НА ОБУЧЕНИИ?
- ПОКАЖЕМ, КАК РАЗВЕРНУТЬ МОДЕЛЬ DEEPSEEK R1 ПРЯМО НА СВОЁМ КОМПЬЮТЕРЕ
Участвовать бесплатно
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="HandheldFriendly" content="True">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Favicon -->
<link rel="icon" href="https://ya.zerocoder.ru/wp-content/themes/zero/assets/images/favicon.png" type="image/png" />
<!-- Google Fonts -->
<link href="https://fonts.googleapis.com/css2?family=Mulish:ital,wght@0,400;0,700;1,400;1,700&family=Source+Code+Pro:wght@500&family=Montserrat:wght@500;600;700&display=swap" rel="stylesheet">
<!-- External CSS -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/owl.carousel@2.3.4/dist/assets/owl.carousel.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/owl.carousel@2.3.4/dist/assets/owl.theme.default.min.css">
<!-- Theme CSS -->
<link rel="stylesheet" type="text/css" href="https://ya.zerocoder.ru/wp-content/themes/zero/assets/css/screen.css?ver=3125">
<link rel="stylesheet" type="text/css" href="https://ya.zerocoder.ru/wp-content/themes/zero/assets/css/style_new.css?ver=1771695106">
<!-- jQuery (обязательно первым) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<!-- jQuery Cookie (обязательно для попапов) -->
<script src="https://cdn.jsdelivr.net/npm/js-cookie@3.0.5/dist/js.cookie.min.js"></script>
<!-- Owl Carousel JS -->
<script src="https://cdn.jsdelivr.net/npm/owl.carousel@2.3.4/dist/owl.carousel.min.js"></script>
<!-- Fancybox v3 -->
<script src="https://cdn.jsdelivr.net/gh/fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.js"></script>
<!-- Theme JS -->
<script src="https://ya.zerocoder.ru/wp-content/themes/zero/assets/js/jquery-cookie.js"></script>
<!-- Theme JS -->
<script src="https://ya.zerocoder.ru/wp-content/themes/zero/assets/js/jquery-cookie.js"></script>
<script defer src="https://ya.zerocoder.ru/wp-content/themes/zero/assets/js/main.js?ver=1771695106"></script>
<meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />
<style>img:is([sizes="auto" i], [sizes^="auto," i]) { contain-intrinsic-size: 3000px 1500px }</style>
<!-- This site is optimized with the Yoast SEO plugin v20.2.1 - https://yoast.com/wordpress/plugins/seo/ -->
<title>Как медиа-продюсер в 49 лет запустил собственный стартап на зерокоде - Я зерокодер</title>
<meta name="description" content="Делимся историей успеха Дмитрия, выпускника «Зерокодера», который в 49 лет запустил собственный стартап на зерокоде" />
<link rel="canonical" href="https://ya.zerocoder.ru/kak-miedia-prodiusier-v-49-liet-zapustil-sobstviennyi-startap-na-zierokodie/" />
<meta property="og:locale" content="ru_RU" />
<meta property="og:type" content="article" />
<meta property="og:title" content="Как медиа-продюсер в 49 лет запустил собственный стартап на зерокоде - Я зерокодер" />
<meta property="og:description" content="Делимся историей успеха Дмитрия, выпускника «Зерокодера», который в 49 лет запустил собственный стартап на зерокоде" />
<meta property="og:url" content="https://ya.zerocoder.ru/kak-miedia-prodiusier-v-49-liet-zapustil-sobstviennyi-startap-na-zierokodie/" />
<meta property="og:site_name" content="Я зерокодер" />
<meta property="article:published_time" content="2022-09-15T15:36:38+00:00" />
<meta property="article:modified_time" content="2024-08-23T16:28:24+00:00" />
<meta property="og:image" content="https://ya.zerocoder.ru/wp-content/uploads/2023/03/27-1-1.png" />
<meta property="og:image:width" content="1280" />
<meta property="og:image:height" content="720" />
<meta property="og:image:type" content="image/png" />
<meta name="author" content="Редакция" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:label1" content="Написано автором" />
<meta name="twitter:data1" content="Редакция" />
<meta name="twitter:label2" content="Примерное время для чтения" />
<meta name="twitter:data2" content="11 минут" />
<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"WebPage","@id":"https://ya.zerocoder.ru/kak-miedia-prodiusier-v-49-liet-zapustil-sobstviennyi-startap-na-zierokodie/","url":"https://ya.zerocoder.ru/kak-miedia-prodiusier-v-49-liet-zapustil-sobstviennyi-startap-na-zierokodie/","name":"Как медиа-продюсер в 49 лет запустил собственный стартап на зерокоде - Я зерокодер","isPartOf":{"@id":"https://ya.zerocoder.ru/#website"},"primaryImageOfPage":{"@id":"https://ya.zerocoder.ru/kak-miedia-prodiusier-v-49-liet-zapustil-sobstviennyi-startap-na-zierokodie/#primaryimage"},"image":{"@id":"https://ya.zerocoder.ru/kak-miedia-prodiusier-v-49-liet-zapustil-sobstviennyi-startap-na-zierokodie/#primaryimage"},"thumbnailUrl":"https://ya.zerocoder.ru/wp-content/uploads/2023/03/27-1-1.png","datePublished":"2022-09-15T15:36:38+00:00","dateModified":"2024-08-23T16:28:24+00:00","author":{"@id":"https://ya.zerocoder.ru/#/schema/person/c827f107a634049f283324c5249895d1"},"description":"Делимся историей успеха Дмитрия, выпускника «Зерокодера», который в 49 лет запустил собственный стартап на зерокоде","breadcrumb":{"@id":"https://ya.zerocoder.ru/kak-miedia-prodiusier-v-49-liet-zapustil-sobstviennyi-startap-na-zierokodie/#breadcrumb"},"inLanguage":"ru-RU","potentialAction":[{"@type":"ReadAction","target":["https://ya.zerocoder.ru/kak-miedia-prodiusier-v-49-liet-zapustil-sobstviennyi-startap-na-zierokodie/"]}]},{"@type":"ImageObject","inLanguage":"ru-RU","@id":"https://ya.zerocoder.ru/kak-miedia-prodiusier-v-49-liet-zapustil-sobstviennyi-startap-na-zierokodie/#primaryimage","url":"https://ya.zerocoder.ru/wp-content/uploads/2023/03/27-1-1.png","contentUrl":"https://ya.zerocoder.ru/wp-content/uploads/2023/03/27-1-1.png","width":1280,"height":720},{"@type":"BreadcrumbList","@id":"https://ya.zerocoder.ru/kak-miedia-prodiusier-v-49-liet-zapustil-sobstviennyi-startap-na-zierokodie/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Главная страница","item":"https://ya.zerocoder.ru/"},{"@type":"ListItem","position":2,"name":"Как медиа-продюсер в 49 лет запустил собственный стартап на зерокоде"}]},{"@type":"WebSite","@id":"https://ya.zerocoder.ru/#website","url":"https://ya.zerocoder.ru/","name":"Я зерокодер","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://ya.zerocoder.ru/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"ru-RU"},{"@type":"Person","@id":"https://ya.zerocoder.ru/#/schema/person/c827f107a634049f283324c5249895d1","name":"Редакция","image":{"@type":"ImageObject","inLanguage":"ru-RU","@id":"https://ya.zerocoder.ru/#/schema/person/image/","url":"https://secure.gravatar.com/avatar/4edc6f210eb002d68900ecb31d381850?s=96&d=mm&r=g","contentUrl":"https://secure.gravatar.com/avatar/4edc6f210eb002d68900ecb31d381850?s=96&d=mm&r=g","caption":"Редакция"},"description":"Коллектив авторов, редакторов и иллюстраторов статей на сайте блога онлайн-университета «Зерокодер». Пишем на сложные темы доступным языком, чтобы помочь читателям узнавать новое и осваивать актуальные навыки.","sameAs":["https://ya.zerocoder.ru"],"url":"https://ya.zerocoder.ru/author/admin/"}]}</script>
<!-- / Yoast SEO plugin. -->
<link rel='dns-prefetch' href='//cdnjs.cloudflare.com' />
<link rel="alternate" type="application/rss+xml" title="Я зерокодер » Лента комментариев к «Как медиа-продюсер в 49 лет запустил собственный стартап на зерокоде»" href="https://ya.zerocoder.ru/kak-miedia-prodiusier-v-49-liet-zapustil-sobstviennyi-startap-na-zierokodie/feed/" />
<script type="text/javascript">
/* <![CDATA[ */
window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/ya.zerocoder.ru\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.7.2"}};
/*! This file is auto-generated */
!function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\u2b1b","\ud83d\udc26\u200b\u2b1b")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings);
/* ]]> */
</script>
<style id='wp-emoji-styles-inline-css' type='text/css'>
img.wp-smiley, img.emoji {
display: inline !important;
border: none !important;
box-shadow: none !important;
height: 1em !important;
width: 1em !important;
margin: 0 0.07em !important;
vertical-align: -0.1em !important;
background: none !important;
padding: 0 !important;
}
</style>
<link rel='stylesheet' id='wp-block-library-css' href='https://ya.zerocoder.ru/wp-content/plugins/gutenberg/build/block-library/style.css?ver=20.6.0' type='text/css' media='all' />
<style id='classic-theme-styles-inline-css' type='text/css'>
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
</style>
<link rel='stylesheet' id='prism-css-css' href='https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css?ver=1.29.0' type='text/css' media='all' />
<style id='prism-css-inline-css' type='text/css'>
.code-block-container {
margin: 20px 0;
position: relative;
border-radius: 5px;
overflow: hidden;
box-shadow: 0 1px 3px rgba(0,0,0,0.2);
background-color: #1e1e1e;
}
.code-header {
display: flex!important;
justify-content: space-between;
align-items: center;
padding: 8px 15px;
background-color: #252525;
color: #fff;
font-family: Arial, sans-serif;
border-bottom: 1px solid #333;
}
.language-label {
font-weight: bold;
font-size: 14px;
color: #f8f8f8;
}
.copy-button {
background-color: #6366f1;
color: white;
border: none;
border-radius: 3px;
padding: 6px 12px;
cursor: pointer;
font-size: 14px;
transition: background-color 0.2s;
}
.copy-button:hover {
background-color: #4f46e5;
}
.copy-button.copied {
background-color: #10b981;
}
pre[class*="language-"] {
margin: 0 !important;
border-radius: 0 !important;
background-color: #1e1e1e !important;
font-family: "Consolas", "Monaco", monospace !important;
font-size: 14px !important;
white-space: pre !important;
word-wrap: normal !important;
overflow-x: auto !important;
}
code[class*="language-"] {
text-shadow: none !important;
white-space: pre !important;
word-wrap: normal !important;
display: block !important;
}
.line-numbers .line-numbers-rows {
border-right-color: rgba(255, 255, 255, 0.1) !important;
padding-left: 5px !important;
margin-top: 0 !important;
background-color: #252525 !important;
}
.line-numbers-rows > span:before {
color: rgba(255, 255, 255, 0.3) !important;
padding-right: 10px !important;
}
.token.tag, .token.attr-name { color: #e2777a !important; }
.token.attr-value, .token.string { color: #7ec699 !important; }
.token.comment { color: #7c7c7c !important; }
.token.function { color: #82aaff !important; }
.token.keyword { color: #c792ea !important; }
.token.operator { color: #89ddff !important; }
.token.punctuation { color: #ddd !important; }
</style>
<link rel='stylesheet' id='prism-theme-css' href='https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-tomorrow.min.css?ver=1.29.0' type='text/css' media='all' />
<link rel='stylesheet' id='prism-line-numbers-css' href='https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/line-numbers/prism-line-numbers.min.css?ver=1.29.0' type='text/css' media='all' />
<style id='global-styles-inline-css' type='text/css'>
:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
:root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;}
:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
</style>
<link rel='stylesheet' id='mstteam-login-form-css' href='https://ya.zerocoder.ru/wp-content/plugins/custom-login-form-and-logout-redirect//assets/css/frontend.css?ver=1.0.0' type='text/css' media='all' />
<link rel='stylesheet' id='enlighterjs-css' href='https://ya.zerocoder.ru/wp-content/plugins/enlighter/cache/enlighterjs.min.css?ver=viWZ8n/HQnqfVbt' type='text/css' media='all' />
<script type="text/javascript" src="https://ya.zerocoder.ru/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script>
<script type="text/javascript" src="https://ya.zerocoder.ru/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script>
<script type="text/javascript" id="mstteam-login-form-js-extra">
/* <![CDATA[ */
var mstteam_data = {"ajax_url":"https:\/\/ya.zerocoder.ru\/wp-admin\/admin-ajax.php","home_url":"https:\/\/ya.zerocoder.ru","username_placeholder":"","username_placeholder_text":"Username or Email Address","password_placeholder":"","password_placeholder_text":"Password","flag_login_error":"","login_error_text":"Login failed: You have entered an incorrect Username or Password, please try again."};
/* ]]> */
</script>
<script type="text/javascript" src="https://ya.zerocoder.ru/wp-content/plugins/custom-login-form-and-logout-redirect//assets/js/frontend.js?ver=1.0.0" id="mstteam-login-form-js"></script>
<link rel="https://api.w.org/" href="https://ya.zerocoder.ru/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://ya.zerocoder.ru/wp-json/wp/v2/posts/1665" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://ya.zerocoder.ru/xmlrpc.php?rsd" />
<meta name="generator" content="WordPress 6.7.2" />
<link rel='shortlink' href='https://ya.zerocoder.ru/?p=1665' />
<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://ya.zerocoder.ru/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fya.zerocoder.ru%2Fkak-miedia-prodiusier-v-49-liet-zapustil-sobstviennyi-startap-na-zierokodie%2F" />
<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://ya.zerocoder.ru/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fya.zerocoder.ru%2Fkak-miedia-prodiusier-v-49-liet-zapustil-sobstviennyi-startap-na-zierokodie%2F&format=xml" />
<meta name="redi-version" content="1.2.6" /><link rel="icon" href="https://ya.zerocoder.ru/wp-content/uploads/2023/03/favicon-32x32.png" sizes="32x32" />
<link rel="icon" href="https://ya.zerocoder.ru/wp-content/uploads/2023/03/favicon.png" sizes="192x192" />
<link rel="apple-touch-icon" href="https://ya.zerocoder.ru/wp-content/uploads/2023/03/favicon.png" />
<meta name="msapplication-TileImage" content="https://ya.zerocoder.ru/wp-content/uploads/2023/03/favicon.png" />
<!-- Yandex.Metrika counter 2 счетчика 74672059 и 72085663 -->
<script type="text/javascript" >
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(74672059, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
ym(72085663, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
});
</script>
<noscript><div>
<img src="https://mc.yandex.ru/watch/74672059" style="position:absolute; left:-9999px;" alt="" /></div>
<img src="https://mc.yandex.ru/watch/72085663" style="position:absolute; left:-9999px;" alt="" /></div>
</noscript>
<!-- /Yandex.Metrika counter -->
<script>
// t_onReady(function () {
$(document).on('ready', function () {
var search = "?" + window.location.search.split("&").filter(function(val) {
var value = val.replace(/\?/, '');
return value.indexOf("s_") === -1 && value.indexOf("tfc_") === -1;
}).join("&").replace(/\?/, "");
if (search !== "?") {
var aLinks = document.querySelectorAll('a');
var arrayLinks = Array.from(aLinks);
arrayLinks.forEach(function (el) {
var href = el.getAttribute("href");
if (href && href.indexOf("") > -1 && href.indexOf("#") === -1) {
if (href.indexOf("?") === -1) {
el.setAttribute("href", href + search);
} else {
el.setAttribute("href", href + search.replace("?", "&"));
}
}
});
}
});
</script>
</head>
<body data-rsssl=1 class="post-template-default single single-post postid-1665 single-format-standard is-loaded">
<div class="global-wrap">
<div class="global-content">
<header class="header-section">
<div class="header-wrap">
<div class="header-nav left-nav">
<div id="search-open-mob" class="header-search_mob" onclick="window.location.href='/search'">
<svg xmlns="http://www.w3.org/2000/svg" width="29" height="28" viewBox="0 0 29 28" fill="none">
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.8923 22.4379C5.73102 22.4379 0.736328 17.4432 0.736328 11.2819C0.736328 5.12067 5.73102 0.125977 11.8923 0.125977C18.0535 0.125977 23.0482 5.12067 23.0482 11.2819C23.0482 13.8599 22.1738 16.2337 20.7053 18.1228L28.2179 25.6355L26.2458 27.6076L18.7332 20.0949C16.8441 21.5634 14.4703 22.4379 11.8923 22.4379ZM20.2595 11.2822C20.2595 15.9031 16.5135 19.6492 11.8926 19.6492C7.27161 19.6492 3.52559 15.9031 3.52559 11.2822C3.52559 6.66125 7.27161 2.91524 11.8926 2.91524C16.5135 2.91524 20.2595 6.66125 20.2595 11.2822Z" fill="#131313"/>
</svg>
</div>
<input id="toggle" class="header-checkbox" type="checkbox">
<label class="header-toggle" for="toggle">
<span>
<span class="bar"></span>
<span class="bar"></span>
<span class="bar"></span>
</span>
</label>
<nav>
<ul id="menu-menju-v-shapke" class=""><li id="menu-item-22847" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22847"><a href="https://zerocoder.ru/?utm_source=magazine&utm_medium=knopka&utm_campaign=besplatnie#free&article_id=1665&article_title=kak-media-prodjuser-v-49-let-zapustil-sobstvennyj-startap-na-zerokode">бесплатные курсы</a></li>
<li id="menu-item-14" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-14"><a href="https://ya.zerocoder.ru/tag/guides/">💡Гайды</a></li>
<li id="menu-item-16" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-16"><a href="https://ya.zerocoder.ru/tag/reviews/">🔍 Интересное</a></li>
<li id="menu-item-15" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-15"><a href="https://ya.zerocoder.ru/tag/cases/">💼 Кейсы</a></li>
<li id="menu-item-17" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-17"><a href="https://ya.zerocoder.ru/tag/tools/">🛠 Инструменты</a></li>
<li id="menu-item-6531" class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-6531"><a href="https://ya.zerocoder.ru/tag/neural/">🧠 Нейросети</a></li>
<li id="menu-item-38" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-38"><a target="_blank" href="https://zerocoder.ru/?utm_source=magazine&utm_medium=knopka&utm_campaign=main&article_id=1665&article_title=kak-media-prodjuser-v-49-let-zapustil-sobstvennyj-startap-na-zerokode">📚 Курсы</a></li>
</ul> <ul class="nav_button">
<li>
<a href="https://zerocoder.ru/?utm_source=magazine&utm_medium=knopka&utm_campaign=besplatnie#free&article_id=1665&article_title=kak-media-prodjuser-v-49-let-zapustil-sobstvennyj-startap-na-zerokode" target="_blank">Бесплатные курсы</a>
</li>
</ul>
<ul class="left-nav-search">
<li id="search-open" class="header-search">
<span>Поиск</span><svg xmlns="http://www.w3.org/2000/svg" width="29" height="28" viewBox="0 0 29 28" fill="none">
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.8923 22.4379C5.73102 22.4379 0.736328 17.4432 0.736328 11.2819C0.736328 5.12067 5.73102 0.125977 11.8923 0.125977C18.0535 0.125977 23.0482 5.12067 23.0482 11.2819C23.0482 13.8599 22.1738 16.2337 20.7053 18.1228L28.2179 25.6355L26.2458 27.6076L18.7332 20.0949C16.8441 21.5634 14.4703 22.4379 11.8923 22.4379ZM20.2595 11.2822C20.2595 15.9031 16.5135 19.6492 11.8926 19.6492C7.27161 19.6492 3.52559 15.9031 3.52559 11.2822C3.52559 6.66125 7.27161 2.91524 11.8926 2.91524C16.5135 2.91524 20.2595 6.66125 20.2595 11.2822Z" fill="#131313"/>
</svg>
</li>
</ul>
</nav>
<script>
document.addEventListener("DOMContentLoaded", function () {
if (window.innerWidth <= 1024) {
const menu = document.getElementById("menu-menju-v-shapke");
const menuItemsWithChildren = menu.querySelectorAll(".menu-item-has-children");
menuItemsWithChildren.forEach((menuItem) => {
const anchor = menuItem.querySelector("a");
anchor.addEventListener("click", function (event) {
if (!menuItem.classList.contains("active")) {
event.preventDefault();
}
menuItem.classList.add("active");
const siblingItems = Array.from(menuItem.parentNode.children).filter((sibling) => sibling !== menuItem);
siblingItems.forEach((siblingItem) => {
siblingItem.classList.add("hide");
});
if (!menuItem.querySelector("#menu-back")) {
const span = document.createElement("span");
span.id = "menu-back";
span.addEventListener("click", function (event) {
event.stopPropagation();
menuItem.classList.remove("hide", "active");
siblingItems.forEach((siblingItem) => {
siblingItem.classList.remove("hide");
});
menuItem.removeChild(span);
});
menuItem.appendChild(span);
}
});
});
}
});
</script>
</div>
<div class="header-logo">
<div class="header-logo__container">
<div class="header-logo__bracket">{</div>
<div class="is-title">
<a href="/">Я — зерокодер</a>
<h3 class="header-logo__slogan_mob global-underline">Медиа о нейросетях,<br> зерокодинге и онлайн-образовании</h3>
</div>
<div class="header-logo__bracket">}</div>
</div>
</div>
<h3 class="header-logo__slogan global-underline">Медиа о нейросетях, <br> зерокодинге и онлайн-образовании</h3>
<div class="header-logo__greedy-gap"></div>
<div class="header-right-nav">
<div id="search-open-2" class="header-search" onclick="window.location.href='/search'">
<span>Поиск</span><svg xmlns="http://www.w3.org/2000/svg" width="29" height="28" viewBox="0 0 29 28" fill="none">
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.8923 22.4379C5.73102 22.4379 0.736328 17.4432 0.736328 11.2819C0.736328 5.12067 5.73102 0.125977 11.8923 0.125977C18.0535 0.125977 23.0482 5.12067 23.0482 11.2819C23.0482 13.8599 22.1738 16.2337 20.7053 18.1228L28.2179 25.6355L26.2458 27.6076L18.7332 20.0949C16.8441 21.5634 14.4703 22.4379 11.8923 22.4379ZM20.2595 11.2822C20.2595 15.9031 16.5135 19.6492 11.8926 19.6492C7.27161 19.6492 3.52559 15.9031 3.52559 11.2822C3.52559 6.66125 7.27161 2.91524 11.8926 2.91524C16.5135 2.91524 20.2595 6.66125 20.2595 11.2822Z" fill="#131313"/>
</svg>
</div>
<div class="header-link">
<a href="https://zerocoder.ru/?utm_source=magazine&utm_medium=knopka&utm_campaign=besplatnie#free&article_id=1665&article_title=kak-media-prodjuser-v-49-let-zapustil-sobstvennyj-startap-na-zerokode" target="_blank">блог</a>
</div>
</div>
<div class="header-nav right-nav" style="display:none;">
<nav>
<div id="search-open" class="header-search">
<span>Поиск</span><svg xmlns="http://www.w3.org/2000/svg" width="29" height="28" viewBox="0 0 29 28" fill="none">
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.8923 22.4379C5.73102 22.4379 0.736328 17.4432 0.736328 11.2819C0.736328 5.12067 5.73102 0.125977 11.8923 0.125977C18.0535 0.125977 23.0482 5.12067 23.0482 11.2819C23.0482 13.8599 22.1738 16.2337 20.7053 18.1228L28.2179 25.6355L26.2458 27.6076L18.7332 20.0949C16.8441 21.5634 14.4703 22.4379 11.8923 22.4379ZM20.2595 11.2822C20.2595 15.9031 16.5135 19.6492 11.8926 19.6492C7.27161 19.6492 3.52559 15.9031 3.52559 11.2822C3.52559 6.66125 7.27161 2.91524 11.8926 2.91524C16.5135 2.91524 20.2595 6.66125 20.2595 11.2822Z" fill="#131313"/>
</svg>
</div>
<div class="header-link">
<a href="https://zerocoder.ru/?utm_source=magazine&utm_medium=knopka&utm_campaign=besplatnie#free&article_id=1665&article_title=kak-media-prodjuser-v-49-let-zapustil-sobstvennyj-startap-na-zerokode" target="_blank">бесплатные курсы</a>
</div>
</nav>
</div>
</div>
<div class="buttons-block">
<ul id="menu-menju-v-shapke-1" class="buttons-block__list"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-22847"><a href="https://zerocoder.ru/?utm_source=magazine&utm_medium=knopka&utm_campaign=besplatnie#free&article_id=1665&article_title=kak-media-prodjuser-v-49-let-zapustil-sobstvennyj-startap-na-zerokode">бесплатные курсы</a></li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-14"><a href="https://ya.zerocoder.ru/tag/guides/">💡Гайды</a></li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-16"><a href="https://ya.zerocoder.ru/tag/reviews/">🔍 Интересное</a></li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-15"><a href="https://ya.zerocoder.ru/tag/cases/">💼 Кейсы</a></li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-17"><a href="https://ya.zerocoder.ru/tag/tools/">🛠 Инструменты</a></li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-post_tag menu-item-6531"><a href="https://ya.zerocoder.ru/tag/neural/">🧠 Нейросети</a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-38"><a target="_blank" href="https://zerocoder.ru/?utm_source=magazine&utm_medium=knopka&utm_campaign=main&article_id=1665&article_title=kak-media-prodjuser-v-49-let-zapustil-sobstvennyj-startap-na-zerokode">📚 Курсы</a></li>
</ul><script>
document.addEventListener('DOMContentLoaded', function() {
// State tracking
let isButtonVisible = true;
let areAdditionalItemsVisible = false;
let isTagsBlockOpen = false;
// Функция для определения Safari
const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
function handleResponsiveMenu() {
const buttonsList = $('.buttons-block__list');
const moreTermsButton = '<li class="menu-item menu-item__btn menu-item__btn-more-term"><span class="global-underline">больше рубрик</span></li>';
const moreTermsIcon = '<li class="menu-item menu-item__btn menu-item__btn-more-term-icon"><span class="term-icon"></span></li>';
// Очищаем старые элементы
$('.menu-item__btn-free, .menu-item__btn-more-term, .menu-item__btn-more-term-icon').remove();
$('.buttons-block__list>li').removeClass('hidden');
// Обрабатываем отображение кнопки "меньше рубрик" в зависимости от разрешения
if (window.innerWidth < 1025) {
// На мобильной версии кнопка "меньше рубрик" видна
$('.tags-block__btn-less-term').removeClass('hidden');
} else {
// На десктопной версии кнопка "меньше рубрик" скрыта
$('.tags-block__btn-less-term').addClass('hidden');
}
if (window.innerWidth < 1025) {
// Мобильная версия - сохраняем старый функционал (без кнопки бесплатные курсы)
$('.buttons-block__list>li:nth-child(2)').after(moreTermsButton);
// Применяем состояние видимости дополнительных пунктов
if (!areAdditionalItemsVisible) {
$('.buttons-block__list>li:gt(2)').addClass('hidden');
}
// Обработчик клика по кнопке "больше рубрик" для мобильной версии
$('.menu-item__btn-more-term').off('click').on('click', function(e) {
e.preventDefault();
isButtonVisible = false;
areAdditionalItemsVisible = true;
$('.tags-block-2').removeClass('hidden');
$('.buttons-block__list>li:gt(2)').removeClass('hidden');
$(this).addClass('hidden');
});
} else {
// Десктопная версия - новый функционал с иконкой
buttonsList.append(moreTermsIcon);
// Обработчик клика по иконке для десктопной версии
$('.menu-item__btn-more-term-icon').off('click').on('click', function(e) {
e.preventDefault();
isTagsBlockOpen = !isTagsBlockOpen;
if (isTagsBlockOpen) {
// Открываем блок тегов
$('body').append('<div class="overlay"></div>');
$('.tags-block-2').removeClass('hidden');
$(this).addClass('active'); // Добавляем класс для стилизации активной иконки
} else {
// Закрываем блок тегов
$('.tags-block-2').addClass('hidden');
$('.overlay').remove();
$(this).removeClass('active');
}
});
}
// Для Safari добавляем дополнительную проверку
if (isSafari) {
requestAnimationFrame(() => {
// Восстанавливаем состояние видимости кнопки только для мобильной версии
if (window.innerWidth < 1025 && !isButtonVisible) {
$('.menu-item__btn-more-term').addClass('hidden');
}
});
} else {
// Для остальных браузеров и мобильной версии
if (window.innerWidth < 1025 && !isButtonVisible) {
$('.menu-item__btn-more-term').addClass('hidden');
}
}
}
// Сохраняем оригинальный обработчик кнопки "меньше рубрик"
$(document).off('click', '.tags-block__btn-less-term').on('click', '.tags-block__btn-less-term', function(e) {
e.preventDefault(); // Предотвращаем возможные побочные эффекты в Safari
isButtonVisible = true;
areAdditionalItemsVisible = false;
$('.tags-block-2').addClass('hidden');
$('.overlay').remove();
$('.menu-item__btn-more-term').removeClass('hidden');
if (window.innerWidth < 1025) {
$('.buttons-block__list>li:gt(2)').addClass('hidden');
}
});
// Обработчик клика по оверлею
$(document).off('click', '.overlay').on('click', '.overlay', function() {
$('.tags-block-2').addClass('hidden');
$('.overlay').remove();
isTagsBlockOpen = false;
$('.menu-item__btn-more-term-icon').removeClass('active');
});
// Обработчик изменения ориентации экрана
window.addEventListener('orientationchange', function() {
// Увеличиваем задержку для Safari
const delay = isSafari ? 300 : 100;
setTimeout(function() {
handleResponsiveMenu();
// Сбрасываем состояние при смене ориентации
if (window.innerWidth >= 1025) {
isTagsBlockOpen = false;
}
}, delay);
});
// Обработчик изменения размера окна с debounce
let resizeTimeout;
window.addEventListener('resize', function() {
clearTimeout(resizeTimeout);
// Увеличиваем задержку для Safari
const delay = isSafari ? 400 : 250;
resizeTimeout = setTimeout(function() {
handleResponsiveMenu();
// Сбрасываем состояние при переходе между мобильной и десктопной версиями
if (window.innerWidth >= 1025) {
isTagsBlockOpen = false;
}
}, delay);
});
// Принудительно запускаем обработчик после полной загрузки страницы
window.addEventListener('load', function() {
handleResponsiveMenu();
});
// Инициализация
handleResponsiveMenu();
});
</script>
</div>
<div class="tags-block-2 hidden">
<div>
<a class="tags-block__item-2" href="https://ya.zerocoder.ru/tag/neural/">#Нейросети</a>
<a class="tags-block__item-2" href="https://ya.zerocoder.ru/tag/cases/">#Кейсы</a>
<a class="tags-block__item-2" href="https://ya.zerocoder.ru/tag/guides/">#Гайды</a>
<a class="tags-block__item-2" href="https://ya.zerocoder.ru/tag/reviews/">#Интересное</a>
<a class="tags-block__item-2" href="https://ya.zerocoder.ru/tag/tools/">#Инструменты</a>
<a class="tags-block__item-2" href="https://ya.zerocoder.ru/tag/avtomatizatsiia/">#Автоматизация</a>
<a class="tags-block__item-2" href="https://ya.zerocoder.ru/tag/dliabizniesa/">#Для Бизнеса</a>
<a class="tags-block__item-2" href="https://ya.zerocoder.ru/tag/dlya-detej/">#Для детей</a>
<a class="tags-block__item-2" href="https://ya.zerocoder.ru/tag/analitika/">#Аналитика</a>
<a class="tags-block__item-2" href="https://ya.zerocoder.ru/tag/veb-razrabotka/">#Веб-разработка</a>
<a class="tags-block__item-2" href="https://ya.zerocoder.ru/tag/mobilnaya-razrabotka/">#Мобильная разработка</a>
<a class="tags-block__item-2" href="https://ya.zerocoder.ru/tag/optimizatsiia/">#Оптимизация</a>
<a class="tags-block__item-2" href="https://ya.zerocoder.ru/tag/bazy-dannykh/">#Базы данных</a>
<a class="tags-block__item-2" href="https://ya.zerocoder.ru/tag/news/">#Новости</a>
<span class="tags-block__btn-less-term global-underline">меньше рубрик</span>
<script>
$('.tags-block__btn-less-term').on('click',(e)=>{
$('.tags-block-2').addClass('hidden');
$('.overlay').remove();
$('.menu-item__btn-more-term').removeClass('hidden')
if(window.innerWidth<1025){
console.log($('.buttons-block__list>li:gt(3)'))
$('.buttons-block__list>li:gt(3)').addClass('hidden')
}
})
</script>
</div>
</div>
<div class="breadcrumbs-block" style="display:none;">
<p id="breadcrumbs"><span><span><a href="https://ya.zerocoder.ru/">Главная страница</a></span> » <span class="breadcrumb_last" aria-current="page">Как медиа-продюсер в 49 лет запустил собственный стартап на зерокоде</span></span></p> </div>
<div class="tags-block" style="display:none;">
<a class="tags-block__item" href="https://ya.zerocoder.ru/tag/neural/">#Нейросети</a>
<a class="tags-block__item" href="https://ya.zerocoder.ru/tag/cases/">#Кейсы</a>
<a class="tags-block__item" href="https://ya.zerocoder.ru/tag/guides/">#Гайды</a>
<a class="tags-block__item" href="https://ya.zerocoder.ru/tag/reviews/">#Интересное</a>
<span class="tags-block__btn-more">Больше тэгов</span>
<a class="tags-block__item tags-block__item_hidden" href="https://ya.zerocoder.ru/tag/tools/">#Инструменты</a>
<a class="tags-block__item tags-block__item_hidden" href="https://ya.zerocoder.ru/tag/avtomatizatsiia/">#Автоматизация</a>
<a class="tags-block__item tags-block__item_hidden" href="https://ya.zerocoder.ru/tag/dliabizniesa/">#Для Бизнеса</a>
<a class="tags-block__item tags-block__item_hidden" href="https://ya.zerocoder.ru/tag/dlya-detej/">#Для детей</a>
<a class="tags-block__item tags-block__item_hidden" href="https://ya.zerocoder.ru/tag/analitika/">#Аналитика</a>
<a class="tags-block__item tags-block__item_hidden" href="https://ya.zerocoder.ru/tag/veb-razrabotka/">#Веб-разработка</a>
<a class="tags-block__item tags-block__item_hidden" href="https://ya.zerocoder.ru/tag/mobilnaya-razrabotka/">#Мобильная разработка</a>
<a class="tags-block__item tags-block__item_hidden" href="https://ya.zerocoder.ru/tag/optimizatsiia/">#Оптимизация</a>
<a class="tags-block__item tags-block__item_hidden" href="https://ya.zerocoder.ru/tag/bazy-dannykh/">#Базы данных</a>
<a class="tags-block__item tags-block__item_hidden" href="https://ya.zerocoder.ru/tag/news/">#Новости</a>
<span class="tags-block__btn-less">Меньше тэгов</span>
</div>
<!-- <script>
console.log('window.innerWidth')
console.log(window.innerWidth)
if(window.innerWidth>1025){
$('.tags-block__item').removeClass('tags-block__item_hidden')
$('.tags-block__btn-more').css('display','none')
}
$('.tags-block__btn-more').on('click',(e)=>{
$('.tags-block__item').removeClass('tags-block__item_hidden')
$('.tags-block__btn-less').css('display','inline')
$('.tags-block__btn-more').css('display','none')
})
$('.tags-block__btn-less').on('click',(e)=>{
$('.tags-block__item:gt(3)').addClass('tags-block__item_hidden')
$('.tags-block__btn-less').css('display','none')
$('.tags-block__btn-more').css('display','inline')
})
</script> -->
<!-- <div id="search-section" class="search-section">
<div id="search-content" class="search-content ajax-search-container">
<span class="search-text">Главная — поиск по статьям</span>
<form class="search-form ajax-search-form" onsubmit="return false">
<input id="search-input" class="ajax-search-field" name="s" type="text" placeholder="поиск по статьям...">
<input type="hidden" name="action" value="search_action">
<button class="search-btn" id="search-button" type="button">
найти
</button>
</form>
<div id="search-results" class="search-results ajax-search-results"></div>
</div>
<div id="search-overlay" class="search-overlay"></div>
</div> -->
</header>
<main class="global-main">
<progress class="post-progress"></progress>
<div class="breadcrubms">
<a href="/">Главная</a>
<a href="">— Как медиа-продюсер в 49 лет запустил собственный стартап на зерокоде</a>
</div>
<article class="post-section">
<div class="post-header item is-hero is-first is-image">
<div class="item-container global-color">
<div class="item-image global-image global-color">
<img src="https://ya.zerocoder.ru/wp-content/uploads/2023/03/27-1-1-1024x576.png" alt="Как медиа-продюсер в 49 лет запустил собственный стартап на зерокоде">
</div>
<div class="item-content">
<div class="item-meta global-meta">
<div class="post-dates">
<span class="published-date">
Опубликовано: 15 сентября 2022 г. </span>
<span class="updated-date">
Обновлено: 23 августа 2024 г. </span>
</div>
by <span class="global-author-link"><a href="https://ya.zerocoder.ru/author/admin/" title="Записи Редакция" rel="author">Редакция</a></span>
<span class="global-reading">— не больше 5 мин</span>
</div>
<h1 class="item-title">Как медиа-продюсер в 49 лет запустил собственный стартап на зерокоде</h1>
<script type="application/ld+json">{
"@context": "https://schema.org",
"@type": "Article",
"@id": "https://ya.zerocoder.ru/kak-miedia-prodiusier-v-49-liet-zapustil-sobstviennyi-startap-na-zierokodie/#article",
"inLanguage": "ru",
"url": "https://ya.zerocoder.ru/kak-miedia-prodiusier-v-49-liet-zapustil-sobstviennyi-startap-na-zierokodie/",
"mainEntityOfPage": "https://ya.zerocoder.ru/kak-miedia-prodiusier-v-49-liet-zapustil-sobstviennyi-startap-na-zierokodie/",
"headline": "Как медиа-продюсер в 49 лет запустил собственный стартап на зерокоде",
"description": "Зерокодинг — это создание сайтов и приложений без навыков программирования. IT-продукт можно собрать самостоятельно с помощью специальных no-code инструментов. Такой подход позволяет быстро проверять продуктовые и бизнес-гипотезы и тестировать прототипы,…",
"datePublished": "2022-09-15T18:36:38+03:00",
"dateModified": "2024-08-23T19:28:24+03:00",
"image": {
"@type": "ImageObject",
"url": "https://ya.zerocoder.ru/wp-content/uploads/2023/03/27-1-1.png",
"width": 1280,
"height": 720
},
"author": {
"@type": "Person",
"name": "Редакция",
"url": "https://ya.zerocoder.ru/author/admin/"
},
"articleSection": [
"Adalo",
"Кейсы",
"Наши Студенты"
],
"articleBody": "Зерокодинг — это создание сайтов и приложений без навыков программирования. IT-продукт можно собрать самостоятельно с помощью специальных no-code инструментов. Такой подход позволяет быстро проверять продуктовые и бизнес-гипотезы и тестировать прототипы, экономя время и деньги на классической разработке. Дмитрий Амелин больше 20 лет работает продакшн продюсером разного мультимедийного контента: от выставок до фильмов. У него есть технические навыки в видеомонтаже, компьютерной графике и умение выстраивать процессы для решения технических задач. Но самостоятельным программированием и созданием IT-продуктов Дмитрий не занимался. Несколько лет назад у него появилась идея создать приложение для организации досуга. Дмитрий пошёл классическим путём и собрал команду разработчиков. На реализацию потратили год и больше миллиона рублей, но запуск так и не состоялся. Когда Дмитрий узнал о зерокодинге, он из любопытства…",
"potentialAction": {
"@type": "ReadAction",
"target": "https://ya.zerocoder.ru/kak-miedia-prodiusier-v-49-liet-zapustil-sobstviennyi-startap-na-zierokodie/"
}
}</script> <div class="item-tags-n-tab-of-cont">
<div class="item-tags-n-tab-of-cont__header">
<div class="item-tab-of-cont__title">Содержание
<span class="item-tab-of-cont__title-chevron item-tab-of-cont__title-chevron_down">
<svg width="13" height="10" viewBox="0 0 13 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M11.5293 9.29211L6.65673 2.42629L1.25879 9.29211" stroke="#131313" stroke-width="2"/></svg> </span>
</div>
<div class="item-tags global-tags">
<a href="https://ya.zerocoder.ru/tag/adalo/" class="global-tags-hash-sign">Adalo</a>
<a href="https://ya.zerocoder.ru/tag/cases/" class="global-tags-hash-sign">Кейсы</a>
<a href="https://ya.zerocoder.ru/tag/nashi-studenty/" class="global-tags-hash-sign">Наши Студенты</a>
</div>
</div>
<ul class="item-tab-of-cont__list hidden-soft">
<li class="item-tab-of-cont__item-h2">Как появилась идея проекта</li>
<li class="item-tab-of-cont__item-h2">Почему отказались от разработки на коде</li>
<li class="item-tab-of-cont__item-h2">Как пришли к зерокоду</li>
<li class="item-tab-of-cont__item-h2">Как шла работа над проектом на зерокоде</li>
<li class="item-tab-of-cont__item-h2">С какими трудностями столкнулись</li>
<li class="item-tab-of-cont__item-h2">Сколько человек участвовали в разработке на зерокоде</li>
<li class="item-tab-of-cont__item-h2">Что получилось в итоге</li>
<li class="item-tab-of-cont__item-h2">Что под капотом</li>
<li class="item-tab-of-cont__item-h2">Что дальше</li>
</ul>
</div>
<script>
$('.item-tab-of-cont__title').on('click',(e)=>{
if($('.item-tab-of-cont__title-chevron').hasClass('item-tab-of-cont__title-chevron_down')){
$('.item-tab-of-cont__title-chevron').removeClass('item-tab-of-cont__title-chevron_down')
$('.item-tab-of-cont__list').removeClass('hidden-soft')
}else{
$('.item-tab-of-cont__title-chevron').addClass('item-tab-of-cont__title-chevron_down')
$('.item-tab-of-cont__list').addClass('hidden-soft')
}
});
</script>
<script>
ym(74672059,'reachGoal','pageview_mobdev');
</script>
<script>
ym(74672059,'reachGoal','pageview_beginners');
</script>
</div>
</div>
</div>
<div class="leyout">
<div class="layout-content">
<div class="post-content">
<!-- Отладка: show1=NULL (тип: NULL), show1_disabled=false, show2=NULL (тип: NULL), show2_disabled=false, h2_count=9 --><!-- Проверка FreeCourse прошла успешно --><!-- Добавлен блок для отображения: пайтон --><!-- Добавлен блок для отображения: нейросети_2 --><!-- Добавлен блок для отображения: нейросети_1 --><!-- Проверка DoubleCourse прошла успешно --><!-- Добавлен блок для отображения: перплексити2 --><!-- Добавлен блок для отображения: нейросети_и_бизнес_1 --><!-- FreeCourse блок вставлен перед вторым h2 --><p data-order="start"><em>Зерокодинг — это создание сайтов и приложений без навыков программирования. IT-продукт можно собрать самостоятельно с помощью специальных no-code инструментов. Такой подход позволяет быстро проверять продуктовые и бизнес-гипотезы и тестировать прототипы, экономя время и деньги на классической разработке.</em></p>
<p data-order="p_1">Дмитрий Амелин больше 20 лет работает продакшн продюсером разного мультимедийного контента: от выставок до фильмов. У него есть технические навыки в видеомонтаже, компьютерной графике и умение выстраивать процессы для решения технических задач. Но самостоятельным программированием и созданием IT-продуктов Дмитрий не занимался.</p>
<p data-order="p_2">Несколько лет назад у него появилась идея создать приложение для организации досуга. Дмитрий пошёл классическим путём и собрал команду разработчиков. На реализацию потратили год и больше миллиона рублей, но запуск так и не состоялся.</p>
<p data-order="p_3">Когда Дмитрий узнал о зерокодинге, он из любопытства сделал прототип приложения за неделю и понял, что этот способ позволит довести проект до публикации в App Store и Google Play с минимальными затратами. Так и произошло.</p>
<p data-order="p_4">Рассказываем о том, как реализовать свою идею с помощью зерокода и запустить IT-стартап без опыта.</p>
<h2 data-order="h2_1" id="%D0%BA%D0%B0%D0%BA-%D0%BF%D0%BE%D1%8F%D0%B2%D0%B8%D0%BB%D0%B0%D1%81%D1%8C-%D0%B8%D0%B4%D0%B5%D1%8F-%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0">Как появилась идея проекта</h2>
<p data-order="p_5">Идея создать своё приложение появилась в начале 2019 года.</p>
<p data-order="p_6">Дмитрий часто ездил по России из-за работы в кинопроизводстве и как автопутешественник. В большинстве мест, где он бывал, не было развитой инфраструктуры. Поэтому первоначально планировалось создать туристический планер.</p>
<p data-order="p_7">По задумке это было бы приложение, в котором можно спланировать туристические активности, просчитать автомобильную и пешую нагрузку и вступить в коммуникацию с местными жителями, чтобы попросить совета или помощи. Например: узнать о локальных экотропах, местах для стоянки или где можно зарядить телефон.</p>
<p data-order="p_8">Идея приложения показалась интересной друзьям Дмитрия, поэтому они согласились на финансовую поддержку проекта — разделили ежемесячные платежи по текущим расходам.</p>
<p data-order="p_9">Дальше был период обсуждения концепции будущего проекта и, как часто бывает, она изменилась на этапе проработки. В итоге первоначальная задумка эволюционировала в идею создать приложение, которое показывает досуговые мероприятия рядом с пользователем.</p>
<p data-order="p_10">Автор сравнивает суть приложения с супермаркетом. Когда пользователь не знает, чем конкретно хотел бы заняться, он может просмотреть все предложения и выбрать. Главным стартовым фильтром при выборе является локация пользователя.</p>
<p data-order="p_11">За основу было решено взять простой и понятный интерфейс с привычной картой и отметками. Для сбора информации хотели использовать парсинг.</p>
<!-- Выводим блок бесплатного курса с ID: пайтон, Приоритет: 5 -->
<!--Блок о бесплатном курсе-->
<div class="free-course-block">
<div class="free-course-block__container_m">
<div class="free-course-block__top-content-wrap">
<div class="free-course-block__title"><span class="global-underline">ОНЛАЙН-ПРАКТИКУМ</span></div>
<div class="free-course-block__text">ЗАПУСК DEEPSEEK R1 ЛОКАЛЬНО НА СВОЕМ КОМПЬЮТЕРЕ</div>
</div>
<div class="free-course-block__image-wrap"><img class="free-course-block__image" src="https://ya.zerocoder.ru/wp-content/uploads/2024/12/free-course-img.png"></div>
<div class="free-course-block__wrap"><div class="free-course-block__subtitle">ЧТО БУДЕТ НА ОБУЧЕНИИ?</div><ul class="free-course-block__list"><li class="free-course-block__list-item">ПОКАЖЕМ, КАК РАЗВЕРНУТЬ МОДЕЛЬ DEEPSEEK R1 ПРЯМО НА СВОЁМ КОМПЬЮТЕРЕ </li><li class="free-course-block__list-item">Где и как применять? Потестируем модель после установки на разных задачах</li><li class="free-course-block__list-item">Как дообучить модель под себя?</li></ul></div>
<div class="free-course-block__button__wrap"><a class="free-course-block__button" href="https://zerocoder.ru/deepseek-r1-lesson?utm_source=magazine&utm_medium=knopka-tekst&utm_campaign=deepseekr1singl&article_id=1665&article_title=kak-media-prodjuser-v-49-let-zapustil-sobstvennyj-startap-na-zerokode" data-block-id="пайтон">Участвовать бесплатно</a></div>
</div>
</div>
<h2 data-order="h2_2" id="%D0%BF%D0%BE%D1%87%D0%B5%D0%BC%D1%83-%D0%BE%D1%82%D0%BA%D0%B0%D0%B7%D0%B0%D0%BB%D0%B8%D1%81%D1%8C-%D0%BE%D1%82-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8-%D0%BD%D0%B0-%D0%BA%D0%BE%D0%B4%D0%B5">Почему отказались от разработки на коде</h2>
<p data-order="p_12">Полгода ушло на разработку дизайна и сбор команды разработчиков. Тестовый запуск планировался в феврале 2020 года на пользователей из Москвы.</p>
<p data-order="p_13">Из-за пандемии все офлайн-мероприятия отменили, а команда экстренно приняла решение переделать приложение под онлайн-мероприятия.</p>
<p data-order="p_14">Ещё через полгода стало понятно, что сменить фокус с офлайн на онлайн не просто. Это принципиально другой рынок. Нужны большие вложения в разработку рекомендательных алгоритмов, машинного обучения и т.д.</p>
<p data-order="p_15">Ресурсы автора проекта и мотивация разработчиков закончились, а результата всё ещё не было.</p>
<p data-order="p_16">На тот момент уже было потрачено около 1 млн рублей и время команды. Поэтому проект поставили на паузу.</p>
<h2 data-order="h2_3" id="%D0%BA%D0%B0%D0%BA-%D0%BF%D1%80%D0%B8%D1%88%D0%BB%D0%B8-%D0%BA-%D0%B7%D0%B5%D1%80%D0%BE%D0%BA%D0%BE%D0%B4%D1%83">Как пришли к зерокоду</h2>
<p data-order="p_17">Несмотря на сложности, Дмитрий не отказался от идеи реализовать проект.</p>
<p data-order="p_18">К концу 2020 года решили возобновить работу и вернуться к фокусу на офлайн-мероприятия. К тому моменту сделали анализ аудитории и предполагаемых конкурентов. Результаты по-прежнему подтверждали, что на рынке действительно нет подобного продукта.</p>
<p data-order="p_19">Но оказалось, что результаты прошлой разработки уже успели устареть меньше, чем за год. То есть всё нужно было начинать практически с нуля.</p>
<p data-order="p_20">До перезапуска работы Дмитрий решил пройти обучение по управлению IT-проектами, чтобы глубже погрузиться в процесс разработки, эффективнее организовать команду и говорить с разработчиками на одном языке.</p>
<p data-order="p_21">На курсах, которые он проходил, приглашенным спикером был Вадик Михалёв. Он рассказал про зерокодинг и несколько инструментов: Glide, Adalo и Integromat.</p>
<p data-order="p_22">Дмитрия заинтересовал этот подход и он решил изучить инструменты самостоятельно. На тот момент было непонятно, сколько ещё ресурсов нужно будет потратить на разработку. К тому же, сыграло элементарное любопытство.</p>
<p data-order="p_23">Из трёх инструментов сразу понравился Adalo интуитивно понятным интерфейсом и визуальным сходством с Figma. Дмитрий собрал первый прототип приложения на Adalo за неделю.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><a href="https://ya.zerocoder.ru/wp-content/uploads/2023/03/Frame-937-1.png" data-fancybox="gallery" data-caption=""><img data-order="img_1" fetchpriority="high" decoding="async" class="kg-image" src="https://ya.zerocoder.ru/wp-content/uploads/2023/03/Frame-937-1.png" sizes="(min-width: 720px) 720px" srcset="https://ya.zerocoder.ru/wp-content/uploads/2023/03/Frame-937-1-1.png 600w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/Frame-937-1-2.png 1000w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/Frame-937-1.png 1280w" alt="" width="1280" height="720" /></a><figcaption><em>Первая версия приложения на Adalo</em></figcaption></figure>
<h2 data-order="h2_4" id="%D0%BA%D0%B0%D0%BA-%D1%88%D0%BB%D0%B0-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0-%D0%BD%D0%B0%D0%B4-%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%BE%D0%BC-%D0%BD%D0%B0-%D0%B7%D0%B5%D1%80%D0%BE%D0%BA%D0%BE%D0%B4%D0%B5">Как шла работа над проектом на зерокоде</h2>
<p data-order="p_24">После сборки прототипа Дмитрий понял, что зерокод — решение для его проекта. Но к приложению нужно было прикрутить мощный функционал: по сбору данных, по их обработке и синхронизации.</p>
<p data-order="p_25">Пришлось тратить много времени на самостоятельное изучение целого набора различных инструментов и работе с базами данных, которые по сути — фундамент всего продукта. К базам данных приходилось возвращаться неоднократно, чтобы доработать их.</p>
<p data-order="p_26">По словам Дмитрия, курс по мобильной разработке помог бы сэкономить время и быстрее получить нужные навыки.</p>
<p data-order="p_27">В итоге работу над проектом вели около года. Менялись названия, дорабатывали функционал и даже несколько раз полностью переделывали дизайн.</p>
<h2 data-order="h2_5" id="%D1%81-%D0%BA%D0%B0%D0%BA%D0%B8%D0%BC%D0%B8-%D1%82%D1%80%D1%83%D0%B4%D0%BD%D0%BE%D1%81%D1%82%D1%8F%D0%BC%D0%B8-%D1%81%D1%82%D0%BE%D0%BB%D0%BA%D0%BD%D1%83%D0%BB%D0%B8%D1%81%D1%8C">С какими трудностями столкнулись</h2>
<p data-order="p_28">Сам процесс разработки занял примерно 3 месяца, остальные 9 месяцев — исследования, тестирования и улучшения. Во время тестирования находили проблемы, например: какие-то элементы абсолютно по-разному работали на ios и android, а то что «летало» на компьютере, сильно тормозило на некоторых смартфонах.</p>
<blockquote class="kg-blockquote-alt"><p data-order="p_29">Зерокодинговые инструменты помогают получить первые результаты с минимальными затратами и без опыта в IT. Но чтобы развивать навыки и сам продукт нужно погружаться в них глубже.</p></blockquote>
<p data-order="p_30">На каждом новом этапе Дмитрию нужны были всё новые и новые компетенции, поэтому он обрастал знаниями, в том числе и из области классической разработки. 70% времени работы над приложением ушло на самообучение и освоение новых IT-инструментов.</p>
<h2 data-order="h2_6" id="%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE-%D1%87%D0%B5%D0%BB%D0%BE%D0%B2%D0%B5%D0%BA-%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%B2%D0%BE%D0%B2%D0%B0%D0%BB%D0%B8-%D0%B2-%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B5-%D0%BD%D0%B0-%D0%B7%D0%B5%D1%80%D0%BE%D0%BA%D0%BE%D0%B4%D0%B5">Сколько человек участвовали в разработке на зерокоде</h2>
<p data-order="p_31">Вёрсткой приложения в Adalo Дмитрий занимался сам.</p>
<p data-order="p_32">Ещё до запуска проекта обязанности непосредственно по разработке планировалось передать техническому директору. Дмитрий хотел сосредоточиться на привычной роли продюсера.</p>
<p data-order="p_33">В какой-то момент такой специалист пришёл в команду. Но в это время продукт активно разрастался, поэтому тогда не получилось эффективно передать другому человеку всю информацию и идеи по разработке авторского продукта.</p>
<p data-order="p_34">К тому же зарплата техдира — это дополнительные расходы — 50 евро в час и через несколько месяцев Дмитрий вернулся к совмещению обязанностей продюсера и главного и единственного разработчика.</p>
<h2 data-order="h2_7" id="%D1%87%D1%82%D0%BE-%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D0%BB%D0%BE%D1%81%D1%8C-%D0%B2-%D0%B8%D1%82%D0%BE%D0%B3%D0%B5">Что получилось в итоге</h2>
<p data-order="p_35">Финальная версия приложения доступна для скачивания и называется <a href="https://previewer.adalo.com/30b9249c-17de-4533-b936-bcedd5b2a445">«Мероприятия района»</a>.</p>
<p data-order="p_36">«Мероприятия района» — это афиша актуальных мероприятий Тверского района Москвы.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><a href="https://ya.zerocoder.ru/wp-content/uploads/2023/03/197-1.png" data-fancybox="gallery" data-caption=""><img data-order="img_2" decoding="async" class="kg-image" src="https://ya.zerocoder.ru/wp-content/uploads/2023/03/197-1.png" sizes="(min-width: 720px) 720px" srcset="https://ya.zerocoder.ru/wp-content/uploads/2023/03/197-1-1.png 600w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/197-1-2.png 1000w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/197-1-3.png 1600w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/197-1-4.png 2400w" alt="" width="2000" height="1125" /></a><figcaption><em>Экраны приложения «Мероприятия района»</em></figcaption></figure>
<p data-order="p_37">В приложении собирается информация о более 2 000 мероприятий в месяц. Для сравнения: у Kudago примерно то же количество мероприятий в месяц, но по всей Москве, а не в пределах одного района.</p>
<p data-order="p_38">Информация о 80% мероприятий есть только на сайтах организаторов. Но часто пользователю трудно ориентироваться на этих ресурсах.</p>
<p data-order="p_39">Цель приложения — соединить локальную аудиторию и организаторов локальных мероприятий. С приложением пользователям не нужно тратить часы на самостоятельный поиск информации, а организаторам искать способы продвижения среди целевой аудитории.</p>
<p data-order="p_40">У «Мероприятий района» есть две основные категории пользователей и две дополнительные роли для команды. То есть всего четыре разных интерфейса:</p>
<p data-order="p_41"><strong>1. Клиентский интерфейс в мобильном приложении</strong></p>
<p data-order="p_42">В интерфейсе доступны списки мероприятий поблизости в заданный временной период. Есть фильтры и возможность прочитать информацию о мероприятии и организаторе.</p>
<p data-order="p_43">Для использования приложения не требуется регистрация. Но чтобы подписаться на организатора или добавить мероприятие в избранное, нужно авторизоваться.</p>
<p data-order="p_44"><strong>2. Авторский интерфейс в веб-приложении</strong></p>
<p data-order="p_45">Интерфейс для организаторов, чтобы публиковать информацию о мероприятиях. В зависимости от выбора формата мероприятия (разовое, повторяющееся, сеанс и т.д.) запускаются разные сценарии и авторам открываются разные информационные блоки для заполнения. Вся информация сначала проверяется на корректность, а после публикуется.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><a href="https://ya.zerocoder.ru/wp-content/uploads/2023/03/198-1.png" data-fancybox="gallery" data-caption=""><img data-order="img_3" decoding="async" class="kg-image" src="https://ya.zerocoder.ru/wp-content/uploads/2023/03/198-1.png" sizes="(min-width: 720px) 720px" srcset="https://ya.zerocoder.ru/wp-content/uploads/2023/03/198-1-1.png 600w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/198-1-2.png 1000w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/198-1-3.png 1600w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/198-1-4.png 2400w" alt="" width="2000" height="1125" /></a><figcaption><em>Авторский режим</em></figcaption></figure>
<p data-order="p_46"><strong>3. Модераторский функционал в отдельном веб-приложении</strong></p>
<p data-order="p_47">Модераторы контролируют информацию, которую размещают авторы, и блокируют автора, если пользователи пожаловались на неверные данные. Например, если бесплатное мероприятие оказалось платным.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><a href="https://ya.zerocoder.ru/wp-content/uploads/2023/03/199-1.png" data-fancybox="gallery" data-caption=""><img data-order="img_4" loading="lazy" decoding="async" class="kg-image" src="https://ya.zerocoder.ru/wp-content/uploads/2023/03/199-1.png" sizes="auto, (min-width: 720px) 720px" srcset="https://ya.zerocoder.ru/wp-content/uploads/2023/03/199-1-1.png 600w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/199-1-2.png 1000w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/199-1-3.png 1600w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/199-1-4.png 2400w" alt="" width="2000" height="1125" /></a><figcaption><em>Интерфейс модератора</em></figcaption></figure>
<p data-order="p_48"><strong>4. Редакторский функционал в отдельном веб-приложении</strong></p>
<p data-order="p_49">Редакторы также вносят в приложение информацию о новых мероприятиях. Для этого каждый редактор мониторит порядка 40 организаций. От первоначальной идеи с парсингом отказались, так как нужно прописывать сценарии отдельно под каждый источник данных. При этом всё равно придётся тратить время на «чистку» и форматирование информации.</p>
<p data-order="p_50">Также редакторы отслеживают статистику и реальную пользовательскую активность: сколько человек просматривали мероприятия и переходили по разным ссылкам в приложении.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><a href="https://ya.zerocoder.ru/wp-content/uploads/2023/03/200-1.png" data-fancybox="gallery" data-caption=""><img data-order="img_5" loading="lazy" decoding="async" class="kg-image" src="https://ya.zerocoder.ru/wp-content/uploads/2023/03/200-1.png" sizes="auto, (min-width: 720px) 720px" srcset="https://ya.zerocoder.ru/wp-content/uploads/2023/03/200-1-1.png 600w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/200-1-2.png 1000w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/200-1-3.png 1600w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/200-1-4.png 2400w" alt="" width="2000" height="1125" /></a><figcaption><em>Интерфейс редактора</em></figcaption></figure>
<p data-order="p_51">Всего в команде шесть человек. Вместе с Дмитрием над проектом работают два сооснователя — инвестор и второй продюсер, а также три редактора. Иногда роль редактора берут на себя остальные участники.</p>
<p data-order="p_52">В самом начале пути Дмитрий делал оценку стоимости запуска. На 2019 год собрать прототип стоило порядка 5 — 6 млн. рублей, а разработка, вывод на рынок и продвижение — 30 млн. рублей.</p>
<p data-order="p_53">За три года работы потратили порядка 6 млн. рублей. По словам Дмитрия, если бы сразу выбрали зерокод-подход, то уложились бы в 2 — 3 млн.</p>
<h2 data-order="h2_8" id="%D1%87%D1%82%D0%BE-%D0%BF%D0%BE%D0%B4-%D0%BA%D0%B0%D0%BF%D0%BE%D1%82%D0%BE%D0%BC">Что под капотом</h2>
<p data-order="p_54">Приложение сделано в Adalo — это несколько десятков связанных между собой экранов мобильного приложения и страниц веб-приложения.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><a href="https://ya.zerocoder.ru/wp-content/uploads/2023/03/Frame-938-1.png" data-fancybox="gallery" data-caption=""><img data-order="img_6" loading="lazy" decoding="async" class="kg-image" src="https://ya.zerocoder.ru/wp-content/uploads/2023/03/Frame-938-1.png" sizes="auto, (min-width: 720px) 720px" srcset="https://ya.zerocoder.ru/wp-content/uploads/2023/03/Frame-938-1-1.png 600w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/Frame-938-1-2.png 1000w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/Frame-938-1.png 1280w" alt="" width="1280" height="720" /></a><figcaption><em>Текущая версия приложения на Adalo</em></figcaption></figure>
<p data-order="p_55">Но функционала Adalo не хватает как для работы с базами данных, так и с отдельными характеристиками самих мероприятий. Например, в Adalo нельзя задать временной диапазон для сортировки мероприятий. А в приложении мероприятия делятся на утренние, дневные и вечерние. Кроме временного диапазона в таблице мероприятий собрано больше сотни характеристик. Поэтому дополнительно подключили базу данных Airtable через Intergromat.</p>
<p data-order="p_56">На Integromat выстроен большой объём функционала бэкенда, в том числе автомодерация, обработка изображений, модераторский функционал и т.д.</p>
<p data-order="p_57">Airtable подключили для сбора и анализа различной статистики. С помощью Integromat из приложения собирают данные по действиям пользователей, которые передаются в Airtable для анализа. Результаты используют для принятия маркетинговых решений.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><a href="https://ya.zerocoder.ru/wp-content/uploads/2023/03/Frame-939-1.png" data-fancybox="gallery" data-caption=""><img data-order="img_7" loading="lazy" decoding="async" class="kg-image" src="https://ya.zerocoder.ru/wp-content/uploads/2023/03/Frame-939-1.png" sizes="auto, (min-width: 720px) 720px" srcset="https://ya.zerocoder.ru/wp-content/uploads/2023/03/Frame-939-1-1.png 600w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/Frame-939-1-2.png 1000w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/Frame-939-1.png 1280w" alt="" width="1280" height="720" /></a><figcaption><em>Статистика, собранная с помощью Airtable и Intergromat</em></figcaption></figure>
<figure class="kg-card kg-image-card kg-card-hascaption"><a href=" _GHOST_URL__/content/images/2022/09/Frame-940--1-.png" data-fancybox="gallery" data-caption=""><img data-order="img_8" loading="lazy" decoding="async" class="kg-image" src=" _GHOST_URL__/content/images/2022/09/Frame-940--1-.png" sizes="auto, (min-width: 720px) 720px" srcset="https://ya.zerocoder.ru/wp-content/uploads/2023/03/Frame-940-1.png 600w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/Frame-940-1-1.png 1000w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/Frame-940-1-2.png 1280w" alt="" width="1280" height="720" /></a><figcaption><em>Подключенный Intergromat</em></figcaption></figure>
<p data-order="p_58">Ещё один инструмент, который подключен к приложению, — CloudConvert. Инструмент обрабатывает все фотографии, которые загружают авторы, и оптимизирует в единый формат.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><a href="https://ya.zerocoder.ru/wp-content/uploads/2023/03/Frame-941-1.png" data-fancybox="gallery" data-caption=""><img data-order="img_9" loading="lazy" decoding="async" class="kg-image" src="https://ya.zerocoder.ru/wp-content/uploads/2023/03/Frame-941-1.png" sizes="auto, (min-width: 720px) 720px" srcset="https://ya.zerocoder.ru/wp-content/uploads/2023/03/Frame-941-1-1.png 600w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/Frame-941-1-2.png 1000w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/Frame-941-1.png 1280w" alt="" width="1280" height="720" /></a><figcaption><em>Схема технической модерации мероприятий</em></figcaption></figure>
<h2 data-order="h2_9" id="%D1%87%D1%82%D0%BE-%D0%B4%D0%B0%D0%BB%D1%8C%D1%88%D0%B5">Что дальше</h2>
<p data-order="p_59">Приложение запустили в апреле 2022 года. Сейчас идёт стадия анализа и проверки трёх основных гипотез:</p>
<ol data-order="ol_1">
<li>У локальной аудитории есть потребность в продукте (продуктовая гипотеза).</li>
<li>У авторов есть потребность в новом канале продвижения среди локальной аудитории (продуктовая гипотеза).</li>
<li>Авторы готовы платить за публикацию информации о своих мероприятиях в приложении (гипотеза бизнес-модели).</li>
</ol>
<p data-order="p_60">Главный плюс зерокодинга — можно быстро вносить изменения в продукт и проверять гипотезы.</p>
<p data-order="p_61">Первые две гипотезы уже подтвердились. Чтобы проверить третью — нужно сгенерировать больше трафика.</p>
<p data-order="p_62">Если и третья гипотеза подтвердится, проект перейдёт на следующий этап — масштабирование, то есть выход за пределы района. Глобальная цель — создать маркетинговый инструмент продвижения на локальную аудиторию и выйти на международный рынок.</p>
<p data-order="p_63">Также в планах перенести приложение на FlutterFlow, чтобы усовершенствовать текущую версию. А после этапа пилотирования — вести дальнейшую разработку уже на коде.</p>
<p data-order="p_64">Сейчас Дмитрий всё-таки передал роль разработчика второму продюсеру проекта. Несмотря на гуманитарный бэкграунд коллеги (по специальности он учитель географии), у него получилось разобраться в Adalo буквально за месяц и даже обновить приложение, добавив новые функции и изменив дизайн интерфейса.</p>
<p data-order="p_65">Это ещё одно преимущество зерокод-подхода — можно быстро передать техническое ведение действующего IT-проекта другому человеку.</p>
<blockquote class="kg-blockquote-alt"><p data-order="p_66"><strong>Если ты хочешь попробовать мобильный зерокодинг, приходи на <a href="https://zerocoder.ru/mobile-intensive-1?utm_source=ya.zerocoder.ru&utm_medium=article&utm_campaign=nazerokodili&kak-miedia-prodiusier-v-49-liet-zapustil-sobstviennyi-startap-na-zierokodie/&article_id=1665&article_title=kak-media-prodjuser-v-49-let-zapustil-sobstvennyj-startap-na-zerokode">бесплатный 3-х дневный интенсив</a>, где ты попробуешь Glide и Adalo и создашь 2 настоящих приложения на них!</strong></p></blockquote>
<!-- Вывод двойного блока курсов в конце статьи -->
<!-- Выводим двойной блок курса с ID: перплексити2, Приоритет: 2 -->
<!--Двойной блок с курсами-->
<div class="double-course-block">
<div class="first-course-block__container">
<div class="first-course-block__title"><span class="global-underline">Большой практикум</span></div>
<span class="first-course-block__undertitle"><span class="global-underline">ЗАМЕНИ ВСЕ НЕЙРОСЕТИ НА ОДНУ — PERPLEXITY</span></span>
<div class="first-course-block__text">ПОКАЖЕМ НА КОНКРЕТНЫХ КЕЙСАХ</div>
<div class="first-course-block__subtitle"></div><ul class="first-course-block__list"><li class="first-course-block__list-item">Освой Perplexity и узнай, как пользоваться функционалом остальных ИИ в одном</li><li class="first-course-block__list-item">УЧАСТВОВАТЬ ЗА 0 РУБ.</li><li class="first-course-block__list-item">Расскажем, как получить подписку (240$) бесплатно</li></ul>
<a class="first-course-block__button" href="https://zerocoder.ru/big-workshop-on-perplexity-ai?utm_source=magazine&utm_medium=knopka-dvoinoi&utm_campaign=perplexity2&article_id=1665&article_title=kak-media-prodjuser-v-49-let-zapustil-sobstvennyj-startap-na-zerokode" data-block-id="перплексити2">Участвовать бесплатно</a>
</div>
<div class="second-course-block__container">
<div class="second-course-block__title"><span class="global-underline">ОНЛАЙН-ПРАКТИКУМ</span></div>
<div class="second-course-block__undertitle"><span class="global-underline"></span></div>
<div class="second-course-block__text">ЗАПУСК DEEPSEEK R1 ЛОКАЛЬНО НА СВОЕМ КОМПЬЮТЕРЕ</div>
<div class="second-course-block__subtitle">ЧТО БУДЕТ НА ОБУЧЕНИИ?</div><ul class="second-course-block__list"><li class="second-course-block__list-item">ПОКАЖЕМ, КАК РАЗВЕРНУТЬ МОДЕЛЬ DEEPSEEK R1 ПРЯМО НА СВОЁМ КОМПЬЮТЕРЕ </li></ul>
<a class="second-course-block__button" href="https://zerocoder.ru/deepseek-r1-lesson?utm_source=magazine&utm_medium=knopka-dvoinoi&utm_campaign=deepseekr1doble&article_id=1665&article_title=kak-media-prodjuser-v-49-let-zapustil-sobstvennyj-startap-na-zerokode" data-block-id="перплексити2">Участвовать бесплатно</a>
</div>
</div>
<div class="post-share-section">
<div class="post-share-wrap">
<a class="post-share-link" id="copy" data-clipboard-target="#copy-link" aria-label="Copy link icon"><svg role="img" viewBox="0 0 33 24" xmlns="http://www.w3.org/2000/svg"><path d="M27.3999996,13.4004128 L21.7999996,13.4004128 L21.7999996,19 L18.9999996,19 L18.9999996,13.4004128 L13.3999996,13.4004128 L13.3999996,10.6006192 L18.9999996,10.6006192 L18.9999996,5 L21.7999996,5 L21.7999996,10.6006192 L27.3999996,10.6006192 L27.3999996,13.4004128 Z M12,20.87 C7.101,20.87 3.13,16.898 3.13,12 C3.13,7.102 7.101,3.13 12,3.13 C12.091,3.13 12.181,3.139 12.272,3.142 C9.866,5.336 8.347,8.487 8.347,12 C8.347,15.512 9.866,18.662 12.271,20.857 C12.18,20.859 12.091,20.87 12,20.87 Z M20.347,0 C18.882,0 17.484,0.276 16.186,0.756 C14.882,0.271 13.473,0 12,0 C5.372,0 0,5.373 0,12 C0,18.628 5.372,24 12,24 C13.471,24 14.878,23.726 16.181,23.242 C17.481,23.724 18.88,24 20.347,24 C26.975,24 32.347,18.628 32.347,12 C32.347,5.373 26.975,0 20.347,0 Z"/></svg></a>
<small class="share-link-info">Ссылка скопирована</small>
</div>
<input type="text" value="https%3A%2F%2Fya.zerocoder.ru%2Fkak-miedia-prodiusier-v-49-liet-zapustil-sobstviennyi-startap-na-zierokodie%2F" id="copy-link" aria-label="Copy link input">
</div>
</div>
</div>
<div class="layout-sidebar">
<div class="banner" data-banner-id="">
<a class="banner" data-banner-id="" target="_blank" href="https://zerocoder.ru/overview-workshop-new-neuro?utm_source=magazine&utm_medium=baner&utm_campaign=deepseekqwen&article_id=1665&article_title=kak-media-prodjuser-v-49-let-zapustil-sobstvennyj-startap-na-zerokode">
<img class="desktop-image" src="https://ya.zerocoder.ru/wp-content/uploads/2025/05/ai-model-22_05.svg" alt="">
<img class="mobile-image" src="https://ya.zerocoder.ru/wp-content/uploads/2025/05/ai-model-22_05-1.svg" alt="">
</a>
</div>
</div>
<!-- <script>
document.addEventListener("DOMContentLoaded", function() {
var modalbanner = document.getElementById("popup-form-19");
var openModalFormButtons = document.querySelectorAll(".openModalFormBtnBanner");
var bodyElement = document.querySelector("body");
var closeBtn = document.getElementsByClassName("close")[0];
// Проверяем существование всех необходимых элементов
if (!modalbanner) {
console.error("Модальное окно не найдено: popup-form-19");
return;
}
if (!bodyElement) {
console.error("Body элемент не найден");
return;
}
if (!closeBtn) {
console.error("Кнопка закрытия не найдена (класс 'close')");
// Можно попробовать альтернативные селекторы
closeBtn = modalbanner.querySelector(".close") ||
modalbanner.querySelector("[data-dismiss]") ||
modalbanner.querySelector(".modal-close");
}
function openModalFormButton() {
modalbanner.classList.add("open");
bodyElement.classList.add("lock");
}
function closeModalFormButton() {
modalbanner.classList.remove("open");
bodyElement.classList.remove("lock");
}
// Добавляем обработчики для кнопок открытия
if (openModalFormButtons.length > 0) {
openModalFormButtons.forEach(function(button) {
button.addEventListener("click", openModalFormButton);
});
} else {
console.warn("Кнопки открытия модального окна не найдены (класс 'openModalFormBtnBanner')");
}
// Добавляем обработчик для кнопки закрытия только если она найдена
if (closeBtn) {
closeBtn.addEventListener("click", closeModalFormButton);
}
// Закрытие по клику на фон (раскомментируйте если нужно)
window.addEventListener("click", function(event) {
// console.log(event.target);
// if (event.target === modalbanner) {
// closeModalFormButton();
// }
});
// Альтернативный способ - поиск кнопки закрытия внутри модального окна
var alternativeCloseBtn = modalbanner.querySelector(".close, [data-dismiss], .modal-close, .btn-close");
if (alternativeCloseBtn && alternativeCloseBtn !== closeBtn) {
alternativeCloseBtn.addEventListener("click", closeModalFormButton);
}
// Закрытие по ESC
document.addEventListener("keydown", function(event) {
if (event.key === "Escape" && modalbanner.classList.contains("open")) {
closeModalFormButton();
}
});
});
</script> --> </div>
</article>
<div class="free-course-block" style="display:none;"></div>
<div class="post-related global-special">
<h2><span>Вам точно понравится</span></h2>
<article class="item-25082">
<div class="h3"><a href="https://ya.zerocoder.ru/tgp-kak-polzovatsya-higgsfield-ai-poshagovyj-obzor-i-sovety/" class="global-underline">Как пользоваться Higgsfield AI: пошаговый обзор и советы</a></h3>
<div class="global-meta">
Артём Панфёров </div>
</article><article class="item-9364">
<div class="h3"><a href="https://ya.zerocoder.ru/pgt-bubble-vs-webflow-instrumenty-dlya-sozdaniya-veb-prilozhenij-dizajna-v-sravnenii/" class="global-underline">Bubble vs. Webflow: инструменты для создания веб-приложений, дизайна в сравнении</a></h3>
<div class="global-meta">
Редакция </div>
</article><article class="item-13887">
<div class="h3"><a href="https://ya.zerocoder.ru/pgt-chto-takoe-spatial-computing-revoljuciya-v-opyte-vzaimodejstviya-s-cifrovym-kontentom/" class="global-underline">Что такое Spatial Computing: революция в опыте взаимодействия с цифровым контентом</a></h3>
<div class="global-meta">
Редакция </div>
</article><article class="item-26578">
<div class="h3"><a href="https://ya.zerocoder.ru/tgp-kak-ispolzovat-besplatnye-neyroseti-dlya-sozdaniya-obrazovatelnykh-materialov/" class="global-underline">Как использовать бесплатные нейросети для создания образовательных материалов</a></h3>
<div class="global-meta">
Артём Панфёров </div>
</article> </div>
<aside class="nextprev-section">
<section class="nextprev-newer">
<div>
<small>Из нового</small>
<div class="h3">
<a href="https://ya.zerocoder.ru/tgp-sozdanie-3d-modeley-s-pomoshchyu-neyrosetey-instrumenty-i-prakticheskie-sovety/" class="global-underline">Создание 3D моделей с помощью нейросетей: инструменты и практические советы</a>
</div>
</div>
</section>
<section class="nextprev-older">
<div>
<small>Есть и постарее, но ничуть не хуже</small>
<div class="h3">
<a href="https://ya.zerocoder.ru/eich-khanti-humans-kak-biez-koda-privliekat-150-tys-polzovatieliei-v-miesiats/" class="global-underline">Эйч, Ханти, Humans: как без кода привлекать 150 тыс. пользователей в месяц</a>
</div>
</div>
<a href="https://ya.zerocoder.ru/eich-khanti-humans-kak-biez-koda-privliekat-150-tys-polzovatieliei-v-miesiats/" class="nextprev-image global-image global-color">
<img src="https://ya.zerocoder.ru/wp-content/uploads/2023/03/25-1-1.png" alt="Эйч, Ханти, Humans: как без кода привлекать 150 тыс. пользователей в месяц">
</a>
</section>
</aside>
<script>
$(document).ready(function() {
$('.openInArticleModalFormBtn').click(function(){
var clickedElement = $(this).attr('data_popup');
var popup_id="#popup-form-"+clickedElement;
var bodyElement_popup = document.querySelector("body");
$(popup_id).addClass("open");
bodyElement_popup.addClass("lock");
});
});
</script>
<div class="subscribe-section subscribe-section--bg">
<div class="subscribe-wrap">
<div class="h3">Подписывайтесь <br> на наш телеграм-канал</div>
<a href="https://t.me/oqode" class="global-button">Подписаться</a>
</div>
</div>
<div style="display: none" id="popup-0" class="modal-block modal-block--form popup-style-image popup-style-image-0">
<div class="popup-style-0__inner">
<a href="https://zerocoder.ru/russian-neural-networks?utm_source=magazine&utm_medium=baner&utm_campaign=russian&article_id=1665&article_title=kak-media-prodjuser-v-49-let-zapustil-sobstvennyj-startap-na-zerokode" target="_blank">
<img src="https://ya.zerocoder.ru/wp-content/uploads/2025/05/1.png" alt="">
</a>
</div>
</div>
<script>
//вызов переменной чтобы работал WP Ajax
var ajaxurl = 'https://ya.zerocoder.ru/wp-admin/admin-ajax.php';
</script>
<script>
$(document).ready(function () {
// Определяем переменные
var popupKey = '0';
var cookieName = 'showPopup' + popupKey;
var isDev = false;
var timer = 15;
var abKey = '3';
console.log('Debug info:');
console.log('jQuery loaded:', typeof $ !== 'undefined');
console.log('Fancybox loaded:', typeof $.fancybox !== 'undefined');
console.log('Cookie function:', typeof $.cookie !== 'undefined');
console.log('Popup element exists:', $('#popup-' + popupKey).length > 0);
console.log('Cookie name:', cookieName);
console.log('Current cookies:', document.cookie);
// Функция для получения cookie
function getCookie(name) {
var value = "; " + document.cookie;
var parts = value.split("; " + name + "=");
if (parts.length == 2) return parts.pop().split(";").shift();
return null;
}
// Функция для установки cookie
function setCookie(name, value, days) {
var expires = "";
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
expires = "; expires=" + date.toUTCString();
}
document.cookie = name + "=" + value + expires + "; path=/";
}
// Функция показа popup
function showPopup() {
if (typeof $.fancybox === 'undefined') {
console.error('Fancybox not loaded');
return;
}
var popupElement = $('#popup-' + popupKey);
if (popupElement.length === 0) {
console.error('Popup element not found: #popup-' + popupKey);
return;
}
// Открываем popup
$.fancybox.open({
src: '#popup-' + popupKey,
type: 'inline'
});
// Устанавливаем cookie
setCookie(cookieName, 'true', 1); // на 1 день
// AJAX запрос для счетчика (если нужен)
if (abKey && abKey !== '' && typeof ajaxurl !== 'undefined') {
$.ajax({
url: ajaxurl,
type: 'POST',
data: {
'action': 'popup_counter',
'ab_key': abKey
},
success: function(response) {
console.log('Counter updated:', response);
},
error: function(xhr, status, error) {
console.error('AJAX error:', xhr.responseText);
}
});
}
// Выполняем дополнительный JS код
try {
} catch(e) {
console.error('Error in js_on_open:', e);
}
}
// Основная логика
if (isDev) {
// В режиме разработки показываем сразу
console.log('Dev mode: showing popup immediately');
showPopup();
} else {
// Проверяем cookie
var cookieValue = getCookie(cookieName);
console.log('Cookie value:', cookieValue);
if (cookieValue !== 'true') {
console.log('Cookie not set, starting timer for', timer, 'seconds');
var popupTimer = setTimeout(function() {
console.log('Timer fired, showing popup');
showPopup();
}, timer * 1000);
} else {
console.log('Cookie exists, popup already shown');
}
}
});
</script>
</main>
<footer class="footer-section global-footer">
<div class="footer-wrap">
<div class="footer-data">
<div class="footer-logo">
<a href="/" class="is-title">Я зерокодер</a>
</div>
<p class="footer-description">Первое медиа о создании IТ-решений без кода на русском языке от университета «Зерокодер». Зерокодинг, нейросети,</br>low-code, no-code.</p>
<div class="footer-icons">
<!-- -->
</div>
</div>
<div class="footer-nav">
<div class="footer-nav-column">
<ul id="menu-menju-v-podvale" class=""><li id="menu-item-6" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-6"><a target="_blank" href="https://t.me/oqode">Телеграм-канал</a></li>
<li id="menu-item-7" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-7"><a target="_blank" href="https://t.me/zerocoders">Телеграм-чат</a></li>
<li id="menu-item-8" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-8"><a target="_blank" href="https://www.youtube.com/channel/UC4neEzJcEQPjspfHcu8xgaQ">YouTube-канал</a></li>
<li id="menu-item-9" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-9"><a target="_blank" href="https://zerocoder.ru/?utm_source=magazine&utm_medium=knopka&utm_campaign=main&article_id=1665&article_title=kak-media-prodjuser-v-49-let-zapustil-sobstvennyj-startap-na-zerokode">Университет «Зерокодер»</a></li>
<li id="menu-item-19340" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-19340"><a href="https://ya.zerocoder.ru/avtory/">Авторы</a></li>
</ul> </div>
</div>
</div>
<div class="footer-copyright">
<span>Я зерокодер © 2026. Все права защищены.</span>
<div class="footer-right">
<a target="_blank" title="Политика конфиденциальности" href="https://ya.zerocoder.ru/politika-konfidencialnosti/">Политика конфиденциальности</a>
<a target="_blank" title="Пользовательское соглашение" href="https://ya.zerocoder.ru/polzovatelskoe-soglashenie/">Пользовательское соглашение</a>
<a target="_blank" title="Политика использования cookies" href="https://ya.zerocoder.ru/politika-ispolzovaniya-cookies/">Политика использования cookies</a>
</div>
</div>
</footer>
</div>
</div>
<script>
//Скрипт прогрузки UTM меток в POPUP-ы
// Получаем URL строки браузера
const urlString = window.location.href;
// Создаем объект URL из строки
const url = new URL(urlString);
// Получаем параметры запроса
const utmSource = url.searchParams.get('utm_source');
const utmMedium = url.searchParams.get('utm_medium');
const utmCampaign = url.searchParams.get('utm_campaign');
const utmTerm = url.searchParams.get('utm_term');
const utmContent = url.searchParams.get('utm_content');
var lastword=window.location.href.split('?')[0].split('/').filter(n => n).at(-1);
console.log('lastword:', lastword);
const cookieValue = [];
if (utmSource) {
cookieValue.push(`utm_source=${utmSource}`)
} else {
cookieValue.push(`utm_source=${'magazine'}`)
};
if (utmMedium) {
cookieValue.push(`utm_medium=${utmMedium}`);
} else {
cookieValue.push(`utm_medium=${'script'}`);
}
if (utmCampaign) {
cookieValue.push(`utm_campaign=${utmCampaign}`);
} else {
}
if (utmTerm) {
cookieValue.push(`utm_term=${utmTerm}`);
} else {
cookieValue.push(`utm_term=${'running_shoes'}`);
}
if (utmContent) {
cookieValue.push(`utm_content=${utmContent}`);
} else {
cookieValue.push(`utm_content=${lastword}`);
}
let encodedCookieValue = encodeURIComponent(cookieValue.join('|||'));
// console.log(encodedCookieValue);
var currentDate = new Date();
currentDate.setDate(currentDate.getDate() + 1);
var expires = currentDate.toUTCString();
/*if (cookieValue.length > 0) {
document.cookie = `YAUTM=${encodedCookieValue}; expires=${expires}; path=/; SameSite=None; Secure`;
} else {
document.cookie = `YAUTM=${encodedCookieValue}; expires=${expires}; path=/; SameSite=None; Secure`;
}*/
// var myVariable = encodedCookieValue;
// localStorage.setItem('YAUTM', myVariable);
// Выводим значения UTM-меток
// console.log('utm_source:', utmSource);
// console.log('utm_medium:', utmMedium);
// console.log('utm_campaign:', utmCampaign);
// console.log('utm_term:', utmTerm);
// console.log('utm_content:', utmContent);
// console.log('cookieValue:', cookieValue);
document.addEventListener("DOMContentLoaded", function() {
console.log('loaded');
setTimeout(function() {
var iframes = document.getElementsByTagName('iframe');
var data = { key: 'YAUTM', value: encodedCookieValue };
console.log(data);
for (var i = 0; i < iframes.length; i++) {
iframes[i].contentWindow.postMessage(data, '*');
}
setTimeout(function() {
for (var i = 0; i < iframes.length; i++) {
// Способ перезагрузки iframe
var iframe = iframes[i];
iframe.src = iframe.src;
}
console.log('iframes reloaded');
}, 500);
}, 4000);
window.addEventListener("click", function(event) {
var targetClass = event.target.classList[0];
if (targetClass == 'close') {
var parentElement = event.target.closest('.modal');
console.log(parentElement);
parentElement.classList.remove("open");
bodyElement.classList.remove("lock");
}
});
});
</script>
<!-- <div id="search-section" class="search-section">
<span id="search-close" class="search-close"><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8.242L20.242 0 24 3.76 15.758 12 24 20.242 20.242 24 12 15.758 3.759 24 0 20.242 8.242 12 0 3.759 3.76 0 12 8.242z"/></svg></span>
<div id="search-content" class="search-content ajax-search-container">
<form class="search-form ajax-search-form" onsubmit="return false">
<input id="search-input" class="ajax-search-field" name="s" type="text" placeholder="Что найти?">
<input type="hidden" name="action" value="search_action">
<div class="search-meta">
<span id="search-info">Хотя бы 3 символа</span>
<span id="search-counter" class="is-hide">
<span id="search-counter-results">0</span>
Вот что у нас есть
</span>
</div>
</form>
<div id="search-results" class="search-results ajax-search-results"></div>
</div>
<div id="search-overlay" class="search-overlay"></div>
</div> --> <script>
function initPrism() {
if (typeof Prism !== 'undefined') {
setTimeout(function() {
try {
Prism.highlightAll();
} catch (error) {
console.error('Ошибка Prism:', error);
}
}, 500);
} else {
setTimeout(initPrism, 1000);
}
}
function setupCodeCopy() {
const copyButtons = document.querySelectorAll('.copy-button');
copyButtons.forEach(button => {
const originalHTML = button.innerHTML;
button.addEventListener('click', function() {
const codeId = this.getAttribute('data-code-id');
const codeBlock = document.getElementById(codeId);
if (!codeBlock) return;
navigator.clipboard.writeText(codeBlock.textContent).then(() => {
button.innerHTML = 'Скопировано!';
button.classList.add('copied');
setTimeout(() => {
button.innerHTML = originalHTML;
button.classList.remove('copied');
}, 1500);
}).catch(err => {
console.error('Ошибка копирования:', err);
});
});
});
}
document.addEventListener('DOMContentLoaded', function() {
setupCodeCopy();
initPrism();
});
</script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-core.min.js?ver=1.29.0" id="prism-core-js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/autoloader/prism-autoloader.min.js?ver=1.29.0" id="prism-autoloader-js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/line-numbers/prism-line-numbers.min.js?ver=1.29.0" id="prism-line-numbers-js"></script>
<script type="text/javascript" src="https://ya.zerocoder.ru/wp-content/plugins/enlighter/cache/enlighterjs.min.js?ver=viWZ8n/HQnqfVbt" id="enlighterjs-js"></script>
<script type="text/javascript" id="enlighterjs-js-after">
/* <![CDATA[ */
!function(e,n){if("undefined"!=typeof EnlighterJS){var o={"selectors":{"block":"pre.EnlighterJSRAW","inline":"code.EnlighterJSRAW"},"options":{"indent":4,"ampersandCleanup":true,"linehover":true,"rawcodeDbclick":false,"textOverflow":"break","linenumbers":true,"theme":"atomic","language":"generic","retainCssClasses":false,"collapse":false,"toolbarOuter":"","toolbarTop":"{BTN_RAW}{BTN_COPY}{BTN_WINDOW}{BTN_WEBSITE}","toolbarBottom":""}};(e.EnlighterJSINIT=function(){EnlighterJS.init(o.selectors.block,o.selectors.inline,o.options)})()}else{(n&&(n.error||n.log)||function(){})("Error: EnlighterJS resources not loaded yet!")}}(window,console);
/* ]]> */
</script>
</body>
</html>