Евгений работает системным администратором в крупной компании уже 4 года. За это время он так устал от однотипных задач, что в свободное время делал сайты на различных CMS.
Полтора года назад Евгений закончил курс по Bubble в университете «Зерокодер» и теперь создает крутые продукты без кода: 10 приложений за это время. Он рассказал, зачем ему зерокодинг, как повышал ставку до 10 долларов в час и с какими сложностями сталкивался при разработке мобильного приложения для аренды автомобилей премиум-класса.
Немного о себе
Меня зовут Женя, мне 26 лет, и я из Орла. Я закончил университет по специальности «Инженер по автоматизации систем управления» и уже 4 года работаю системным администратором в производственной компании: обслуживаю сервера и коммутаторы, настраиваю виртуальные машины и прокладываю линии — в общем, решаю разные технические задачи.
При этом еще в вузе я увлекся созданием сайтов и делал веб-приложения на различных CMS: Joomla, WordPress, Bitrix. Пробовал изучать PHP, но не получилось — возможно, не хватило усидчивости.
ОНЛАЙН-ПРАКТИКУМ
ЗАПУСК DEEPSEEK R1 ЛОКАЛЬНО НА СВОЕМ КОМПЬЮТЕРЕ
ЧТО БУДЕТ НА ОБУЧЕНИИ?
- ПОКАЖЕМ, КАК РАЗВЕРНУТЬ МОДЕЛЬ DEEPSEEK R1 ПРЯМО НА СВОЁМ КОМПЬЮТЕРЕ
- Где и как применять? Потестируем модель после установки на разных задачах
- Как дообучить модель под себя?
Как пришел в зерокодинг
Летом 2021 я увидел рекламу университета «Зерокодинг» и заинтересовался: было ощущение, что ноукод — это что-то более глубокое и качественное, чем то, что я уже умел. При этом я понимал, что не хочу все время заниматься только техническими задачами — переустанавливать Windows и настраивать виртуальные машины на серверах. В идеале хотелось через некоторое время полностью уйти в разработку.
Поэтому я изучил, какие курсы были в университете, и остановился на Bubble. Он мне показался самым мощным из всех инструментов. Плюс на нем можно делать как веб-приложения, так и мобильную разработку — можно охватить сразу два направления.
Так, в августе 2021 года я начал учиться и меньше чем за 2 месяца освоил Bubble. Мне было так интересно, что я прошел курс быстрее общей группы.
Если ты тоже хочешь создавать крутые веб-приложения и освоить востребованную профессию будущего, приходи на бесплатный двухдневный вебинар. Ты узнаешь, что такое разработка без кода и увидишь больше примеров приложений, собранных за считаные часы без навыков программирования!
Как работаю с клиентами
Мне повезло: сразу после обучения меня взяли в студию NocodeHero. Ее основатели — Евгений Спорыхин и Игорь Зайцев — преподавали у нас на курсе и искали себе в команду начинающих разработчиков. Я записал видео-презентацию выпускного проекта, выложил ее на свой Youtube-канал и показал ребятам. После небольшого собеседования я стал у них работать.
Сейчас я чаще всего нахожу клиентов самостоятельно: через личный сайт, Авито и Kwork. Периодически делаю проекты для NocodeHero и еще одной студии веб-разработки.
Я начинал со ставки 5 долларов в час, постепенно поднял ее до 900-1000 рублей в час.
Ссылка на проект в App Store
Этот проект попал ко мне через студию разработки в октябре 2022 года. Заказчики — российские предприниматели, которые сдают в аренду Ламборджини, Роллс-Ройс, Феррари и другие люксовые машины в Дубае. На момент нашего знакомства у них уже был сайт на Тильде, через который потенциальные клиенты отправляли заявки на аренду машин. Моей задачей было сделать мобильное приложение с тем же функционалом и интегрировать его с AmoCRM.
Инструмент разработки — Bubble — клиенты выбрали сами. Мне кажется, из-за самых подходящих тарифов.
Как работали над приложением
Над проектом трудились несколько людей:
- проджект-менеджер со стороны агенства — общался с заказчиками,
- дизайнер (его наняла студия) — подготовил дизайн-макет в Figma, сначала грубый, а потом подробный с кликабельными элементами,
- разработчик (собственно, я) — собирал приложение, настраивал интеграцию с AmoCRM, выкладывал его в сторы.
На старте проекта мы составили документ в гугл доке, в котором расписали процесс разработки по шагам. Дальше я прикинул, сколько мне нужно времени на каждую задачу — получился план на 120 часов работы. По нему было удобно отслеживать, какие появляются сложности, какой шаг занял сколько времени, когда нужно связаться с клиентом или подключить дизайнера. Там же мы вели список багов и отмечали, что и когда исправили.
Разработку разбили на шаги
Полноценное ТЗ заказчик мне не присылал, но в этом проекте оно было и не нужно. Во-первых, дизайнер создал подробный макет в Figma, на который я мог ориентироваться при разработке. Во-вторых, клиент дал ТЗ на самую сложную часть — интеграцию с AmoCRM.
Дизайнер нарисовал в Figma все мелочи, мне оставалось реализовать все в Bubble
Что получилось в итоге
Приложение состоит из четырех разделов:
- Главная — список всех автомобилей с фотографиями, характеристиками, ценами. В карточке каждой машины — кнопка «Заказать», чтобы отправить заявку на аренду.
- Избранное — автомобили, которые пользователь отметил.
- Уведомления — заявки на аренду, которые пользователь отправил.
- ЛК — профиль пользователя с реферальным кодом, количеством собранных баллов и историей заказов.
Чтобы отправить заявку на аренду, нужно зарегистрироваться. Для этого необходимо ввести в приложении свой номер телефона и имя пользователя, а также выбрать мессенджер, куда придет код авторизации: телеграм или вотсапп. Дальше человеку приходит код, с помощью которого можно зайти в приложение — без логинов и паролей.
После регистрации можно забронировать автомобиль для себя или другого человека: заявка на аренду отразится в уведомлениях пользователя.
Зарегистрироваться в приложении можно через телеграм или вотсапп
В приложении можно посмотреть характеристики автомобиля и добавить его в Избранное
Из приложения заявка автоматически попадает в AmoCRM. Менеджер видит у себя в системе имя и контакты пользователя, откуда пришло бронирование (сайт или мобильное приложение). Дальше ответственный сотрудник связывается с клиентом, уточняет наличие автомобиля в выбранные даты, подтверждает цену и рассказывает, как и где забрать машину.
Еще в приложении есть специальные условия для постоянных клиентов — программа лояльности и реферальная программа. Вот как они работают:
-
Программа лояльности: за каждую поездку пользователю начисляются баллы, которыми потом можно оплатить новую аренду или вывести деньги по ставке 1 балл = 0,5 долларов. Заявки на вывод денег также отправляются в CRM, где их обрабатывает менеджер.
-
Реферальная программа: у каждого пользователя есть личный код, который можно передавать друзьям. Этот код нужно ввести при регистрации в приложении — тогда и владельцу кода, и его другу начисляются дополнительные баллы. Более того: владелец реферального кода будет получать баллы за каждую поездку друга.
Полученные по специальным программам баллы можно тратить на новую поездку или вывести в виде денег
Интеграция с AMO CRM и мессенджерами
Для связи с AmoCRM, телеграмом и вотсаппом я использовал встроенный в Bubble API коннектор.
Сложнее всего было интегрировать AmoCRM: мы использовали более 20 различных запросов. Это был мой первый опыт работы с данной системой, поэтому я изучал всю документацию, которая есть: как создать сделку, лида, как настроить процесс по начислению баллов.
Вдобавок мы настроили интеграцию таким образом, что раз в час, 12 или 24 часа в зависимости от бизнес-процесса мы сравниваем данные внутри Bubble и CRM. И если что-то где-то отличается — приводим их к единому значению. Это позволяет менеджеру работать только в AmoCRM, ему не нужно заходить в приложение и проверять, сколько на самом деле баллов на счету у пользователя.
Встроенный в Bubble API коннектор позволил настроить интеграцию с CRM без подключения сторонних сервисов
Компактный бэкенд приложения
Загрузка приложения в сторы
Отдельная сложность — выложить готовое приложение в сторы. Оказалось, что это долго, дорого и нудно: нужно создать несколько аккаунтов, купить дополнительные плагины, заполнить разные документы и еще решить вопрос с оплатой, потому что из России это сделать нельзя.
Вдобавок App Store отказывался принимать приложение, потому что в нем нестандартная авторизация — через номер телефона. Чтобы решить проблему, мы создали демо-режим. Это значит, что можно пропустить регистрацию и зайти в приложение, не указывая телефон. Правда в этом случае доступен только просмотр автомобилей — чтобы отправить заявку на аренду все равно придется зарегистрироваться.
В итоге в начале февраля нам удалось выложить приложение в App Store, и сейчас в нем уже больше 100 зарегистрированных пользователей. В Google Play мы его тоже загрузили, но недавно приложение отозвали — что-то не в порядке с документацией. Сейчас этим вопросом занимается проджект-менеджер.
Сколько заработал
Этим заказом я занимался около 2,5 месяцев, но работал неполный рабочий день и параллельно с другими проектами. В среднем у меня уходило на него 15 часов в неделю при ставке 900 рублей в час.
Как планирую развиваться
Сейчас зерокдинг для меня — это хобби, но оно занимает значительную часть моей жизни и приносит доход. Дополнительно я стал изучать языки программирования, чтобы стать универсальным разработчиком. При этом я заметил, что после Bubble изучать код значительно легче — видимо, новые знания попадают на уже удобренную почву.
Недавно меня пригласили показать приложение Kings Rental Cars на региональной выставке программистов. Многие знакомые кодеры были удивлены, какой продукт можно сделать на ноукоде быстро, недорого и силами одного разработчика, а не команды. Поэтому я думаю, что будущее за синергией ноукода и кода. Нужно только знать, когда какой инструмент использовать.
Связаться с Евгением можно в телеграме.
Большой практикум
ЗАМЕНИ ВСЕ НЕЙРОСЕТИ НА ОДНУ — 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=1771716888">
<!-- 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=1771716888"></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>Kings Rental Cars: компактное приложение для аренды спорткаров в Дубае - Я зерокодер</title>
<meta name="description" content="История успеха Евгения, выпускника университета "Зерокодер", который разработал мобильное приложение для аренды автомобилей премиум-класса" />
<link rel="canonical" href="https://ya.zerocoder.ru/kings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae/" />
<meta property="og:locale" content="ru_RU" />
<meta property="og:type" content="article" />
<meta property="og:title" content="Kings Rental Cars: компактное приложение для аренды спорткаров в Дубае - Я зерокодер" />
<meta property="og:description" content="История успеха Евгения, выпускника университета "Зерокодер", который разработал мобильное приложение для аренды автомобилей премиум-класса" />
<meta property="og:url" content="https://ya.zerocoder.ru/kings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae/" />
<meta property="og:site_name" content="Я зерокодер" />
<meta property="article:published_time" content="2023-03-31T08:37:12+00:00" />
<meta property="article:modified_time" content="2024-08-26T08:01:36+00:00" />
<meta property="og:image" content="https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-671-scaled.jpg" />
<meta property="og:image:width" content="2560" />
<meta property="og:image:height" content="1440" />
<meta property="og:image:type" content="image/jpeg" />
<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="9 минут" />
<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"WebPage","@id":"https://ya.zerocoder.ru/kings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae/","url":"https://ya.zerocoder.ru/kings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae/","name":"Kings Rental Cars: компактное приложение для аренды спорткаров в Дубае - Я зерокодер","isPartOf":{"@id":"https://ya.zerocoder.ru/#website"},"primaryImageOfPage":{"@id":"https://ya.zerocoder.ru/kings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae/#primaryimage"},"image":{"@id":"https://ya.zerocoder.ru/kings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae/#primaryimage"},"thumbnailUrl":"https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-671-scaled.jpg","datePublished":"2023-03-31T08:37:12+00:00","dateModified":"2024-08-26T08:01:36+00:00","author":{"@id":"https://ya.zerocoder.ru/#/schema/person/c827f107a634049f283324c5249895d1"},"description":"История успеха Евгения, выпускника университета \"Зерокодер\", который разработал мобильное приложение для аренды автомобилей премиум-класса","breadcrumb":{"@id":"https://ya.zerocoder.ru/kings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae/#breadcrumb"},"inLanguage":"ru-RU","potentialAction":[{"@type":"ReadAction","target":["https://ya.zerocoder.ru/kings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae/"]}]},{"@type":"ImageObject","inLanguage":"ru-RU","@id":"https://ya.zerocoder.ru/kings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae/#primaryimage","url":"https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-671-scaled.jpg","contentUrl":"https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-671-scaled.jpg","width":2560,"height":1440},{"@type":"BreadcrumbList","@id":"https://ya.zerocoder.ru/kings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Главная страница","item":"https://ya.zerocoder.ru/"},{"@type":"ListItem","position":2,"name":"Kings Rental Cars: компактное приложение для аренды спорткаров в Дубае"}]},{"@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="Я зерокодер » Лента комментариев к «Kings Rental Cars: компактное приложение для аренды спорткаров в Дубае»" href="https://ya.zerocoder.ru/kings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae/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/6159" /><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=6159' />
<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%2Fkings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae%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%2Fkings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae%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-6159 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=6159&article_title=kings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae">бесплатные курсы</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=6159&article_title=kings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae">📚 Курсы</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=6159&article_title=kings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae" 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=6159&article_title=kings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae" 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=6159&article_title=kings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae" 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=6159&article_title=kings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae">бесплатные курсы</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=6159&article_title=kings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae">📚 Курсы</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">Kings Rental Cars: компактное приложение для аренды спорткаров в Дубае</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="">— Kings Rental Cars: компактное приложение для аренды спорткаров в Дубае</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/oblozhka-671-scaled-1024x576.jpg" alt="Kings Rental Cars: компактное приложение для аренды спорткаров в Дубае">
</div>
<div class="item-content">
<div class="item-meta global-meta">
<div class="post-dates">
<span class="published-date">
Опубликовано: 31 марта 2023 г. </span>
<span class="updated-date">
Обновлено: 26 августа 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">— не больше 4 мин</span>
</div>
<h1 class="item-title">Kings Rental Cars: компактное приложение для аренды спорткаров в Дубае</h1>
<script type="application/ld+json">{
"@context": "https://schema.org",
"@type": "Article",
"@id": "https://ya.zerocoder.ru/kings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae/#article",
"inLanguage": "ru",
"url": "https://ya.zerocoder.ru/kings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae/",
"mainEntityOfPage": "https://ya.zerocoder.ru/kings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae/",
"headline": "Kings Rental Cars: компактное приложение для аренды спорткаров в Дубае",
"description": "Евгений работает системным администратором в крупной компании уже 4 года. За это время он так устал от однотипных задач, что в свободное время делал сайты на различных CMS. Полтора года…",
"datePublished": "2023-03-31T11:37:12+03:00",
"dateModified": "2024-08-26T11:01:36+03:00",
"image": {
"@type": "ImageObject",
"url": "https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-671-scaled.jpg",
"width": 2560,
"height": 1440
},
"author": {
"@type": "Person",
"name": "Редакция",
"url": "https://ya.zerocoder.ru/author/admin/"
},
"articleSection": [
"Bubble",
"Кейсы",
"Наши Студенты"
],
"articleBody": "Евгений работает системным администратором в крупной компании уже 4 года. За это время он так устал от однотипных задач, что в свободное время делал сайты на различных CMS. Полтора года назад Евгений закончил курс по Bubble в университете «Зерокодер» и теперь создает крутые продукты без кода: 10 приложений за это время. Он рассказал, зачем ему зерокодинг, как повышал ставку до 10 долларов в час и с какими сложностями сталкивался при разработке мобильного приложения для аренды автомобилей премиум-класса. Немного о себе Меня зовут Женя, мне 26 лет, и я из Орла. Я закончил университет по специальности «Инженер по автоматизации систем управления» и уже 4 года работаю системным администратором в производственной компании: обслуживаю сервера и коммутаторы, настраиваю виртуальные машины и прокладываю линии —…",
"potentialAction": {
"@type": "ReadAction",
"target": "https://ya.zerocoder.ru/kings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae/"
}
}</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/bubble/" class="global-tags-hash-sign">Bubble</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-h3">Как работали над приложением</li>
<li class="item-tab-of-cont__item-h3">Что получилось в итоге</li>
<li class="item-tab-of-cont__item-h3">Интеграция с AMO CRM и мессенджерами</li>
<li class="item-tab-of-cont__item-h3">Загрузка приложения в сторы</li>
<li class="item-tab-of-cont__item-h2">Про приложение Kings Rental Cars</li>
<li class="item-tab-of-cont__item-h2">Как планирую развиваться</li>
<li class="item-tab-of-cont__item-h3">Сколько заработал</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_webdev');
</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=5 --><!-- Проверка FreeCourse прошла успешно --><!-- Добавлен блок для отображения: пайтон --><!-- Добавлен блок для отображения: нейросети_2 --><!-- Добавлен блок для отображения: нейросети_1 --><!-- Проверка DoubleCourse прошла успешно --><!-- Добавлен блок для отображения: перплексити2 --><!-- Добавлен блок для отображения: нейросети_и_бизнес_1 --><!-- FreeCourse блок вставлен перед вторым h2 --><p data-order="start">Евгений работает системным администратором в крупной компании уже 4 года. За это время он так устал от однотипных задач, что в свободное время делал сайты на различных CMS.</p>
<p data-order="p_1">Полтора года назад Евгений закончил курс по Bubble <a href="https://zerocoder.ru/?utm_source=magazine&utm_medium=knopka&utm_campaign=besplatnie#free&article_id=6159&article_title=kings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae">в университете «Зерокодер»</a> и теперь создает крутые продукты без кода: 10 приложений за это время. Он рассказал, зачем ему зерокодинг, как повышал ставку до 10 долларов в час и с какими сложностями сталкивался при разработке мобильного приложения для аренды автомобилей премиум-класса.</p>
<h2 data-order="h2_1">Немного о себе</h2>
<p data-order="p_2">Меня зовут Женя, мне 26 лет, и я из Орла. Я закончил университет по специальности «Инженер по автоматизации систем управления» и уже 4 года работаю системным администратором в производственной компании: обслуживаю сервера и коммутаторы, настраиваю виртуальные машины и прокладываю линии — в общем, решаю разные технические задачи.</p>
<p data-order="p_3">При этом еще в вузе я увлекся созданием сайтов и делал веб-приложения на различных CMS: Joomla, WordPress, Bitrix. Пробовал изучать PHP, но не получилось — возможно, не хватило усидчивости.</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=6159&article_title=kings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae" data-block-id="пайтон">Участвовать бесплатно</a></div>
</div>
</div>
<h2 data-order="h2_2"><strong>Как пришел в зерокодинг</strong></h2>
<p data-order="p_4">Летом 2021 я увидел рекламу университета «Зерокодинг» и заинтересовался: было ощущение, что ноукод — это что-то более глубокое и качественное, чем то, что я уже умел. При этом я понимал, что не хочу все время заниматься только техническими задачами — переустанавливать Windows и настраивать виртуальные машины на серверах. В идеале хотелось через некоторое время полностью уйти в разработку.</p>
<p data-order="p_5">Поэтому я изучил, какие курсы были в университете, и остановился на Bubble. Он мне показался самым мощным из всех инструментов. Плюс на нем можно делать как веб-приложения, так и мобильную разработку — можно охватить сразу два направления.</p>
<p data-order="p_6">Так, в августе 2021 года я начал учиться и меньше чем за 2 месяца освоил Bubble. Мне было так интересно, что я прошел курс быстрее общей группы.</p>
<blockquote><p data-order="p_7">Если ты тоже хочешь создавать крутые веб-приложения и освоить востребованную профессию будущего, приходи <a href="https://zerocoder.ru/web-int?utm_source=magazine&utm_medium=article&utm_campaign=cases&utm_content=kings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae&article_id=6159&article_title=kings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae">на бесплатный двухдневный вебинар</a>. Ты узнаешь, что такое разработка без кода и увидишь больше примеров приложений, собранных за считаные часы без навыков программирования!</p></blockquote>
<h2 data-order="h2_3"><strong>Как работаю с клиентами</strong></h2>
<p data-order="p_8">Мне повезло: сразу после обучения меня взяли в студию <!--noindex--><a href="https://nocodehero.tech/" target="_blank" rel="nofollow noopener">NocodeHero</a><!--/noindex-->. Ее основатели — Евгений Спорыхин и Игорь Зайцев — преподавали у нас на курсе и искали себе в команду начинающих разработчиков. Я записал видео-презентацию выпускного проекта, выложил ее <!--noindex--><a href="https://www.youtube.com/channel/UCOylQLfh9G7Dh6tGQawQTTw" target="_blank" rel="nofollow noopener">на свой Youtube-канал</a><!--/noindex--> и показал ребятам. После небольшого собеседования я стал у них работать.</p>
<p data-order="p_9">Сейчас я чаще всего нахожу клиентов самостоятельно: через <!--noindex--><a href="https://webappmaster.ru/" target="_blank" rel="nofollow noopener">личный сайт</a><!--/noindex-->, Авито и <!--noindex--><a href="https://kwork.ru/user/numart" target="_blank" rel="nofollow noopener">Kwork</a><!--/noindex-->. Периодически делаю проекты для NocodeHero и еще одной студии веб-разработки.</p>
<p data-order="p_10">Я начинал со ставки 5 долларов в час, постепенно поднял ее до 900-1000 рублей в час.</p>
<h2 data-order="h2_4"><strong>Про приложение Kings Rental Cars</strong></h2>
<p data-order="p_11"><!--noindex--><a href="https://apps.apple.com/us/app/kings-rental-cars/id1661137860" target="_blank" rel="nofollow noopener">Ссылка на проект в App Store</a><!--/noindex--></p>
<p data-order="p_12">Этот проект попал ко мне через студию разработки в октябре 2022 года. Заказчики — российские предприниматели, которые сдают в аренду Ламборджини, Роллс-Ройс, Феррари и другие люксовые машины в Дубае. На момент нашего знакомства у них уже был <!--noindex--><a href="https://kingsrentcars.com/ru/" target="_blank" rel="nofollow noopener">сайт на Тильде</a><!--/noindex-->, через который потенциальные клиенты отправляли заявки на аренду машин. Моей задачей было сделать мобильное приложение с тем же функционалом и интегрировать его с AmoCRM.</p>
<p data-order="p_13">Инструмент разработки — Bubble — клиенты выбрали сами. Мне кажется, из-за самых подходящих тарифов.</p>
<h3><strong>Как работали над приложением</strong></h3>
<p data-order="p_14">Над проектом трудились несколько людей:</p>
<ul data-order="ul_1">
<li>проджект-менеджер со стороны агенства — общался с заказчиками,</li>
<li>дизайнер (его наняла студия) — подготовил дизайн-макет в Figma, сначала грубый, а потом подробный с кликабельными элементами,</li>
<li>разработчик (собственно, я) — собирал приложение, настраивал интеграцию с AmoCRM, выкладывал его в сторы.</li>
</ul>
<p data-order="p_15">На старте проекта мы составили документ в гугл доке, в котором расписали процесс разработки по шагам. Дальше я прикинул, сколько мне нужно времени на каждую задачу — получился план на 120 часов работы. По нему было удобно отслеживать, какие появляются сложности, какой шаг занял сколько времени, когда нужно связаться с клиентом или подключить дизайнера. Там же мы вели список багов и отмечали, что и когда исправили.</p>
<div data-order="div_1" id="attachment_6163" style="width: 810px" class="wp-caption aligncenter"><a href="https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-672.jpg" data-fancybox="gallery" data-caption=""><img data-order="img_1" fetchpriority="high" decoding="async" aria-describedby="caption-attachment-6163" class="wp-image-6163 size-medium" src="https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-672-800x450.jpg" alt="" width="800" height="450" srcset="https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-672-800x450.jpg 800w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-672-scaled-1024x576.jpg 1024w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-672-260x146.jpg 260w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-672-768x432.jpg 768w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-672-1536x864.jpg 1536w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-672-2048x1152.jpg 2048w" sizes="(max-width: 800px) 100vw, 800px" /></a><p data-order="p_16" id="caption-attachment-6163" class="wp-caption-text">Разработку разбили на шаги</p></div>
<p data-order="p_17">Полноценное ТЗ заказчик мне не присылал, но в этом проекте оно было и не нужно. Во-первых, дизайнер создал подробный макет в Figma, на который я мог ориентироваться при разработке. Во-вторых, клиент дал ТЗ на самую сложную часть — интеграцию с AmoCRM.</p>
<div data-order="div_2" id="attachment_6178" style="width: 810px" class="wp-caption aligncenter"><a href="https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-674.jpg" data-fancybox="gallery" data-caption=""><img data-order="img_2" decoding="async" aria-describedby="caption-attachment-6178" class="wp-image-6178 size-medium" src="https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-674-800x450.jpg" alt="" width="800" height="450" srcset="https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-674-800x450.jpg 800w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-674-scaled-1024x576.jpg 1024w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-674-260x146.jpg 260w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-674-768x432.jpg 768w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-674-1536x864.jpg 1536w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-674-2048x1152.jpg 2048w" sizes="(max-width: 800px) 100vw, 800px" /></a><p data-order="p_18" id="caption-attachment-6178" class="wp-caption-text">Дизайнер нарисовал в Figma все мелочи, мне оставалось реализовать все в Bubble</p></div>
<h3><strong>Что получилось в итоге</strong></h3>
<p data-order="p_19">Приложение состоит из четырех разделов:</p>
<ul data-order="ul_2">
<li>Главная — список всех автомобилей с фотографиями, характеристиками, ценами. В карточке каждой машины — кнопка «Заказать», чтобы отправить заявку на аренду.</li>
<li>Избранное — автомобили, которые пользователь отметил.</li>
<li>Уведомления — заявки на аренду, которые пользователь отправил.</li>
<li>ЛК — профиль пользователя с реферальным кодом, количеством собранных баллов и историей заказов.</li>
</ul>
<p data-order="p_20">Чтобы отправить заявку на аренду, нужно зарегистрироваться. Для этого необходимо ввести в приложении свой номер телефона и имя пользователя, а также выбрать мессенджер, куда придет код авторизации: телеграм или вотсапп. Дальше человеку приходит код, с помощью которого можно зайти в приложение — без логинов и паролей.</p>
<p data-order="p_21">После регистрации можно забронировать автомобиль для себя или другого человека: заявка на аренду отразится в уведомлениях пользователя.</p>
<div data-order="div_3" id="attachment_6181" style="width: 810px" class="wp-caption aligncenter"><a href="https://ya.zerocoder.ru/wp-content/uploads/2023/03/350-5.jpg" data-fancybox="gallery" data-caption=""><img data-order="img_3" decoding="async" aria-describedby="caption-attachment-6181" class="wp-image-6181 size-medium" src="https://ya.zerocoder.ru/wp-content/uploads/2023/03/350-5-800x450.jpg" alt="" width="800" height="450" srcset="https://ya.zerocoder.ru/wp-content/uploads/2023/03/350-5-800x450.jpg 800w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/350-5-scaled-1024x576.jpg 1024w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/350-5-260x146.jpg 260w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/350-5-768x432.jpg 768w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/350-5-1536x864.jpg 1536w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/350-5-2048x1152.jpg 2048w" sizes="(max-width: 800px) 100vw, 800px" /></a><p data-order="p_22" id="caption-attachment-6181" class="wp-caption-text">Зарегистрироваться в приложении можно через телеграм или вотсапп</p></div>
<div data-order="div_4" id="attachment_6182" style="width: 810px" class="wp-caption aligncenter"><a href="https://ya.zerocoder.ru/wp-content/uploads/2023/03/351-5.jpg" data-fancybox="gallery" data-caption=""><img data-order="img_4" loading="lazy" decoding="async" aria-describedby="caption-attachment-6182" class="wp-image-6182 size-medium" src="https://ya.zerocoder.ru/wp-content/uploads/2023/03/351-5-800x450.jpg" alt="" width="800" height="450" srcset="https://ya.zerocoder.ru/wp-content/uploads/2023/03/351-5-800x450.jpg 800w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/351-5-scaled-1024x576.jpg 1024w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/351-5-260x146.jpg 260w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/351-5-768x432.jpg 768w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/351-5-1536x864.jpg 1536w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/351-5-2048x1152.jpg 2048w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a><p data-order="p_23" id="caption-attachment-6182" class="wp-caption-text">В приложении можно посмотреть характеристики автомобиля и добавить его в Избранное</p></div>
<p data-order="p_24">Из приложения заявка автоматически попадает в AmoCRM. Менеджер видит у себя в системе имя и контакты пользователя, откуда пришло бронирование (сайт или мобильное приложение). Дальше ответственный сотрудник связывается с клиентом, уточняет наличие автомобиля в выбранные даты, подтверждает цену и рассказывает, как и где забрать машину.</p>
<p data-order="p_25">Еще в приложении есть специальные условия для постоянных клиентов — программа лояльности и реферальная программа. Вот как они работают:</p>
<ul data-order="ul_3">
<li><strong>Программа лояльности</strong>: за каждую поездку пользователю начисляются баллы, которыми потом можно оплатить новую аренду или вывести деньги по ставке 1 балл = 0,5 долларов. Заявки на вывод денег также отправляются в CRM, где их обрабатывает менеджер.</li>
<li><strong>Реферальная программа</strong>: у каждого пользователя есть личный код, который можно передавать друзьям. Этот код нужно ввести при регистрации в приложении — тогда и владельцу кода, и его другу начисляются дополнительные баллы. Более того: владелец реферального кода будет получать баллы за каждую поездку друга.</li>
</ul>
<div data-order="div_5" id="attachment_6183" style="width: 810px" class="wp-caption aligncenter"><a href="https://ya.zerocoder.ru/wp-content/uploads/2023/03/352-5.jpg" data-fancybox="gallery" data-caption=""><img data-order="img_5" loading="lazy" decoding="async" aria-describedby="caption-attachment-6183" class="wp-image-6183 size-medium" src="https://ya.zerocoder.ru/wp-content/uploads/2023/03/352-5-800x450.jpg" alt="" width="800" height="450" srcset="https://ya.zerocoder.ru/wp-content/uploads/2023/03/352-5-800x450.jpg 800w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/352-5-scaled-1024x576.jpg 1024w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/352-5-260x146.jpg 260w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/352-5-768x432.jpg 768w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/352-5-1536x864.jpg 1536w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/352-5-2048x1152.jpg 2048w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a><p data-order="p_26" id="caption-attachment-6183" class="wp-caption-text">Полученные по специальным программам баллы можно тратить на новую поездку или вывести в виде денег</p></div>
<h3><strong>Интеграция с AMO CRM и мессенджерами</strong></h3>
<p data-order="p_27">Для связи с AmoCRM, телеграмом и вотсаппом я использовал встроенный в Bubble API коннектор.</p>
<p data-order="p_28">Сложнее всего было интегрировать AmoCRM: мы использовали более 20 различных запросов. Это был мой первый опыт работы с данной системой, поэтому я изучал всю документацию, которая есть: как создать сделку, лида, как настроить процесс по начислению баллов.</p>
<p data-order="p_29">Вдобавок мы настроили интеграцию таким образом, что раз в час, 12 или 24 часа в зависимости от бизнес-процесса мы сравниваем данные внутри Bubble и CRM. И если что-то где-то отличается — приводим их к единому значению. Это позволяет менеджеру работать только в AmoCRM, ему не нужно заходить в приложение и проверять, сколько на самом деле баллов на счету у пользователя.</p>
<div data-order="div_6" id="attachment_6184" style="width: 810px" class="wp-caption aligncenter"><a href="https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-675.jpg" data-fancybox="gallery" data-caption=""><img data-order="img_6" loading="lazy" decoding="async" aria-describedby="caption-attachment-6184" class="wp-image-6184 size-medium" src="https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-675-800x450.jpg" alt="" width="800" height="450" srcset="https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-675-800x450.jpg 800w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-675-scaled-1024x576.jpg 1024w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-675-260x146.jpg 260w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-675-768x432.jpg 768w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-675-1536x864.jpg 1536w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-675-2048x1152.jpg 2048w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a><p data-order="p_30" id="caption-attachment-6184" class="wp-caption-text">Встроенный в Bubble API коннектор позволил настроить интеграцию с CRM без подключения сторонних сервисов</p></div>
<div data-order="div_7" id="attachment_6185" style="width: 810px" class="wp-caption aligncenter"><a href="https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-676.jpg" data-fancybox="gallery" data-caption=""><img data-order="img_7" loading="lazy" decoding="async" aria-describedby="caption-attachment-6185" class="wp-image-6185 size-medium" src="https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-676-800x450.jpg" alt="" width="800" height="450" srcset="https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-676-800x450.jpg 800w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-676-scaled-1024x576.jpg 1024w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-676-260x146.jpg 260w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-676-768x432.jpg 768w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-676-1536x864.jpg 1536w, https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-676-2048x1152.jpg 2048w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a><p data-order="p_31" id="caption-attachment-6185" class="wp-caption-text">Компактный бэкенд приложения</p></div>
<h3><strong>Загрузка приложения в сторы</strong></h3>
<p data-order="p_32">Отдельная сложность — выложить готовое приложение в сторы. Оказалось, что это долго, дорого и нудно: нужно создать несколько аккаунтов, купить дополнительные плагины, заполнить разные документы и еще решить вопрос с оплатой, потому что из России это сделать нельзя.</p>
<p data-order="p_33">Вдобавок App Store отказывался принимать приложение, потому что в нем нестандартная авторизация — через номер телефона. Чтобы решить проблему, мы создали демо-режим. Это значит, что можно пропустить регистрацию и зайти в приложение, не указывая телефон. Правда в этом случае доступен только просмотр автомобилей — чтобы отправить заявку на аренду все равно придется зарегистрироваться.</p>
<p data-order="p_34">В итоге в начале февраля нам удалось выложить приложение в App Store, и сейчас в нем уже больше 100 зарегистрированных пользователей. В Google Play мы его тоже загрузили, но недавно приложение отозвали — что-то не в порядке с документацией. Сейчас этим вопросом занимается проджект-менеджер.</p>
<h3><strong>Сколько заработал</strong></h3>
<p data-order="p_35">Этим заказом я занимался около 2,5 месяцев, но работал неполный рабочий день и параллельно с другими проектами. В среднем у меня уходило на него 15 часов в неделю при ставке 900 рублей в час.</p>
<h2 data-order="h2_5"><strong>Как планирую развиваться</strong></h2>
<p data-order="p_36">Сейчас зерокдинг для меня — это хобби, но оно занимает значительную часть моей жизни и приносит доход. Дополнительно я стал изучать языки программирования, чтобы стать универсальным разработчиком. При этом я заметил, что после Bubble изучать код значительно легче — видимо, новые знания попадают на уже удобренную почву.</p>
<p data-order="p_37">Недавно меня пригласили показать приложение Kings Rental Cars на региональной выставке программистов. Многие знакомые кодеры были удивлены, какой продукт можно сделать на ноукоде быстро, недорого и силами одного разработчика, а не команды. Поэтому я думаю, что будущее за синергией ноукода и кода. Нужно только знать, когда какой инструмент использовать.</p>
<hr />
<p data-order="p_38">Связаться с Евгением можно <!--noindex--><a href="https://t.me/eugene_webappmaster" target="_blank" rel="nofollow noopener">в телеграме</a><!--/noindex-->.</p>
<p data-order="p_39"> </p>
<!-- Вывод двойного блока курсов в конце статьи -->
<!-- Выводим двойной блок курса с 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=6159&article_title=kings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae" 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=6159&article_title=kings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae" 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%2Fkings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae%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=6159&article_title=kings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae">
<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-19698">
<div class="h3"><a href="https://ya.zerocoder.ru/cherez-intensivy-k-zvezdam-istoriya-nashej-studentki/" class="global-underline">Через интенсивы — к звездам: история нашей студентки</a></h3>
<div class="global-meta">
Редакция </div>
</article><article class="item-26590">
<div class="h3"><a href="https://ya.zerocoder.ru/tgp-kak-rabotaet-asu-avtomatizatsiya-i-neyroseti-dlya-upravleniya-protsessami/" class="global-underline">Как работает АСУ: автоматизация и нейросети для управления процессами</a></h3>
<div class="global-meta">
Роман Ковалёв </div>
</article><article class="item-10893">
<div class="h3"><a href="https://ya.zerocoder.ru/pgt-instagram-kak-instrument-vliyaniya-issledovanie-vozdejstviya-na-polzovatelej/" class="global-underline">Instagram* как инструмент влияния: исследование воздействия на пользователей</a></h3>
<div class="global-meta">
Редакция </div>
</article><article class="item-25327">
<div class="h3"><a href="https://ya.zerocoder.ru/tgp-video-za-60-sekund-kak-sozdat-rolik-iz-teksta-muzyki-i-foto-s-pomoshhju-ii/" class="global-underline">Видео за 60 секунд: как создать ролик из текста, музыки и фото с помощью ИИ</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-testiruem-nejroseti-dlya-video-chto-realno-rabotaet-a-chto-hajp/" class="global-underline">Тестируем нейросети для видео: что реально работает, а что — хайп</a>
</div>
</div>
</section>
<section class="nextprev-older">
<div>
<small>Есть и постарее, но ничуть не хуже</small>
<div class="h3">
<a href="https://ya.zerocoder.ru/dlia-dietiei-10-prichin-otdat-rebjonka-na-robototehniku/" class="global-underline">10 причин отдать ребёнка на робототехнику</a>
</div>
</div>
<a href="https://ya.zerocoder.ru/dlia-dietiei-10-prichin-otdat-rebjonka-na-robototehniku/" class="nextprev-image global-image global-color">
<img src="https://ya.zerocoder.ru/wp-content/uploads/2023/03/oblozhka-858-scaled.jpg" alt="10 причин отдать ребёнка на робототехнику">
</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=6159&article_title=kings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae" 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=6159&article_title=kings-rental-cars-kompaktnoe-prilozhenie-dlya-arendy-sportkarov-v-dubae">Университет «Зерокодер»</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>