Привет, Хабр!
Мы хотели научиться создавать сервисы от момента возникновения идеи и до этапа эксплуатации, попутно освоив новые технологии.
В итоге получился экспериментальный проект «ХрюХрюКар» — сервис для борьбы с неправильной парковкой, работающий под лозунгом «Хорошие ребята говорят 'Bla-Bla' и не ставят машину на зелёной зоне».
В этой статье мы расскажем, как выбирали проект, на решение каких задач нацелен «ХрюХрюКар», какие технологии мы использовали, какие трудности возникали и что получилось в итоге.
Ну и поделимся всеми исходниками, конечно. Если вам не терпится посмотреть, то вот исходники, а вот что получилось.
В статье мы не будем вставлять блоки кода, который у нас есть в репозитории, а просто будем ссылаться на его редакцию на момент написания статьи. Так каждый сможет посмотреть то, что интересно именно ему, поэтому ссылок будет много. Также будет немного ссылок на публикации в ВК и Telegram, имейте это в виду, переходя по ссылкам.
И да, мы здраво воспринимаем критику и всегда готовы учиться у более опытных коллег, поэтому комментарии приветствуются, как и вопросы в Issues.
❯ Чему мы хотели научиться
Я два года работаю в IT (Fullstack: Django, Go, Vue) и по работе мне приходилось сталкиваться с разными технологиями, но я ни разу не писал сервисы полностью, всегда уже были готовые проекты, в которых нужно было что-то дорабатывать. Также у меня есть брат, который вообще не имел опыта в IT, но хотел научиться программировать (с уклоном в Django).
Чтобы приобрести больше уверенности в вопросах создания сервисов, мы решили сделать проект с нуля. Брату хотелось понять как создавать backend на Django, работать с базами данных, а также разбираться с асинхронными задачами, ну а мне было интересно создать PWA на Vue3, научиться работать с картами, набить шишек на DevOps и в целом разработать сервис полностью.
❯ Как выбирали проект
Хотелось сделать проект, который был бы полезен городу и в то же время интересен для нас.
С выбором направления проблем не возникло: несколько лет назад я участвовал в работе административной комиссии и проблема неправильной парковки меня давно волновала. Были попытки внутренней автоматизации процесса, но они не увенчались успехом из-за полного отсутствия финансирования, нехватки времени и опыта в IT.
В то время все закончилось на том, что мы фотографировали нарушения на OpenCamera, после чего я загружал снимки в QGIS и скриптом извлекал данные из EXIF-тегов, осуществлял обратное геокодирование, заполняя слой. Оставалось разобраться с распознаванием автомобильных номеров и разработать функционал формирования документов (запросов/протоколов/писем), но в связи со сменой места работы, работа над проектом была остановлена.
В июле 2022 года, в рамках эксперимента, мне удалось наладить карту нарушений, но работала она очень плохо, да и выглядела ужасно:
Это по сути был QGIS-сервер и фронт на базе LizMap. Я все также фотографировал нарушения на OpenCamera, грузил их в QGIS, а также научился формировать заявления в PDF и публиковать карту. Учитывая наличие базовых знаний в C++/Qt я решил написать простейший клиент под Android. Немного помучившись, я понял что не тяну и делаю все не так, поэтому проект был снова спрятан на самую дальнюю полку.
В августе 2023 года я уже год как был занят в коммерческой разработке и понял что самое время осуществить третий подход, но уже с братом. На этом этапе мы выступали в роли граждан, полномочия которых ограничены отправкой заявления в уполномоченный орган, но даже эта задача оказалась не такой простой, как кажется.
Чтобы привлечь нарушителя к ответственности, вам необходимо:
Зафиксировать факт нарушения, время и место его совершения;
Понять кто уполномочен принимать заявления по конкретному типу нарушений на данной территории;
Составить заявление с учетом всех юридических тонкостей;
Отправить заявление в уполномоченный орган и дождаться ответа.
Вроде бы для гражданина все просто, но на практике все оказалось сложнее. Многие считают что все нарушения правил парковки относятся к полномочиям МВД (ГИБДД/ГАИ), но на самом деле это не так.
Нарушения, связанные с размещением автомобиля на территории, занятой зелеными насаждениями или на территории детских/спортивных площадок, рассматриваются в основном административными комиссиями, созданными в муниципалитетах, в рамках возложенных на них полномочий.
Кто-то из таких комиссий принимает заявления по электронной почте, у кого-то работает СЭД и есть форма для обращений на сайте, кто-то использует ПОС Госуслуг, ну а некоторые поддерживают сразу несколько способов обращения, либо вовсе принимают заявления только на бумаге...
Обращение в МВД (ГИБДД/ГАИ) — это вообще отдельная история. При разработке их формы обращения, программисты сделали все для того, чтобы граждане вообще не обращались к ним. Например, в форме обращения, «для борьбы со спамом», отключена возможность использования буфера обмена, а максимальный размер вложений в 30Мб является по сути запретом на отправку видео.
Все это, по факту, от спама защищает чуть больше чем никак, но чинит серьезные препятствия для простых граждан: если вы собираетесь обратиться в МВД, то вам, как правило, текст заявления готовит юрист. В результате, с учетом запрета на использование буфера обмена, вам приходится вручную весь текст набирать в форме.
При отправке обращений через ПОС Госуслуг есть также решения «для борьбы со спамом», о чем напишем чуть ниже.
Ко всему перечисленному добавляется банальный страх деанонимизации. Ведь для отправки заявления, вам нужно указать свои персональные данные, а это значит, что нарушитель, на этапе административного производства, узнает автора обращения и есть риск преследования.
Мы решили создать сервис, который позволит горожанам «в один клик» фиксировать факт правонарушения, а все остальные аспекты взять на себя.
В результате было интересно проанализировать насколько горожане готовы участвовать в жизни города, а также попытаться подискутировать с нарушителями в соцсетях и поработать с их возражениями.
❯ Какую задачу решает проект
В большинстве регионов России проблема неправильной парковки является одной из самых актуальных. Дворы и тротуары забиты личными автомобилями, а водители, нарушающие правила, придумывают себе массу оправданий, которые по сути являются отговорками:
Отговорка |
Фактическая ситуация |
«Была неотложная ситуация и я впервые тут автомобиль поставил, а так обычно я на стоянке ставлю» |
Открывая Google Street View, примерно в 50% случаев, оказывалось, что автомобиль стоит там уже не первый год. |
«Все стоянки забиты, а во дворе нет другого места, кроме зеленой зоны» |
После нескольких комиссий мне стало интересно, действительно ли все стоянки заняты. Проехав несколько стоянок вокруг района, где были нарушения, я убедился, что это не так. |
«Я не знал, что это зеленая зона, там грязь, вы даже там траву никогда не сажали» |
В этих случаях зачастую удавалось на Google Street View или Google Earth найти материалы, где отчетливо видно, что территория некогда была зеленой зоной. Пылеватые проплешины среди луговой травы и повреждения бордюра, соответствующие колесной базе автомобиля легко позволяют построить тут причинно-следственную связь. |
«Я приехал во двор а там не оказалось свободного места» |
Места в сложившейся застройке являются гостевыми, а не личными, владельцам авто следует хранить свои автомобили в гаражах и на стоянках. Это четко указано в местных нормативах градостроительного проектирования, да и положения СанПиН свидетельствуют о том же. |
«Вы не тем занимаетесь! Сделайте для начала всем парковки во дворах, прежде чем штрафовать!» |
В городе Балаково, по состоянию на 2024 год ориентировочное количество автомобилей составляет 70000 единиц. Сейчас нет возможности точно посчитать сколько из них хранятся в нарушение правил во дворах на зеленых зонах и тротуарах, но по моим наблюдениям это не менее 10% от общего количества.
Очень много автомобилей стоят неделями и месяцами в дворах без движения, что по сути превращает наши дворы в гараж. Большинство некогда зелёных зон превратились в площадки с открытым грунтом, что является одним из главных источников пыли.
В чем причины? Я думаю здесь подействовал целый комплекс факторов. В свое время власти отпустили ситуацию и автомобили постепенно переместились из гаражей и со стоянок во дворы, что превратилось в привычку. Сейчас автомобилисты уже в корне не согласны с тем, что личные авто во дворах сложившейся застройки хранить не получится.
Также мы часто слышим про отсутствие мест на стоянках. Мы решили разобраться с этим доводом и получили контакты представителей всех 30-и стоянок в г. Балаково и начали работу над картой стоянок, работающей на базе ХХК.
На данный момент мы обзвонили не все стоянки, но результат уже достоин внимания: из 17 стоянок по которым мы уже получили данные, только на одной стоянке нет мест, а на остальных — 40-60% свободно! С гаражами ситуация примерно такая же: по данным председателей кооперативов, 30-40% гаражей в городе — брошены и практически не используются.
Причины, которые нам видятся основными:
во дворе ставить «выгодней» (от предупреждения до 5000 руб. штрафа раз в 1-2 года против 1200-1600 рублей в месяц за стоянку);
до стоянки или гаража нужно ходить, а «мы привыкли от двери до двери на авто, это же удобно, 21-й век!»;
низкий шанс получения наказания: за 2023 год, согласно отчетам, на весь город ~300 админ. протоколов (и это не только по парковке);
нет общественного порицания: люди либо считают это нормой, либо просто молчат;
нехватка кадров в муниципалитете, чтобы фиксировать большое количество нарушений по всему городу. В Балаково это 27 человек, уполномоченных составлять протоколы (помимо основных обязанностей) на тысячи нарушений;
отсутствие полноценной информационной работы. Зачастую власти не способны напрямую говорить горькую правду жителям.
В рамках проекта «ХрюХрюКар» мы постарались охватить все описанные выше проблемы.
Посмотреть 12 примеров того, с чем борется ХХК можно под спойлером
❯ Что получилось в результате
Карта нарушений:
При открытии приложения загружается публичная карта нарушений. На карте доступны все нарушения, прошедшие процедуру модерации, то есть те, по которым направлены заявления.
Также на карте есть слой с автомобильными стоянками. Зеленым цветом обозначены стоянки, на которых есть места, а синим — те, куда мы еще не позвонили. Красным цветом отображена стоянка, на которой нет мест. По стоянкам также можно кликать, чтобы посмотреть подробные сведения.
Фиксация нарушений
После авторизации, если вы находитесь на территории, за которой закреплены полномочия по какому-либо типу нарушений, то приложение запустит камеру. В компоненте камеры можно выбрать тип нарушения и сделать снимок.
После отправки снимка, сервер производит распознавание номеров и обратное геокодирование. Вы можете протестировать этот функционал приложения, поставив фиктивное местоположение на своем устройстве где-нибудь на территории города Балаково Саратовской области. Только не забудьте, пожалуйста, сразу после распознавания номеров, удалить снимок, нажав на красную кнопку.
Модерация и отправка заявлений
Пользователю с правами модератора (членство в группе Moderator
), а также суперюзеру доступна консоль модерации. Модераторы не получают в очередь модерации фотографии, авторами которых они являются. Суперюзеры — могут модерировать любые материалы.
Модерацию мы сделали в виде степпера, чтобы акцентировать внимание на конкретном в текущем моменте вопросе. Если при распознавании номеров на фотографии обнаружены сразу несколько номеров, то для них создаются отдельные записи в таблице автомобильных номеров и нарушений.
Если отклонить фотографию, то отклоняются все связанные с ней автомобильные номера и, соответственно, нарушения. Также модератор может подтвердить фото (в т.ч. адрес с геолокацией), а затем отклонить часть автомобильных номеров, а часть подтвердить, ну или подтвердить все.
В процессе модерации можно вносить правки в адрес, местоположение снимка, автомобильный номер и тип нарушения. Править ранее подтвержденные данные не получится.
Для удобства модератора, в консоли мы связали карту с Google Street View, чтобы было проще геолоцировать фото.
Если с модератором связан заявитель, то у него доступен последний шаг степпера — генерация и отправка заявления.
Если такой связи нет, то все завершается на шаге подтверждения типа нарушения. В таких случаях, модераторы, с которыми связаны заявители, будут получать уже проверенные материалы и сразу переходить на этап генерации заявления с их данными и подтверждать (отправлять) его или отклонять.
Заявления генерируются в фоне в отдельной celery-task с использованием унифицированного шаблона, либо отдельных шаблонов, которые можно закрепить за полномочиями, используя админ-панель Django.
Рендеринг заявлений производится с использованием встроенного в Django шаблонизатора.
По-хорошему, надо немного подправить код и использовать Jinja2, чтобы рендерить заявления в изолированной песочнице, но пока это не сильно актуально, т.к. создание шаблонов и заполнение данных о заявителях, полномочиях и типах нарушений ведется собственноручно, через админ-панель Django.
Вот как выглядят заявления (3 страницы)
После подтверждения заявления, производится его отправка в уполномоченный орган, все также в фоновой задаче celery.
По состоянию на 05/01/2024 у нас реализована автоматическая отправка только по электронной почте, что покрывает ~90% всех нарушений, которые нам присылают через ХрюХрюКар. Отправка в ГИБДД ведется почти в ручном режиме.
У нас есть простейший скрипт на JS, в который мы подставляем текст заявления из панели администратора Django и, перейдя на форму для подачи обращений уполномоченного органа, выполняем этот код в консоли браузера, чтобы заполнить все поля формы. Далее остается прикрепить файл заявления, подтвердить почту и отправить заявление.
Пример кода для заполнения форм МВД
document.querySelector("input[name='post']").value = `Начальнику ОГИБДД МУ МВД России "Балаковское" Саратовской области`;
document.querySelector("input[name='fio']").value = `Корнилову Алексею Ивановичу`;
document.querySelector("input[name='surname']").value = `Иванов`;
document.querySelector("input[name='firstname']").value = `Иван`;
document.querySelector("input[name='patronymic']").value = `Иванович`;
document.querySelector("input[name='email']").value = `ivanovii@xxkapmail.ru`;
document.querySelector("input[name='phone']").value = `+79999999999`;
document.querySelector("textarea[name='message']").value = `Прошу привлечь к административной ответственности, предусмотренной частью
3 Статьи 12.19. КоАП РФ собственника/водителя транспортного средства, государственный регистрационный знак: Х578СН197, который
ХХ.ХХ.2024 в ХХ:ХХ разместил транспортное средство на тротуаре, при отсутствии знака "Парковка (парковочное место)" с одной из табличек
8.6.2, 8.6.3 и 8.6.6 - 8.6.9., тем самым нарушил пункт 12.2. ПДД РФ, адресный ориентир: напротив 3 подъезда дома 35/2 по улице Степная,
г. Балаково, Саратовская область, координаты: (52.024486, 47.840909). К настоящему обращению прикладываю заявление за своей подписью
с материалами фотофиксации правонарушения.`;
Также мы пробовали осуществлять отправку заявлений через ПОС Госуслуг и нас удивили их методы по «борьбе со спамом». Разработчик из непонятных соображений также запретил использование буфера обмена для пользователя и установил следующие ограничения на количество обращений, направляемых через ПОС: не более одного обращения в час и не более двух в сутки.
Данные решения нам показались странными, учитывая тот факт, что для подачи обращения необходимо авторизоваться через аккаунт госуслуг.
С учетом того, что ПОС Госуслуг реализован с использованием реактивных технологий, просто так заполнить форму не получится, ведь необходимо чтобы хранилище пришло к определенному состоянию. В рамках экспериментов мы пришли к такому коду, который на данный момент выполняет свою скромную функцию:
Пример кода для заполнения форм ПОС Госуслуг
const appText = `Прошу привлечь к административной ответственности, предусмотренной частью 15 статьи 8.2 Закона Саратовской
области от 29 июля 2009 г. № 104-ЗСО «ОБ АДМИНИСТРАТИВНЫХ ПРАВОНАРУШЕНИЯХ НА ТЕРРИТОРИИ САРАТОВСКОЙ ОБЛАСТИ» собственника
транспортного средства, государственный регистрационный знак: Е087НМ164, который ХХ.ХХ.2024 в ХХ:ХХ разместил транспортное
средство на территории, занятой зелеными насаждениями, тем самым нарушил часть 15 статьи 8.2 Закона Саратовской области от
29 июля 2009 г. № 104-ЗСО «ОБ АДМИНИСТРАТИВНЫХ ПРАВОНАРУШЕНИЯХ НА ТЕРРИТОРИИ САРАТОВСКОЙ ОБЛАСТИ», адресный ориентир: д.8, Степная
улица, Балаково, Балаковский район, Саратовская область, координаты: (52.016688, 47.828421). К настоящему обращению прикладываю заявление
за своей подписью с материалами фотофиксации правонарушения.`;
const address = `д.8, Степная улица, Балаково, Балаковский район, Саратовская область`;
const nativeTextAreaValueSetter = Object.getOwnPropertyDescriptor(window.HTMLTextAreaElement.prototype, 'value').set;
const nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set;
const nativeInputCheckedSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'checked').set;
const appealSubjectInput = document.querySelector("#react-select-3-input");
nativeInputValueSetter.call(appealSubjectInput, "Дворы и территории общего пользования");
appealSubjectInput.dispatchEvent(new Event('input', { bubbles: true }));
// Дождемся появления элемента div с id react-select-3-option-0, затем симулируем клик по нему
const observer1 = new MutationObserver((mutationsList) => {
for (let mutation of mutationsList) {
if (mutation.type === 'childList' && mutation.addedNodes.length > 0) {
const optionDiv = document.querySelector('#react-select-3-option-0');
if (optionDiv && optionDiv.textContent.trim() === "Дворы и территории общего пользования") {
optionDiv.click();
observer1.disconnect();
break;
}
}
}
});
observer1.observe(document.body, { childList: true, subtree: true });
const suggest = document.querySelector("#suggest");
nativeInputValueSetter.call(suggest, address);
suggest.dispatchEvent(new Event('input', { bubbles: true }));
const checkboxLabel = document.querySelector('label[for="check-agree"]');
checkboxLabel.click();
const textarea = document.querySelector("textarea");
nativeTextAreaValueSetter.call(textarea, appText);
const event = new Event('input', { bubbles: true });
textarea.dispatchEvent(event);
На данном этапе мы поняли, что заполнять формы мы тоже сможем, но для этого необходимо разработать расширение для браузера, которое будет авторизоваться в ХХК, получать по очереди заявления, открывать необходимые формы и заполнять их.
Почему именно расширение?
Чисто технически, реализовать отправку заявлений напрямую с сервера ХХК, используя эндпоинты уполномоченных органов возможно. Но нам показалось это неправильным с юридической точки зрения. Заявитель все же должен взаимодействовать с формой напрямую, через фронтэнд уполномоченных органов, а мы только можем помочь в её заполнении.
❯ Общие результаты в моменте
За 4,5 месяца мы направили 742 заявления, 28 материалов находится на модерации. Сейчас мы получаем в среднем по 10-20 материалов в день и стараемся около 20-и заявлений в день направлять.
Примерно 90% материалов — нарушения, выражающиеся в размещении автомобиля на зелёной зоне (направляются в администрацию БМР), около 9% — стоянка на тротуаре в нарушение ПДД (полномочия отдела ГИБДД МУ МВД «Балаковское»), 1% делят стоянка на месте для инвалидов, автобусных остановках и пешеходных переходах.
За это время на сайте авторизовалось 277 пользователей, из которых:
62 присылали одно и более нарушений, в том числе;
17 присылали более десяти нарушений, в том числе;
9 присылали более двадцати нарушений, в том числе;
6 присылали более пятидесяти нарушений, в том числе;
4 присылали более ста нарушений.
Следует отметить, что мы неоднократно просили пользователей вкладываться в качество, а не в количество материалов, исходя из ограничений, которые накладываются нюансами бюрократических процедур в рамках административных производств.
На примере некоторых пользователей мы поняли что один человек может зафиксировать сотню нарушений за пару часов прогулки, а мы их можем обработать за 1,5-2 часа. Но мы понимаем, что направление большого количества заявлений в уполномоченный орган по сути является DoS-атакой и вызовет отказ в обслуживании из-за банальной нехватки кадров.
За все время работы к нам зашли 5027 уникальных посетителей ~21000 раз. Основные пики посещаемости после таких вот постов (1, 2) в местной группе автомобильной направленности. Люди находят сайт в Яндексе или нашу группу в ВК и уже от туда приходят на сайт, где ищут свои машины.
Мы оперативно получаем положительные ответы от администрации и не очень оперативно — от МВД. Все ответы стараемся выкладывать в группе, но по мере появления свободного времени. Сейчас на почте ждут обработки 53 ответа от администрации и 3 от ГИБДД, это ~250-350 административных производств (администрация в одном ответе отвечает сразу на несколько наших заявлений).
Минус в том, что мы не получаем входящих номеров от администрации (да и не запрашиваем, если честно), поэтому конкретно связать каждый ответ с конкретным заявлением сейчас не представляется возможным.
Из дополнительных источников метрик следует отметить официальные публикации администрации: 1, 2, 3, 4, 5, 6.
Также нами проводится работа с органами власти всех уровней с целью внедрения в Балаково официального приложения на базе ПАК «Помощник Москвы». Это программное решение имеет статус средства, работающего в автоматическом режиме, что позволяет исключить бюрократию в виде административных производств (штрафы будут приходить через несколько дней прямиком на Госуслуги).
Процесс не быстрый, но мы будем стараться добиться такого внедрения у нас, благо куратор проекта в лице ЦОДД Москвы оказался очень адекватным и на первое же наше письмо ответил приглашением на ВКС, где нам изложили все детали и дали рекомендации для внедрения ПАК ПМ в регионах.
❯ Какие технологии мы использовали
Бэкенд у нас на Django+DRF, база — PostgreSQL с PostGIS. Для очередей задач — Celery с Redis в качестве брокера. Для распознавания номеров используем NomeroffNet, доступный через Flask. Если кому-то пригодится, мы сделали отдельный репозиторий с готовым контейнером для распознавания номеров.
На production/staging используем YandexLockbox для хранения и ротации секретов, Sentry для мониторинга ошибок, Uptime Kuma для мониторинга доступности с отправкой алертов в Telegram, Traefik для проксирования запросов, выпуска сертификатов, балансировки нагрузки и базовой авторизации служебных эндпоинтов.
Для контейнеризации используем Docker, для оркестрации — Docker Compose. Иногда для удобства используем Portainer.
В качестве почтового сервера используем Mailu, хотя при условии работы одного заявителя, можно вполне обойтись почтовым сервером, доступ к которым предоставляют по SMTP Google/Mail/Yandex и другие.
Также используем Nginx: на production/stagingон отдает статику, и проксирует запросы Uptime Kuma на эндпонит хелсчека Nomeroff. На локальной машине используем его для проксирования запросов и шифрования трафика (без SSL браузеры не дают доступ к камере и геолокации).
Фронтенд у нас на Vue3 (Typescript), для PWA — Vite. Роутинг — Vue Router, управление состоянием — Pinia. Для работы с картами используем vue3-openlayers, а для работы с камерой — vueUse. (С камерой до сих пор на некоторых устройствах есть проблемы и нам не помешает помощь более опытных коллег. Об этом чуть ниже.)
Для UI использовали MDB в редакции MDB Vue Pro, о чем сейчас немного жалеем.
Авторизация — через OAuth Google/VK.
Облачные вычисления и сервисы:
TimeWeb Cloud — для всех вычислений (сервер БД, сервер бэкенда, сервер фронтенда, сервер почты).
Yandex.Cloud — S3-хранилище для фотографий, заявлений и иллюстраций к типам нарушений.
Google Street View API — для просмотра точного местоположения фотографии на панорамах при модерации.
OSM — для обратного геокодирования.
Деплоим все это скриптами (1, 2, 3). Хотелось бы прикрутить Kubernetes и GitLab CI/CD, но пока не хватает времени и опыта.
❯ Что требует доработки
Камера. На некоторых устройствах (например, на iPhone Pro Max 11) камера не работает. Также наблюдаются проблемы с камерой в следующих браузерах: Яндекс, Samsung Internet, MIUI. Мы понимаем что проблема в некорректном коде компонента камеры, но у нас пока не хватило опыта её исправить. Исправляем работу камеры на одном типе устройств — все ломается на другом. Если есть опыт работы с камерой,будем благодарны за помощь.
Несвободная лицензия MDB Vue в редакции Pro. Из-за отсутствия в команде дизайнера, нам пришлось подбирать UI-библиотеку. На этом этапе была допущена ошибка и из-за невнимательности при ознакомлении с лицензией мы не заметили тот факт, что лицензия MDB Vue Pro запрещает распространять под открытой лицензией проект с исходным кодом самой библиотеки MDB Vue Pro. Поэтому мы опубликовали варианты выхода из этой ситуации. Если вкратце, то можно написать несколько компонентов самостоятельно, удалить ненужные несвободные компоненты или вовсе использовать ХХК без фронтенда (например для написания ТГ-бота такой же направленности, как и ХХК).
Расширение для браузера. Для автоматизации отправки заявлений через формы уполномоченных органов, необходимо разработать простейшее расширение для браузера. Мы готовы оперативно проработать API для взаимодействия с расширением и в целом помочь в разработке, если будут желающие.
-
DevOps. На данный момент у нас нет CI/CD, Kubernetes, да и в целом есть масса замечаний по деплою. Например, у нас для каждой реплики бэкенда, поднимается свой контейнер с Celery в связке с Redis, что не очень хорошо. Также у нас нет автоматического масштабирования, что в перспективе может привести к проблемам с производительностью. Ну и есть масса замечаний к порядку развертывания. Например, при сборке для staging/production, статика фронта собирается в таком порядке:
Скрипт готовит папки на хосте перед запуском сборки;
Запускается контейнер для сборки статики Django;
Запускается контейнер для сборки статики фронта ХХК и фронта карты стоянок;
-
Уже после завершения работы трех контейнеров сборки, запускается контейнер с nginx, куда примонтированы директории с собранной статикой.
По-хорошему, нужно производить сборку backend, frontend, parkings_frontend, а потом уже при сборке Nginx копировать нужные директории/файлы из полученных образов.
Если есть опыт работы с Kubernetes и GitLab CI/CD, будем рады помощи.
Консоль модератора. Необходимы доработки в консоли модератора, а именно: фильтрация, сортировка, поиск.
Local-first. На данный момент у нас нет возможности работать при плохом канале связи на стороне клиента. Необходимо реализовать возможность работы с ХХК в режиме, близком к offline. Для этого необходимо переработать часть стора, чтобы он работал с IndexedDB, а также реализовать синхронизацию данных с сервером, не забывая про контроль за временем создания снимков (временем на устройстве), чтобы избежать подлогов (нужен «камертон», работающий через веб-сокеты).
Отправка заявлений от имени пользователей без доступа к их данным. На данный момент заявления отправляются от имени нескольких модераторов, что является одним из самых узких мест в проекте. Необходимо реализовать отправку заявлений от имени пользователей, но без доступа к их данным. Тут вариантов масса, но нам кажется идеальным следующее решение: мобильное приложение, которое помогает заполнять формы уполномоченных органов (если отправка ведется через формы), либо готовит черновик письма для отправки на почту уполномоченного органа через стандартный почтовый клиент.
Исправление логики импорта исходных данных. Сейчас все территории и базовые типы нарушений/полномочия и т.д. у нас импортируются в миграции, это неправильно. Во-первых, не всем нужны эти данные, а во-вторых, после импорта территорий производится их привязка друг к другу, которая из-за не оптимизированного кода и большого объема данных, требует для выполнения минимум 8Гб оперативной памяти и ~10 минут времени. Этот код писался на самом раннем этапе и мы тогда еще не знали про фикстуры и management-команды. Надо будет всю эту логику перенести в management-команду, чтобы она загружала из фикстур заранее подготовленные данные и импортировала их в базу, при необходимости загружая нужные картинки в S3-бакет.
Журналирование. Сейчас журналы пишутся в stdout контейнеров и, по сути, хранятся в огромном JSON-файле в одной из директорий docker-compose.Также мы настроили конфиги так, чтобы Nginx и Django их сохраняли еще и в папки, смонтированные на хост.
Мониторинг. Сейчас у нас помимо обычного хелсчека, на который стучится Traefik, чтобы определить жив ли контейнер при проксировании запросов,в файле с хелсчеками лежат представления, которые по сути не являются хелсчеками. На эти представления изредка заходит Uptime Kuma, чтобы мы в Телеграмме получали алерты если ресурсы хоста на исходе или что-то не так с бизнес-процессами (не уходит почта, выходят сроки модерации материалов, пользователь или модератор производят много отклоненных материалов). Все это по сути является метриками и необходимо это все, скажем, с использованием Prometheus, передавать на некие дашборды и от туда уже слать алерты.
Автоматизация бэкапов. Сейчас у нас все сервера бэкапятся средствами хостера + мы периодически выгружаем эти бэкапы себе в облака. S3 вовсе не бэкапится нами... Необходимо наладить нормальное резервное копирование и сохранять все добро в какой-нибудь сторонний ледяной S3.
Stateless. Сейчас у нас Stateful-архитектура. В частности, когда пользователь присылает фотографию нарушения, мы ее помимо S3, кладем в папку, примонтированную к хосту. После того как запрос успешно выполнился, запускаются фоновые задачи в контейнерах Celery. Одна из таких задач подбирает этот файл из той же папки, делает сжатую копию и стучится в Nomeroff, чтобы распознать номера. Контейнер Nomeroff ходит в ту же папку. В самом конце задачи, файл удаляется. Все это нам уже не очень нравится с архитектурной точки зрения.
Тестирование. Сейчас в проекте ровно 0 тестов. По-хорошему нужны не только юнит-тесты, но и нормальные интеграционные тесты.Также мы пока не научились производить нагрузочное тестирование, поэтому на все вычисления (на все серверы) у нас в сумме задействовано 10vCPU и 18Гб памяти, что требует ~7000 рублей в месяц. Нагрузочное тестирование позволит оптимизировать использование ресурсов и сократить затраты.
❯ Какие сложности возникали
NomeroffNet и недоступность ресурсов
NomeroffNet использует собственный модуль ModelHub для загрузки моделей. С учетом различных санкционных политик, все эти модели оказались недоступны из РФ. Мы решили это достаточно тривиально:
Пустили трафик локальной машины через 3-ю страну, и загрузили модели на локальную машину;
Подправили пути в конфигах моделей;
Положили все эти модели в S3 + сохранили их в репозитории, чтобы вообще не ходить лишний раз в S3, а просто примонтировать директории с кешированными моделями в нужную папку в контейнере.
GitLFS
У нас сейчас в репозитории два файла размером более 100Мб - GeoJSON с границами территорий и одна из моделей NomeroffNet. В один прекрасный момент у нас сломался NomeroffNet и начал ругаться на то, что с файлами моделей что-то не в порядке.
Мы долго разбирались в чем причина и почему на новом сервере ничего не работает, а на старом все хорошо запускается. Так мы узнали про существование GitLFS. Чтобы запустить ХХК, для начала необходимо установить GitLFS. Мы добавили необходимую проверку и команду в скрипты запуска ХХК.
PWA и кеширование
Думаю большинство из тех, кто хоть раз запускал собственные публичные проекты, старался сделать это как можно быстрее.Вот и нас настолько терзало любопытство, что мы выкатились в прод не проверив все до конца. Весь функционал вроде работает, на нескольких разных устройствах протестировали на стейжинге, все вроде ОК, пора в прод.
Но когда пришло время выкатывать обновленияфронта, выяснилось что все файлы первой версии фронта наглухо закешировались в браузерах пользователей. Так мы узнали что index.html кэшировать нельзя.
Мы писали публикации с просьбой к пользователям почистить кэш, но продолжали наблюдать в Я.Метрике визиты со старой версией фронта. По итогу нам пришлось менять адрес домена и указывать на переезд пользователям, чтобы они получили обновленную версию фронта. Сейчас мы видим что раз в 2-3 дня несколько пользователей так и заходят на старый домен с первой версией фронта в кэше своего браузера...
PWA+Django social auth
Если установить приложение как PWA, то наблюдалась проблема авторизации. Ты открываешь в браузере сайт и пытаешься войти. В результате тебя переводит на страничку OAuth-провайдера, а после авторизации, уже ведет назад. И тут у тебя уже открывается не «приложение в браузере», а непосредственно ранее установленное PWA и Django возвращает клиенту ответ со статусом 500.
Мы долго пытались разобраться в чем проблема, но истины так и не достигли. По логам единственное что видно, это то, что когда клиента ведет со страницы OAuth-провайдера в PWA, из базы удаляется запись о ранее созданной сессии. Но если начать авторизацию сразу в PWA, то все работает как надо.
Мы поняли что PWA открывается тогда, когда переходишь по ссылке на приложение, находясь на другом домене. В результате мы сделали следующее решение: когда пользователь пытается авторизоваться, мы его сначала ведем на домен авторизации, а тот уже делает редирект на эндпоинт Django social auth. При таком решении, если у пользователя установлено PWA, то оно откроется до начала процесса авторизации, и все куки будут в наличии, как и сессия.
Почтовый сервер Mailu
Для отправки и получения писем мы используем собственный почтовый сервер на базе Mailu. Это позволяет создавать несколько заявителей, от чьего имени ведется отправка писем в уполномоченные органы.
При отправке заявления, заявителю направляется скрытая копия письма, чтобы при необходимости можно было подтвердить отправку в органах прокуратуры. При получении ответа у нас письма перенаправляются на личные почты заявителей, в результате каждый заявитель может обрабатывать свои ответы.
На третьем месяце отправка поломалась. После разбора логов стало понятно что проблема с SSL-сертификатом почтового домена. Mailu получает сертификаты SSL в Let'sEncrypt только при запуске и складывает их в папку, смонтированную в контейнер с Nginx.
Мы пока не решали задачу с автоматическим выпуском новых сертификатов почтового сервера, поэтому просто перезагружаем сервер почты раз в пару месяцев.
PostGIS + Django
При первой миграции Django в любом случае пытается добавить расширение PostGIS в базу, даже если оно уже вручную добавлено. В результате, при выходе в прод мы получили проблемы с миграцией, т.к. у служебного пользователя базы не было соответствующих прав. Особо разбираться времени не было, поэтому мы дали ему права суперпользователя, выполнили миграции и вернули пониженные права назад.
На локальной машине этой проблемы нет, т.к. для нужд разработки мы используем образ контейнера PG+PostGIS от Kartoza, где пользователь имеет все права изначально.
Django+OpenLayers в админке
Пару месяцев назад у нас начались проблемы с админ-панелью Django: при попытке открыть страницу со сведениями о каком-нибудь экземпляре модели, где есть геометрия, страница либо вовсе не загружалась, либо на загрузку уходило до 5 минут.
Как оказалось, из-за поломанного рунета и перегруженных внешних каналов, сильно упала скорость до CDN, где лежит ol.js
и ol.css
, которые Django почему-то не кладет в статику. В качестве решения мы написали простейший виджет, положив нужные файлы в статику, и использовали этот виджет там, где есть геометрия.
UFW+Docker
На ранних этапах, для тестирования, мы подняли сервер в облаке и накатили туда ХХК в dev-редакции. В качестве файрвола использовали ufw, наивно полагая что теперь то мы контролируем все порты, выставляемые наружу. В результате через пару часов нам прилетел алерт от ребят из TimeWeb Cloud.
Как оказалось, мы уже полчаса как стали частичкой чьего-то ботнета и от нас не только проводилось сканирование чужой инфраструктуры, но и велась атака + производился майнинг. Впоследствии мы поняли, что допустили ряд грубейших ошибок: контейнер с Redis вываливал порт наружу, на Redis не было авторизации, а на все наши правила UFW docker не обращал внимания.
Это был полезный опыт, в результате которого мы стали использовать авторизацию везде, где это возможно, а также четко контролировать все порты доступные извне. На боевых серверах мы использовали ufw-docker, чтобы все правила ufw распространялись на Docker тоже.
DataRace
Как только у нас появилось несколько параллельно выполняемых задач, мы получили первые случаи data race. Так брат познакомился с гонками данных и понял что где-то можно просто указывать конкретные поля, в которые пишешь, а где-то лучше использовать транзакции.
Idempotency
При тестировании «в полях», мы поняли, что качество связи не везде позволяет отправить фотографию с нарушениями. Изначально проблема была в выставленном в конфигурации axios тайм ауте в 30 секунд, из-за чего при плохой связи фотография не отправлялась и возникала ошибка.
На тот момент мы не понимали в чем сама проблема и у нас родилось решение, состоящее из велосипедов на костылях: мы начали в сторе перехватывать ошибки отправки и, если отправка не прошла, то делать ретрай через несколько секунд.
В результате иногда мы на сервере получали несколько одинаковых фотографий. Так мы узнали о требованиях к API в части идемпотентности. С тайм аутом мы разобрались, как и с идемпотентностью.
Traefik и sticky sessions
При выпуске своего первого обновления мы поймали проблему не только с кэшированием, но и с балансировкой. Дело в том, что на стейжинге у нас всего одна реплика приложения и из-за этого все выкатилось нормально. Но стоило нам одну из реплик обновить на проде,как сразу начались проблемы: браузер выдавал массу ошибок 404 в консоли и приложение не работало как надо.
Чуть позже мы поняли, что мы получили index.html с одной реплики, а остальные файлы отчасти запрашивались на других репликах Nginx, как и предполагают механизмы балансировщика. Разобравшись, мы узнали про Sticky sessions
в Traefik, что позволяет закреплять определенный сервер за определенным пользователем на время.
OpenStreetMaps и вандализм
Где-то на третьем месяце работы мы узнали про вандализм на OpenStreetMaps. Нам повезло что в тот день я что-то правил на фронте и у меня перед глазами был браузер с запущенным локально приложением при отключенном кэшировании.
В один из моментов я перезагрузил страницу и увидел что весь город был перекрыт по диагонали дорогами с выдуманными названиями улиц, приводить которые я тут не буду. Открыв приложение на проде я этого вандализма сразу не увидел, пока не нажал Ctrl+F5
.
После обновления кэша стало понятна перспектива получить неприятности в виде оскорбления чьих-то чувств или дискредитации какой-нибудь важной структуры. Хорошо что мы заранее предусмотрели механизм отключения приложения на обслуживание, что и было сделано.
Выдохнув и поняв, что эти пакости никто из посетителей не увидит, мы пошли разбираться в чем дело. В результате мы узнали про вандализм на OpenStreetMap и приняли решение реализовать механизм переключения тайловых слоев на лету (из админ-панели Django).
У нас изначально была сделана модель состояния сайта, которое периодически запрашивается фронтом,начиная с этапа загрузки приложения. Мы сделали модель тайлового слоя и в миграции добавили известные нам слои от разных поставщиков. Теперь если мы в админ-панели меняем слой, то через несколько секунд он поменяется у всех клиентов «на лету».
❯ Планы на будущее
Разработка
Дальнейшие возможности по улучшению ХХК мы описали выше, но из них хотелось бы выделить разработку мобильного приложения для возможности отправки заявлений от имени пользователей без доступа к их данным. С учетом реалий города Балаково, для начала будет достаточно простейшего функционала, который заключается в возможности авторизации, фиксации нарушений и отправки заявления с использованием настроенного в системе почтового клиента.
На Kotlin доводилось немного писать и в принципе есть понимание как это реализовать, но все упирается в отсутствие времени.
Исключение административных производств (и ХХК, как следствие)
Сейчас самое узкое место в нашем кейсе — это административные производства. По нашему опыту, больше 20 заявлений в один рабочий день это уже за гранью возможностей уполномоченного органа в городах, схожих с Балаково по населению. Для того чтобы понять почему так, давайте кратко опишу процесс:
Мы направляем заявление.
Это заявление регистрируют в отделе обращения граждан и относят главе в почту (о да, на бумаге!);
С учетом структуры аппарата, письмо «спускается» до исполнителя за 2-4 дня, т.к. каждый разбирает почту и «отписывает» (поручает) подчиненному в рамках возложенных полномочий;
Исполнитель готовит запросы в МВД (в ГИБДД и ФМС);
Эти запросы перед отправкой проходят ту же самую цепочку согласований, но уже «вверх», что также занимает 2-4 дня;
Запросы достаточно долго обрабатываются у адресатов (а бывает и теряются);
Приходит ответ на запросы и также «спускается» 2-4 дня. В идеальном случае в ответах есть контакты собственника авто;
Если контактов нет, то по адресу регистрации необходимо направить письмо (по тому же пути) касаемо административного протокола. Если контакт есть,то собственника приглашают на составление протокола (что тоже достаточно трудно и затратно по времени).
Когда протокол составлен, назначается административная комиссия, состоящая из уполномоченных лиц из разных ведомств. Как правило, комиссии проходили пару раз в месяц и на них приглашалось 20-30 нарушителей. Сейчас периодичность и «наполняемость», естественно, иные.
На комиссии каждого нарушителя по очереди приглашают, зачитывают ему протокол, дают слово, объясняют суть претензий и коллегиально принимают решение.
С учетом того, что все это выполняется «на бумаге», а также большая часть задействованных исполнителей делают это все в довесок к своим основным обязанностям, продуктивной такая модель работы стать не может.
Выход из этой ситуации — внедрение официального федерального приложения на базе ПАК «Помощник Москвы». Когда у нас получится добиться такого внедрения, потребность в ХХК отпадет и большая часть нарушений правил парковки будет проходить через эту систему в автоматическом режиме, что позволит комиссии заниматься другими делами, коих у них в достатке (свалка мусора, граффити, незаконная торговля, и т.д.).
Информационная работа
Также следует отметить необходимость продолжения информационной работы с населением. Даже сейчас, когда я пишу эту статью, нам приходят комментарии от горожан в стиле «на стоянках нет мест», хотя в самом посте четко указано, что это не так. Именно для этого, мы на базе ХХК сделали еще и отдельную карту стоянок. Это по сути отдельный контейнер Nginx со своей редакцией фронта.
Бэкенд используется тот же, только добавили отельные модели (1, 2, 3, 4) и сделали простейший эндпоинт.
Ну и напоследок, есть план действий на момент времени, когда все стоянки будут заполняться. В этот момент будем вести информационную работу с собственниками стоянок, ведь есть решения для увеличения их вместимости без строительства дорогих капитальных паркингов — роторные карусельные парковки.
Необходимо не упустить момент и сделать все для того, чтобы бизнес успел покрыть возрастающий спрос предложением, при этом не провоцируя новый виток роста уровня автомобилизации населения.
❯ Как помочь проекту
Код и компетенции
Лучший вклад, который вы можете сделать, это ваше время и компетенции. Поэтому если есть желание и возможности,мы будем рады предложениям и вашим MR.
Финансовая поддержка
Мы не принимаем прямые пожертвования на свою деятельность, но если у вас есть желание поддержать рублем, то вы можете внести вклад в оплату вычислительных ресурсов. TimeWeb позволяет любому желающему оплатить любую сумму, при этом необходимо выбрать опцию «оплата хостинга» и ввести имя домена хрюхрюкар.рф
.
Информационная поддержка
Если вы владеете какими-либо информационными ресурсами и можете помочь привлечь внимание к проблеме, с которой мы боремся, напишите нам, нам есть что рассказать, чтобы более детально понять проблему.
❯ Ссылки
Сайт: xxkap.app и хрюхрюкар.рф;
Почта брата — его зовут Игорь и он за время работы над ХХК неплохо вырос как бэкенд-разработчик, ~90% кода backend — его работа. Если кому-то в проект нужен молодой и перспективный backend developer (Django/Flask), напишите ему, пожалуйста.
Ну и насчет обзавестись друзьями: благодаря ХрюХрюКару, у нас теперь сотни (если уже не тысячи) классных друзей.
Все они занимают первые места в чемпионате по выдумыванию конспирологических теорий насчет наших источников финансирования, совмещенному с безуспешными попытками оскорбления авторов и участников проекта.
Жаль что они пока всё еще продолжают плакать, колоться, но упорно грызть кактус, который мы от них отодвигаем. Ну и ладно, мы будем все дальше плыть по течению этой занятной IT-реки с урбанистическим уклоном.
Спасибо за ваше время!
Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале ↩
UPD от 05.08.2024 22:40: заменили логотип.
Комментарии (115)
SuharkovMP
05.08.2024 08:19+8Отличная инициатива, вы молодцы! Хорошо если местные власти сделают следующий шаг - перенесут газоны с бумаги на городскую землю.
lepekhovs Автор
05.08.2024 08:19+2Спасибо. Дело в том, что все зеленые зоны на территории дворов сложившейся застройки были "зелеными" и на них прекрасно росла трава. Покос осуществлялся за средства жителей управляющими компаниями и все было хорошо, пока не произошла миграция личных авто с территории стоянок и гаражных кооперативов во дворы. Там, где нет авто, трава по прежнему отлично растет и пыли нет.
SuharkovMP
05.08.2024 08:19+5Значит местным жителям газоны не сильно были нужны?
lepekhovs Автор
05.08.2024 08:19+5Нарушители, как правило, представляют 20-30% жильцов во дворе, так что их решения нельзя назвать решением всех жителей. Остальные, как правило, в частных беседах осуждают парковку на тротуарах и зеленых зонах, но заканчивают свой монолог словами "а что мы можем сделать". Вот мы им и дали решение.
SuharkovMP
05.08.2024 08:19+4Думаю, что как раз для решения таких вопросов власть нужна. А не то, что чаще всего она пытается делать. Пусть у вас все получится!
ruomserg
05.08.2024 08:19+9Расскажу про Омск. Проблема (а может, счастье - с учетом тотального правового нигилизма в правоохранительных органах) заключается в том, что нельзя привлечь человека к ответственности за парковку на основании фотографии. Точнее, можно - но для этого фотография должна быть сделана комплексом автоматизированной фиксации типа Паркон или чем-то еще таким же сертифицированным. В этом случае все происходит примерно как со штрафами за скорость - то есть, владелец автоматически получает письмо счастья, а потом уже сам разбирается кто был за рулем его авто.
Если же вы просто посылаете фото или видео-материал, то для администрации или ГИБДД - это "сообщение о правонарушении". В большинстве случаев они обязаны завести административное дело, но тут же его приостановят потому что нет вашего собственноручного заявления. Я не знаю, можно ли его сейчас подать с КЭП через госуслуги, но раньше надо было ехать в рабочее время и писать от руки.
А дальше начинается цирк. Ибо теперь администрации или ГИБДД надо получить объяснения того клоуна, который припарковался на тротуаре/газоне/etc. Как это делает ГИБДД или гор.администрация ? Посылает ему заказное письмо. Которое человек совершенно спокойно может не получить. Или получить, но не явиться, и т.д. Разумеется, теоретически, административная комиссия может провести заседание и выписать штраф. Однако, с вероятностью 99% этот штраф отменят если человек пожалуется в суд что он не был надлежащим образом уведомлен, и его отсутствие на комиссии нарушило его право на защиту в административном деле. Поэтому все эти комиссии делают что ? Правильно - ждут пока истечет срок привлечения нарушителя к административной ответственности, и закрывают дело по этому основанию. У меня дома лежала целая пачка одинаковых отписок по этому поводу (они обязаны уведомить участника-инициатора о результате рассмотрения дела: сообщенные вами факты подтвердились, однако установить виновное лицо и привлечь его к ответственности не удалось по причине истечения срока давности...). В общем, это примерно как вам в мае отвечают, что снег и наледь на которые вы жаловались в январе - комиссией не обнаружены...
Вы спросите - а прокуратура ? А прокуратура по нашей жалобе провела проверку - однако проверяла она, естественно, только бумажки - а они, надо отдать должное нашим чиновникам, были в полном порядке. Если судить по бумагам, то владелец автомобиля (вместе с автомобилем) умеет становиться невидимкой на время административного расследования - ибо они и домой и на работу к нему выходили, и в розыск автомобиль объявляли, и участковый содействовал, и экипажи ГИБДД в этом районе дислокации на розыск и задержание ориентировались. В итоге - нарушений нет... Понятно, что в реальности он как ездил и стоял в соседнем дворе, так и продолжил это делать.
Возможно, стоит перенять опыт загнившей европы, и тупо вешать блокираторы на колеса. Если владелец не приходит в течение 7 дней платить штраф и разблокировать - эвакуация на штрафстоянку. Как набежит достаточная сумма за эвакуацию и хранение - аукцион, и автомобиль находит себе нового более ответственного владельца. А деньги идут в городской бюджет на озеленение...
lepekhovs Автор
05.08.2024 08:19Да, везде свой локальный опыт и практика, но закон требует по таким заявлениям, как мы направляем, возбуждать производство, устанавливать собственника, составлять протокол, приглашать его на комиссию и привлекать к ответственности.
Впрочем, на случай неявок, у них есть свои регламенты и, как вы правильно написали, комиссия выносит решение в отсутствие нарушителя и направляет ему документы на оплату штрафа. Дальше если не оплатил, то к приставам. Если в суд - то судиться.
В общем все зависит от желания работать. У нас в городе работают как надо: и суды выигрывают и к приставам направляют. Если где-то практика иная, то её всегда можно поправить через прокуратуру: не одним обращением, так двумя-тремя.
Ну а касаемо средств, работающих в автоматическом режиме, мы описали ситуацию: планируется повсеместное внедрение федерального приложения на базе ПАК "Помощник Москвы", курирует тему ЦОДД Москвы. Мы делаем все возможное чтобы это произошло как можно раньше и надеемся что Балаково станет пилотным городом по этому направлению.
ruomserg
05.08.2024 08:19+2Я не верю, что они (или вы) сможете сертифицировать приложение для смартфона как комплекс автоматической фиксации правонарушений. Ибо это (сертификация) - хлебушек других силовиков, и они вам его просто так не отдадут... Максимум что может быть - это что зафиксированное вашей программой будет считаться полноценным заявлением и не надо будет ездить писать собственноручное... А в автоматическую выписку штрафов - не верю. Что же касается комиссий по рассмотрению административных дел - их пропускная способность околонулевая (и они рассматривают ВСЕ дела, а не только парковку). Поэтому 99% дел они будут закрывать так, чтобы не сделали а-та-та по жопе при проверке. То есть через истечение срока давности или невозможность установить лицо совершившее административное правонарушение.
lepekhovs Автор
05.08.2024 08:19Помощник Москвы уже сертифицирован, вопрос только в масштабировании на регионы.
konst90
05.08.2024 08:19+2тупо вешать блокираторы на колеса
Если около машины нарушителя появился сотрудник полиции (который должен вешать блокиратор) - то можно ничего не вешать, а просто выписать штраф. А если не появился - то и вешать некому.
ruomserg
05.08.2024 08:19+6У нас по законодательству нельзя выписать штраф машине. Вы должны выписать штраф конкретному лицу. А особенностью припаркованной машины является то, что лицо ушло - и не понять когда вернется... А блокиратор - это чудесная вещь: он ставится, и на окно клеится какая-то бумажка обозначающая кто и когда его установил, а также ответственное отделение полиции. И нарущитель должен сам, ногами, туда прийти - дать объяснения, заплатить штраф, и тогда местный патруль блокиратор снимет: может сегодня, а может завтра... Потом владелец сдирает бумажку, и быстро-быстро уезжает - потому что теоретически в следующую секунду после того как бумажку содрал - следующий патруль имет право поставить новый блокиратор при отсутствии владельца около авто...
Дальше - поскольку количество блокираторов в отделе полиции ограничено - они имеют стимул следить за тем, чтобы поставленные - возвращались. Если какой-то блокиратор отмечен как установленный, а владелец не является - то экипаж полиции вызывает эвакуатор, и в процессе погрузки возвращает полицейское имущество в отдел. А машина, как я написал выше - едет на охраняемую стоянку. Оттуда ее выкупит или прежний владелец - или новый. Если машина - рухлядь и продать нельзя - ее утилизируют. Тут я уже не знаю, за счет прежнего владельца ли, или за счет бюджета (ну или утилизационного сбора).
konst90
05.08.2024 08:19+1За превышение скорости уже давно штраф выписывается собственнику. Нечего не мешает распространить эту норму на неправильную парковку.
ruomserg
05.08.2024 08:19+1Не мешает - но почему-то не распространяют... Возможно, когда машина находится в движении - там явно кто-то есть, и это по-законодательству: либо сам собственник, либо кто-то действующий с его согласия - ибо иначе это угон или хищение. А про машину стоящую на месте без владельца этого сказать нельзя. Может быть восемь мужиков по-пьяни взялись за углы, да переставили с места на место...
konst90
05.08.2024 08:19+1Может быть восемь мужиков по-пьяни взялись за углы, да переставили с места на место...
Тогда это угон или хищение.
Неправомерное завладение транспортным средством без цели хищения [угон] является оконченным преступлением с момента начала движения транспортного средства либо перемещения транспортного средства с места, на котором оно находилось.
(в ред. Постановления Пленума Верховного Суда РФ от 24.05.2016 N 22)
ruomserg
05.08.2024 08:19Формально, да - но если машина осталась примерно в том же месте где была и не проникали в салон - откажут в возбуждении за отсутсвием события преступления.
konst90
05.08.2024 08:19Так смысл не в том, чтобы наказать гипотетических пьяных мужиков. Смысл в том, что когда нарушитель, пытаясь опротестовать штраф, заявит "Это не я припарковался на газоне, это мне её переставили" - его попросят подписаться под этими словами. А это уже будет - если полиции получится доказать обратное - заведомо ложным доносом, уголовная статья.
Но для этого нужна работающая полиция.
ruomserg
05.08.2024 08:19Ну он ответит, что не ставил - и не знает как она туда попала. А по ст.51 его (пока! надеюсь что поживет еще эта статья какое-то время...) нельзя заставить свидетельствовать против себя. В любом случае, я тоже сторонник того чтобы по-аналогии считать что парковка произведена владельцем или его доверенным лицом пока не доказано обратное. Дальше штраф - и вперед обжаловать, если не согласен. Но по каким-то (подозреваю, политическим) причинам этого пока не происходит...
SuharkovMP
05.08.2024 08:19Ну он ответит, что не ставил - и не знает как она туда попала.
Об угоне заявлял? Нет - значит сам ее туда поставил.
В классификаторе МКБ-10 острый амнестический синдром, не связанный с употреблением алкоголя и психоактивных веществ имеет код F04.
Обычный же амнестический синдром (синдром, характеризующийся выраженным хроническим снижением памяти на недавние и отдаленные события) может стать следствием употребления алкоголя и психоактивных веществ, он входит в рубрику F10-F19.
Оба варианта являются противопоказаниями к управлению транспортным средством (Постановление Правительства РФ от 29 декабря 2014 г. № 1604).
Может проще штраф за парковку на газоне заплатить и больше так себя не вести?
ruomserg
05.08.2024 08:19+2С точки зрения здравого смысла и справедливости - да. С точки зрения закона - нет. Потому что нет обязанности владельца постоянно смотреть за расположением своего транспортного средства на стоянке. Он мог бросить машину и уйти к любовнице на неделю. И заявление об угоне - это право, а не обязанность. Опять же - грамотный клоун скажет что о событии он узнал только когда ему пришел вызов на административную комиссию...
Поэтому - в идеале, конечно, просто править закон и презюмировать вину владельца в парковке. На круг - это самое дешевое и правильное решение. Просто нынешний административный кодекс писался во времена, когда никто не предполагал что у каждого в кармане будет видеокамера с геолокацией. КоАП писался во времена, когда фотоаппарата не было даже у фиксирующих нарушение проверяющих. Отсюда понятная (и сложная) процедура фиксации заявлений и требование опроса нарушителя. Ибо без них - административная комиссия мухосранска для выполнения плана по штрафам просто вытащит базу ГИБДД и начнет писать под копирку дела, выносить решения, и далее по-тексту...
SuharkovMP
05.08.2024 08:19Да, в таком случае законы надо переписывать. Именно такие, которые затрагивают интересы больших групп людей. Паркуется на газоне один мудак, а дышат пылью после уничтожения газона 10 человек и один мудак. Да, он сам тоже этим дышит, только не осознает.
В случае ДТП владелец авто несет полную ответственность за причиненный ущерб, если только не докажет, что управлявший завладел его автомобилем незаконно. В случае с парковкой же все наоборот.
konst90
05.08.2024 08:19+1Поэтому - в идеале, конечно, просто править закон и презюмировать вину владельца в парковке. На круг - это самое дешевое и правильное решение. Просто нынешний административный кодекс писался во времена, когда никто не предполагал что у каждого в кармане будет видеокамера с геолокацией.
Простите, но я ещё раз напомню про штрафы владельцу за превышение скорости, проезд на красный свет и даже за непристёгнутый ремень.
То есть законодатель презюмировал, что если машина движется с некоторым нарушением - то за рулём сидит либо сам владелец, либо человек, на которого владелец может указать. Более того: если машину с запрещённого места стоянки увёз эвакуатор - то опять же презюмируется, что машину на это место припарковал водитель, и при визите на штрафстоянку ему выписывается штраф. И эти нормы появились в КоАП не при его написании, а позже, с появлением автоматических камер и эвакуаторов.
Если мы развернём этот тезис чуть дальше - то мы придём к тому, что если машина как-то попала на запрещённое место стоянки - то она двигалась и за рулём кто-то сидел, а не сама машина туда как-то магически переместилась. И соответственно - можно презюмировать, что как и в случае с превышением скорости, штраф следует наложить на владельца по факту обнаружения нарушения. А если владелец со штрафом не согласен - пусть подпишется под тем, что парковал машину правильно и не знает, как она оказалась на газоне. С риском получить уголовку за заведомо ложные показания либо лишение прав по причине провалов в памяти, на выбор.
YegorP
05.08.2024 08:19+3Проблема отчасти в том, что люди даже не пытаются писать обращения наслышавшись про вот такую бюрократию. На самом деле хоть и со сбоями, но всё же система реагирует. Просто упоминают об этом меньше, если вообще упоминают.
Я "лично" исправлял знаки и наказывал особо пакостных лихачей, восстанавливал освещение на улице. Суммарно раз 10 за последние 10 лет. Не бог весть какая выборка, но всё же - 6 или 7 обращений дошли до ожидаемого решения. Хреновая конверсия, да. Однако всё не настолько плохо чтобы говорить будто по умолчанию ничего не работает.
Kahelman
05.08.2024 08:19Вы только один. О нет упустили: владелец авто и лице его неправильно запарковавшее это могут быт. Разные лица. Так что становится ещё интереснее: я давал машину знакомым: Васе и Пете, кто из них запарковал не там где можно я не знаю …
konst90
05.08.2024 08:19Вот этот момент законодателю тоже хорошо бы проработать. Определить и чётко указать в ПДД, что такое "управление" и "передача управления", в какой момент оная передача происходит, и принять, что собственник обязан либо знать, кто управлял его автомобилем в данный момент времени, либо самому отвечать за последствия управления (штрафы, нанесенный ущерб).
Здесь мне вспоминается интересный прецендент. Семейная пара купила автомобиль (т.е. по Семейному кодексу это была совместная собственность), при этом в ПТС и СТС владельцем был муж (двух владельцев вписать нельзя). Пока мужа не было дома, жена выпила и села за руль - и попалась инспектору. Суд решил, что лишить прав следует обоих, поскольку муж (по мнению суда) передал управление нетрезвой жене. Аргумент, что автомобиль общий, и то, что муж оставил ключи трезвой жене (а обратное доказано не было), суд не убедили.
Жена была лишена прав совершенно справедливо, а вот справедливо ли в такой ситуации лишать и мужа - большой вопрос.
BigBeaver
05.08.2024 08:19А не надо давать свою машину мудакам, которые не хотят ездить по правилам (если вообще учили их).
BigBeaver
05.08.2024 08:19В большинстве случаев они обязаны завести административное дело, но тут же его приостановят потому что нет вашего собственноручного заявления.
В Ярославле они просят придти подписать протокол. После подтверждения личности заявителя в какой-то там их системе дальнейшие сообщения личной явки уже не требуют.
NutsUnderline
05.08.2024 08:19по приведенным картинкам сразу видно что стоит на траве. с тротуарами иногда визуально непонятно. например сделал магазин парковку от двери до тротуара, в результате тротуар и парковка слились в единое целое. чем водители и пользуются, о отмазы такие же. тут вообще сперва возникает вопрос кто такую планировку разрешил и на каком основании
boroda_el
05.08.2024 08:19+4С газонами тоже сильно непонятно. Особенно если рассматривать с человеческих позиций, а не буквы закона. Конечно, никто не хочет чтобы зеленые насаждения во дворах уничтожались, и все (и я в том числе, если что) осуждают тех, кто на них паркуется. Но с чего вдруг должно быть такое же трепетное отношение к какому-то щебеночно-песочно-грунтовому полю? Почему его приравнивают к газону только на том основании, что по плану он тут должен быть? Варианты коллективной ответственности (сами вы автомобилисты вытоптали, теперь все страдайте) не применимы, да и не доказаны.
Если на дороге пропал знак "уступи дорогу" и кто-то из-за этого попал в дтп - он в нем не будет виноват, т.к. по ситуации он не должен был ее уступать. И не важно что на схеме организации движения знак есть. С газонами подход прямо противоположный. Если на схеме газон, а в реальность бетонное поле - виноват, парковка на газоне.
В законодательстве тут явная недоработка, а ваше приложение ее эксплуатирует в карательных целях.
ruomserg
05.08.2024 08:19+2Нет, не так - в населенных пунктах стоянка машин должна быть разрешена только на специально обозначенных местах. В ПДД есть даже такой знак: "Парковка автомобилей". Поэтому возможность парковаться вне пределов проезжих частей и обозначенных автостоянок - на участках которые не отведены как газоны - я бы рассматривал как большое ПОСЛАБЛЕНИЕ (возможно - излишнее и расхолаживающее), а не как ущемление прав автовладельцев...
boroda_el
05.08.2024 08:19+2Однако в пдд, к счастью, пока что, такого не написано. Только небольшое количество месте где запрещено.
И еще очень забавно равнять все "населенные пункты". МСК где миллионы автомобилей и их количество реальная проблема которую не знают как решать, и деревню на 100 чел. Поставил авто на травке перед своим участком за 800 км от мкад - штраф тебе за парковку на газоне (5000 фл, 300тыс ЮЛ)
ruomserg
05.08.2024 08:19+7Ну вот я видел страну, которая живет по другим правилам. На СВОЕМ участке - можешь ставить автомобиль хоть на траву, хоть в кабачки - хоть еще как-то. А на землях населенного пункта - только на обозначенных местах. При этом еще и не на всех - есть разные категории парковок и мест: где-то бесплатно, но на ограниченное время, где-то бесплатно - но только для обладателей резидентской карты этого конкретного района, где-то для них же, но за деньги, где-то для всех за деньги...
И никаких (!) проблем я от этого не видел. Любое нарушение - блокиратор, штраф, ехай дальше. Подозреваю, что если быть богатым человеком и платить штрафы и упорствовать в парковке на газоне - то местный суд лишит водительской лицензии и пошлет на идиотен-тест и повторное обучение в автошколу. Ибо такое поведение владельца источника повышенной опасности свидетельствует или об опасном отстуствии знаний - или об опасной необучаемости. И для такого индивида (и для общества) будет лучше его с источником повышенной опасности разлучить...
Просто во взрослом обществе есть понимание что обладание автомобилем - это ответственность, в том числе материальная, и в том числе обеспечить себя местом для его надлежащего хранения когда индивид им не пользуется. При этом, обязанности владеть автомобилем нет - есть каршеринг, есть классическая аренда автомобилей, есть отличный общественный транспорт...
При этом, понятно что в РФ ничего этого в ближайшее время не будет. Ибо если начать жестко прессовать автовладельцев - то от местных властей потребуют человеческого содержания городской инфраструктуры и городской транспорт по-расписанию. А они потребуют от федерального центра прекратить забирать 94 из каждых 100 рублей собранных на их территории. А у федерального центра есть почетный пенсионер, который себя видит комбинацией Петра-первого и Екатерины-великой в одном теле. Кто ему пойдет объяснять что денег на войну нет ? Поэтому пусть народишко как-то сам выкручивается...
Kahelman
05.08.2024 08:19Вообще-то в большинстве стран Европы нет блокираторов.
Если запаркованная машина мешает проезду или стоит на парковке для инвалидов- то могут эвакуировать. В противном случае - максимум штраф.
ruomserg
05.08.2024 08:19Ну где-то есть, а где-то нет. Я тоже не видел чтобы их использовали повально - могут и просто бумагу на лобовое стекло прилепить. Это не знаю как работает. Но точно помню случай, что шел как-то в магазин, и товарищ встал на "неправильное" место для парковки (то есть оно размечено, но он там стоять права не имел). Шел обратно через полчаса - уже блокиратор на колесе и бумага на водительское стекло наклеена. Может быть полицейские проверяют, и вешают блокираторы только иногородним или стойким нарушителям - в этих деталях я не разбираюсь...
lepekhovs Автор
05.08.2024 08:19+2Законодательство, запрещающее "парковку на зеленой зоне" - это законодательство регионального уровня (субъекта федерации). Читал положения по Саратовской области (104-ЗСО) и по Спб, везде установлен запрет на размещение автомобилей на зеленых зонах. А само понятие "зеленой зоны" раскрыто в правилах благоустройства населенных пунктов. И у нас, в Балаково, и в Спб, понятие раскрыто как территория, не имеющая твердого покрытия и предназначенная для благоустройства либо озеленения.
В общем, для водителей все просто на самом деле: если ты находишься в городе, то будь добр, не съезжай с твердого покрытия и соблюдай ПДД в части правил стоянки и остановки.
Javian
05.08.2024 08:19В правилах благоустройства запрет на стоянку авто на "зоне зеленых насаждений". И штрафы там 2500-5000 руб.
JediPhilosopher
05.08.2024 08:19+1Зона зеленых насаждений общего пользования (ЗНОП) - это вполне юридический термин, имеющий конкретное значение. ЗНОПами является не любой газон и клочок травы, а описанные и пронумерованные и включенные в специальный список территории. Список этот можно посмотреть где-нибудь на сайте с документами территориального планирования вашего города. И он часто совершенно неожиданный, здоровый сквер может быть в него не включен, а какая-то странная полоска травы между двумя проезжими частями магистрали - включена.
В итоге обычный человек не может понять, припаркована ли машина на ЗНОП или просто на пустыре который никому не принадлежит и ответственности за это никакой нет.
lepekhovs Автор
05.08.2024 08:19+2Вы путаете территориальные зоны из правил землепользования и застройки с зелеными зонами из правил благоустройства. На примере Саратовской области:
В ЗСО №104-ЗСО от 29.07.2009г., часть 15 статьи 8.2. (Нарушение норм и правил в области благоустройства, установленных муниципальными нормативными правовыми актами) гласит: "Размещение транспортных средств на газоне или иной территории, занятой зелеными насаждениями, а равно благоустроенной и предназначенной для озеленения территории, спортивных и детских площадках ... влечет предупреждение или наложение административного штрафа на граждан в размере от двух тысяч до четырех тысяч рублей ..."
Из правил благоустройства города Саратов:
Газон - элемент благоустройства, представляющий собой искусственно созданный участок поверхности с травяным покрытием, создаваемый посевом семян злаковых трав с возможным включением некоторых видов травянистых растений, являющийся фоном для посадок, парковых сооружений и самостоятельным элементом ландшафтной композиции.
Зеленые насаждения - элемент благоустройства, представляющий собой древесную, древесно-кустарниковую, кустарниковую и травянистую растительность естественного и искусственного происхождения.
По Санкт-Петербургу схожие трактовки.
В некоторых городах документы не доработаны, но суть та же: региональный закон об административных правонарушения в данном случае должен предусматривать ответственность за нарушение норм и правил в области благоустройства. Правила благоустройства территории муниципального образования утверждаются представительным органом соответствующего муниципального образования, в соответствии со Ст.45.1 ФЗ 131-ФЗ от 06.10.2003 года.
Javian
05.08.2024 08:19+2На практике водитель в суде вот так пытается доказать свою не виновность, попутав понятия и получает от мирового судьи максимальный штраф. Не надо так.
Тот кто признает получает минималку. Судье некогда каждому проводить ликбез - у него конвейер из штрафов за газон.
BigBeaver
05.08.2024 08:19+2щебеночно-песочно-грунтовому полю? Почему его приравнивают к газону только на том основании
Потому, что это песочно-говняное тащится колесами на дорогу и потом ты ловишь лицом песчаные бури.
boroda_el
05.08.2024 08:19+3Вопрос к вам такой же как и к госорганам:
Какова ответственность модератора за некачественную работу? (неправильно квалифицированное нарушение (например, ракурс съемки создает иллюзию парковки на газоне, хотя реально нет), за неправильное распознание номеров, И т.п.)
Есть ли обратная связь по отказам в административном деле, по его дальнейшему успешному обжалованию обвиняемым? После обратной связи - какая ответственность модератора (и пользователя) что создал человеку проблемы?
lepekhovs Автор
05.08.2024 08:19+1Конкретно у нас каждый модератор является заявителем и скрупулезно подходит к проверке материалов. Мы хорошо знаем свой город, да и панорамы в комплексе со знанием всех территорий благоустройства позволяют нам не допускать ошибок (пока, по крайней мере).
В целом, с нормативной и практической точки зрения все просто: лицо, уполномоченное составлять протоколы, при необходимости выезжает на место или направляет служебные запросы в управление архитектуры и/или управление дорожного хозяйства и благоустройства и, если факт нарушения не подтверждается, то отвечают отказом без контактов с собственником авто.
Судебная практика тоже положительная. Администрация проигрывает только в случае несоблюдения сроков или регламента, поэтому бóльшая часть судебных решений не в сторону нарушителя.
KEugene
05.08.2024 08:19+7У вас поросенок Петр на картинке. Не знаю как там на счет авторских прав, но он известный символ эмиграции. Не хотите взять другого хрюшку, чтобы не вводить в заблуждение людей?
lepekhovs Автор
05.08.2024 08:19Согласен с вами полностью, сам испытываю тёплые чувства к этому символу. Сегодня в ночь поменяем логотип, спасибо за замечание.
manualBrake
05.08.2024 08:19+1Приветствую земляка. Сам частенько срался в местных пабликах на вашей стороне. Но честно говоря, после прочтения вашей развернутой статьи меня не покидает ощущение, что всё это какое-то донкихотство, борьба со змеем-горынычем - отрубил одну голову - выросло ещё две. И основная проблема - это именно что не просто нет общественного порицания - но виноваты все, практически. Всех всё устраивает и они не хотят этот порядок менять (кроме единиц, вроде вас). Разумеется все бы предпочли свой дом с участком, на котором можно было бы ставить машину, или новые дома с запланированными парковками - но это маниловщина, а отказываться от авто, после того как привык к хорошему, также никто не будет.
Я видел, как в свое время власти Москвы делали - они тупо закатывали в асфальт практически все места в старых дворах, где парковались авто (возможно только в отдельных ее районах), но не могу припомнить не одного такого случая в нашем городе. А ведь это могло бы существенно снизить остроту проблемы.
Javian
05.08.2024 08:19+2Адреса "где закатывать" власти собирают по жалобам - эти адреса становятся в очередь благоустройства. Если ни кто не жалуется, то они не узнают о необходимости благоустройства.
Wolframium13
05.08.2024 08:19+2Я видел обратное в московском дворе, там где парковались машины на земле, поставили огромный бордюр, а парковку засыпали почвой и посадили газон.
Javian
05.08.2024 08:19Скорее всего там что-то под землей типа пожарного бассейна или узел теплоцентрали.
lepekhovs Автор
05.08.2024 08:19+2Приветствую! У нас хоть и не без ошибок, но вполне нормальный подход к вопросам благоустройства дворов. Если где-то нормы не позволяют сделать парковку, то её не делают, как бы того не требовали жители. Нормы обеспеченности детскими/спортивными площадками и озеленением вполне уважают и чтут: хоть и нет средств на их реконструкцию, но территорию оставляют, не отчуждая всё и вся под автомобили.
Из ошибок хотел бы отметить отрицательную практику, которая сложилась примерно в 2018-2019 годах: если где-то размещение "кармана" возможно только по согласованию с ресурсоснабжающей организацией, но это согласование они не дают (например, где лежит старая труба Водоканала или кабель Облкоммунэнерго, которые они раз в год копают), то УДХБ, при благоустройстве, идет на встречу автомобилистам и в этом месте занижает бордюр под обещание что автомобилисты своими силами организуют там твердое покрытие, либо уложат бетонную газонную решетку.
Результаты таких решений (5 фото):
К чему мы пришли за 4,5 месяца: мы понимаем что стоянки на половину пусты, как и гаражи в кооперативах. Также мы понимаем что автомобили будут стоять во дворах как попало, пока это выгодней экономически. Когда у нас получится внедрить официальное приложение, работающее в автоматическом режиме, тогда производительность "кнута" будет составлять не 10-20 нарушений в день, а 100-200 и более. Вот тогда можно будет эти весы экономической выгоды сместить в сторону стоянок и гаражей...
Ну и будем давить на власти, чтобы они вели более активную и явную информационную компанию. Необходимо жителям четко объяснять истину, а не отвечать витиеватыми, размытыми фразами с нотками полит-корректности.
Скажем, требуют жители во дворах больше мест, необходимо им что-то подобное давать в ответ, как мы подготовили:
Пример информации, касаемо устройства бóльшего кол-ва м/м во дворах.
Как-то так...
mikegordan
05.08.2024 08:19Везет вам. Наш стартап про цифровой рубль закрылся на этапе взаимодействия с внешними ресурсами (ЦБ) который сам призывал взаимодействовать с ними, но как оказалось без 300 миллионов на счете ты не можешь начать стартап )))))
...
m1skam
05.08.2024 08:19+3скриншот с десктопа вместо ссылки на обсуждение? Вы настолько не уважаете аудиторию к которой обращаетесь? Попробуйте прочитать свой комментарий на телефоне.
Akr0n
05.08.2024 08:19+3Паркуются на газоне - так парковок же нет! Псина срет в песочницу - так а где ей ещё срать?? Отмазки дегенератов, слышали миллион раз... Не покупай машину, если негде хранить, не заводи собаку, если не хочешь ее цивилизованно выгуливать.
SuharkovMP
05.08.2024 08:19+2Ой, по поводу собак то вообще отдельная история. Мне оно лишний раз помогло убедиться в двуличности людей (надеюсь, что это коснулось только моих соседей). Жалеют всех и вся. Паркуется машинка напротив пешеходной дорожки - ой, так ведь места больше нет, ничего страшного, уставшая мама с коляской обойдет и вообще, нечего было рожать. У тетки слегка нездоровой психически по вечерам свора (3 псины) выводится на прогулку, облаивают всех вокруг - ничего страшного, собачкам гулять надо, они ж божьи твари, и т.п.
Но когда эта собачница померла, вектор сразу сменился на "ну наконец-то псины ее богомерзкие перестанут гавкать, а то достали всех, твари".
Так что лучше уж по закону, такие приложения нужны.
paintdrip
05.08.2024 08:19+3Видно, что в разработку вложено много усилий и внимания к деталям. Спасибо за интересный кейс и открытый код)
Tzimie
Такое хорошее название а оказывается для стукачей
Парковаться на газоне нехорошо, но помогать строить цифровой концлагерь, даже с благими намерениями, ещё хуже
Tzimie
А дальше будет ХрюХрюВоенкомат?
lepekhovs Автор
Это не стукачество, а нормальная гражданская позиция. И никакого концлагеря тут нет, мы всего-лишь хотим наладить свой быт, требуя соблюдения порядка от соседей, который сами с удовольствием соблюдаем.
WinLin2
Московские строители и до нас добрались, в соседнем дворе на 4 подъезда в 25 этажей - 20 парковочных мест. Может в консерватории что-то исправить и не разрешать строить дома окна в окна.
Гражданская позиция это хорошо и ее лучше применить в обсуждении нормативных актов. Почему нельзя въезжать на территорию больницы, туда ведь не спортсмены приезжают?
SuharkovMP
Как сотрудник одной из таких компаний прошу уточнить, о каком ЖК идет речь?
lepekhovs Автор
НПА у нас нормальные, конкретно в Балаково для новостроек требование от 1,2 до 2 м/м на квартиру. В других населенных пунктах показатели схожие.
Если конкретно в вашем населенном пункте нормы не соблюдаются, то есть смысл обращаться в прокуратуру, ведь возникают вопросы к экспертизе и администрации/минстрою касаемо выданных заключений и разрешений.
Мы же касаемся дворов сложившейся застройки, в которых нет и не будет мест для постоянного хранения автомобилей жителей. Это дворы, которые построены по старым нормам и все места во дворе - гостевые (для посетителей).
alexey-simf
Государство должно обязать всех строителей многоэтажек рассчитывать территорию и стоимость квартир так, чтобы количество бесплатных парковочных мест равнялось не менее количество квартир умножить на, минимум, полтора, а под каждое коммерческое помещение в рамках ЖК добавлять ещё из расчета площади. Только подобные меры смогут радикально улучшить ситуацию.
BigBeaver
Просто не надо покупать тачку, если некуда ставить (жилье без парковок, как правило, дешевле). А если хочется тачку, то не надо покупать квартиру в доме без парковок (хочется здить самому в своей машине - будь добр платить). Очевидно же.
А вот высокоэтажное строитльство без рассчета (или налаживания) доступности общественного транспорта действительно надо запретить.
Tzimie
А ещё не надо жить, если нет денег
BigBeaver
Просто надо планировать жизнь хотя бы на два шага вперед. Ты же жильё выбираешь с учетом транспортной доступности и других факторов, а не просто на сколько денег хватило. Или думаешь, "близко к метро" просто по приколу вдвое дороже стоит? На самом деле оно стоит дороже не вдвое а на разницу "тачка + парковка". Ну примерно.
venanen
Так в этом и дело, далеко не каждый ультрасеньор с зарплатой в 2 квартиры, поэтому куда реальнее сценарий
А на что хватило - выбор одинаковый, парковок нет нигде, потому что каждый квадратный метр земли будет использован с выгодой для застройщика.
Иначе говоря проблему с парковкой можно решить так - просто постарайтесь не покупать дешевое жилье в пригороде (там, где без машины просто не выехать, а машину ставить некуда), а покупайте квартиру в ЖК бизнес-класса и еще два парковочных места, тогда будет гораздо проще жить.
BigBeaver
Есть ЖК с подземными парковками, есть с многоуровневыми надземными в близкой доступности. Есть даже с гаражами дома.
Нет денег на машиноместо - не покупай машину. Всё просто.
Проблемы с перезапаркованностью и пробками идут в первую очередь от того, что машину слишком легко и дешево купить, и за это нет ни каких реальных последствий. Потому все считают, что окружающие им должны - должны расширить улицы спального района до размеров МКАДа, должны паркоместо бесплатное предоставить везде (дома, на работе, у магазина). Нет - никто вам не должен ничего.
Не ездите в магазин, где нет парковки, не устраивайтесь на работу в места, где нет парковок от работодателя (владельца недвиги) и тд.
Голосуйте ногами, так сказать - если жильё без парковок не будут покупать, то однажды его и строить перестанут. Не приходила такая мысль?
Wesha
В корень зрите!
JediPhilosopher
Увы, это фантастика.
На 1 машину по нормативам обычно требуется примерно 25 м2 площади паркинга. Это место для самой машины, плюс доля от проездов и общих площадей.
При вашем запросе в полтора машиноместа на квартиру получим, что для однушки в 35 квадратов нужно еще примерно те же 35 квадратов паркинга. То есть жилая площадь и площадь паркингов должны примерно совпадать (да, есть квартиры большей площади, но их мало, да и там хозяева, способные отвалить денег за трешку, захотят по 2-3 машиноместа на квартиру)
То есть построили 12-этажный дом - будьте добры, постройте рядом 12-этажный паркинг такой же площади. У вас город на 50% будет состоять из огромных высотных парковок. Представляете кстати, что такое паркинг высотой в 12-18 этажей? Я вот с трудом. Там голова закружится по рампе ехать. И там еще куча проблем, начиная от пожарных требований, заканчивая минимальными отступами от жилых домов (для парковок свыше 300 машиномест минимум 50 метров, то есть уйма территории вашего участка будет потрачена впустую на эти отступы).
В общем это абсолютно физически невозможно, как бы ни хотелось.
Я бы сказал, что автомобилизацию надо наоборот снижать, но это подход тоже не для России, так как альтернативу в виде нормально работающего ОТ и велопешеходной инфраструктуры делать, конечно, никто не будет, в итоге с дальних окраин кроме машины ни на чем и не добраться.
Javian
В позднем СССР начинали строить многоэтажные Гаражно-строительные кооперативы на окраине города. Логика простая - доезжаешь на общественном транспорте и дальше за город едешь на своем авто.
konst90
Ненене. Доезжаешь на общественном транспорте до ГСК, потом едешь обратно домой за женой, детьми и вещами, и только потом от дома на машине за город.
Javian
Тоже вариант. Автомобиль редко использовался для ежедневных личных поездок - общественный транспорт работал почти круглосуточно.
JediPhilosopher
Помню такое из детства. Ездили с дедом с утра за город с пересадкой на двух автобусах, потом еще полчаса пешком вдоль жд, потом через несколько гаражных кооперативов. Дорога часа полтора наверное занимала. Потом неспешное расконсервирование машины, потом возвращение домой за мамой-бабушкой-котами, потом дорога на дачу.
В 7 лет и если заниматься этим пару раз в год, чтобы на дачу выехать, это норм приключение. В любом другом случае - какое-то извращение.
Javian
офф Учитывая возраст, может быть когда-то он жил возле ГСК, а потом семья переехала в новостройку на другом конце города. В ГСК вступали те, кто жили относительно недалеко.
SuharkovMP
Поправлю. В последнем корпусе ЖК, который я считал, было 10000 м2 площади паркинга на 274 машино-места. Т.е. почти 37 м2 на 1 автомобиль.
JediPhilosopher
Ну это примерная цифра, не помню уже откуда ее брал. Она еще от вместимости и этажности паркинга может зависеть (начиная с какой-то этажности надо добавлять еще рампы и дополнительные служебные помещения), плюс в разных регионах нормативы разные могут быть.
В любом случае сценарий "каждому по машиноместу в плотной городской застройке" абсолютно нереалистичен. Но люди обычно не считают цифры и требуют невозможного то от застройщиков, то от чиновников, то от спортлото.
SuharkovMP
Верно, и ни застройщики, ни городские власти пока не нашли решения. В том же комплексе, из которого взял цифру, квартир, ну допустим, 999. Или около того. Машиноместами обеспечена четверть жильцов, точнее даже четверть квартир. Учитывая стоимость будущих квартир могу спрогнозировать, что покупать там жилье будут семьи, у которых более 1 автомобиля на семью.
BigBeaver
Решению сто лет в обед. Это метро и трамвай (который ездит не в полосе и не стоит в пробках).
SuharkovMP
Решению сто лет в обед. Это метро
и трамвай (который ездит не в полосе и не стоит в пробках).
Наслаждайтесь.
BigBeaver
А теперь представьте, что каждый из них в отдельной машине едет. Какую площадь дороги они займут. Сколько протяженность пробки.
Представили?
Вот и хорошо - наслаждайтесь.
SuharkovMP
Я всего лишь показал, что метро и трамвай - не решение. Точнее так, они решают проблему пробок лишь до тех пор, пока она касается автомобилей.
Та же Москва вполне успешно с этим борется, растет пропускная способность дорог, средняя скорость движения по городу и прочие бла-бла-бла (это я сегодня в метро видел). Проблему же пробок из людей можно решить лишь уменьшением количества людей, но сможет ли город пойти на такое?
BigBeaver
Нужно уменьшать потребность в дальних передвижениях. Это уже сейчас достигается новыми районами по принципу "всё включено", где на некоторое количество высоток, в пределах буквально квартала есть и спермаркеты и всё остальное. Как минимум людям, работающим там, уже не надо куда-либо ехать.
Пустая трата денег. По сути популизм. Люди с деньгами (которых в Москве много) не любят общественный транспорт - вот для их лояльности оно и делается. А не для нас с вами.
Возвращаясь к вопросу выше. Если вы пересадите пассажиропоток всего одной ветки (до 60к человек в час в одну сторону) на машины - вам потребуется аж 3 мкада чтобы единовременно их вместить. И это если мы считаем среднее время в пути (на машине) за 1 час. Уж лучше иногда видеть картину, как на ваших фото, чем закатать под хайвэи пол города.
SuharkovMP
Осталось построить в каждом квартале по роддому.
Не соглашусь. Эта средняя скорость и на общественный транспорт тоже влияет.
Но, к сожалению, это все еще не решает проблему неправильных парковок, о чем изначально был разговор.
BigBeaver
Чем выше этажность застройки тем легче на каждый квартал сделать по роддому. Хотя на самом деле это не критично - в роддом ездят редко, а локализовывать нужно именно объекты постоянной потредности - школы там всякие, спортзалы и тд. Студентов селить в общагах при универе и тд. Жить в кампусе это же нормально, и много где практикуется.
Это контринтуитивно, но для счастья надо строить максимально большие максимально самодостаточные человейники. Тогда это позволит использовать высвободившуюся (от дорог, парковок и частного сектора) площадь для зон рекреации как то парков и тд.
А вот восхваляемая американская мечта ведет к образованию неприятных структур, когда на 40км вокруг только гаражи заборы и автострады.
Пропускная способность вестибюлей на новых станциях метро, кстати, тоже растет. Логично, что 50 лет никто не ожидал, что много тысяч людей будут ездить из выхино на условный китайгород. Боло ли тогда вообще (условно) выхино?
SuharkovMP
Нет. Но была станция Ждановская.
1974 год - жителей в Москве 7.5 млн, станций метро около 80.
2024 год - жителей 13.5 млн, станций метро 333.
Не знаю, были ли в 1974 году в метро подобные толпы. Но людей в пересчете на 1 станцию было больше.
Это какое имеет отношение к обсуждаемому вопросу?
BigBeaver
Люди выросли вдвое а станции вчетверо.
Самое прямое отношение - там у каждого есть машиноместо у дома. Часто на несколько машин.
Wesha
Клятые камуняки что-то знали!
BigBeaver
Атож. Коечно. И вообще было много интересных проектов, пусть и не в полной мере проработанных...
BigBeaver
На самом деле, именно предоставить всем парковку - рельно. строишь по всей площади двор+дом два этажа вглубь и два в высоту. Двор, соответственно, переносится на крышу, а дома еще дальше вверх от этой базы.
Реаьные же проблемы начнутся, когда заявленное число машин решит куда-то поехать. Одновременно.
Легким взглядом на карту можно убедиться, что ширина дома примерно равна ширине обычной такой улицы по 2 полосы в каждую сторону.
Примерно так
И вот разместить все эти машины на дороге нет абсолютно ни какой возможности, тк улицы это периметр, а дворы это квадрат (а жилые дома - вообще куб). Даже если игнорировать требования к дистанции и интервалу.
Это принципиальная математическая проблема а << a^2 << a^3, и она не решается регулировкой этажности и плотности застройки. Единственное, к чему приведут такие манипуляции - увеличение протяженности дорог. Вместо 5км до центра через высотки будешь ехать 100км через частный сектор по огромному хайвэю, где вокруг ничего нет кроме домов и заборов. А о пешей доступности чего-либо вообще можно забыть будет.
Wolframium13
Супер, я без машины должен буду в цене квартиры оплачивать 1,5 парковочных места, которые мне никогда не понадобятся. А можно тогда в этом случае прописать и право ставить во дворе двадцатифутовый контейнер тем, у кого машины нет? Я буду там хранить велосипед и лыжи.
500rur
а что тогда стукачество?
SuharkovMP
Покурить вместе с одноклассниками за школой, замести следы в отношении себя и сдать всех остальных.
Переспать с учительницей по физике и рассказать об этом своим родителям. Или ее родителям.
Всякая подобная хрень. Есть относительно точное определение - это тайное сотрудничество с правоохранителями и предоставление им нужной информации. Почему-то в наше время сюда же вписали и любую жалобу на нарушение закона.
Есть целая дискуссия на тему
- https://forumot.ru/topic/27386-гражданская-позиция-или-стукачество/Поправлю себя, там ветка хоть и содержит отдельные интересные мысли на тему, больше касается общественного транспорта. Вот здесь (простите за пикабу) больше разнообразных случаев рассмотрено. Сижу, читаю. Показалось интересным.
laisto
верно, стукачество это другое. у вас - доносы. но даже если мы примем это за норму (нет, это не норма. в 99% случаев парковка в неположенном месте не мешает примерно ничем) вместо того, что б спросить "куда идут мои налоги", напрячь гаишников, что б приехали и делали свою работу, вы предпочли сделать инструмент, что б менты (гаи) работали еще меньше за те же деньги, а народ в игровой форме с радостью строчил друг на друга. конгениально.
З.Ы.: я - пешеход, личного авто не было и не планирую.
BigBeaver
Я правильно понимаю. что платить гаишникам за потрулирование дворов три раза в день это нормально и прогрессивно, а сфоткать неуместно стоящую тачку, когда все равно мимо идешь, то это страшное западло и нормальному человеку немыслимое деяние?
А я вот наоборот считаю, что гаишники должны работать только по вызову или по наряду. А позволять им просто лениво слоняться по улицам - растраты ресурсов впустую.
NutsUnderline
вот в этом то и проблемка, что многие так считают "никому не мешает моя музыка (колонка, гитара), машина (запах, шум, сигналка) под окном. а даже если и мешает - "а что я/он сделает". Оставшийся "1%" должен молча терпеть что ему действительно мешает? если нет жалоб то и проблеммы значит нет. а безнаказанность провоцирует бОльшую безнаказанность.
SuharkovMP
Надеюсь, что вы подтвердите это высказывание аргументами. Правильно понимаю, что в вашей практике из 100 неправильно припаркованных автомобилей, которые вам встречаются, лично вам досаждает лишь один? Какие признаки отличают его от остальных? Ваши соседи согласны с вашей характеристикой, у них так же 99%?
Мне тоже не мешают все неправильно припаркованные автомобили. Но это - неправильно. Теорию разбитых окон вспомните.
Мне точно также не мешает сосед снизу, который напивается и курит где попало. Мне не мешает сосед сверху, который избивает жену и орет по ночам на детей. Мне не мешают владельцы собак, чьи питомцы гадят порой прямо в лифтах, и которые не считают нужным все это убрать потом. Также мне не мешают и подростки, которые бьют стекла в подъезде и ломают свежепосаженые деревья.
Но когда жертва побоев не выдержит и покончит с собой, когда дети получат нервный срыв и начнут отыгрываться на других детках и мелких беззащитных животных, когда вонь в лифте станет настолько невыносимой, что придется его закрывать на ремонт, когда очередной распираемый от ЧСВ подросток порежется стеклом и зальет кровью половину пожарной лестницы в панике, не зная что делать, и когда соседи не выдержат и сожгут автомобиль хама, который паркуется по принципу "а кому я мешаю?", тогда это станет и моей проблемой. Потому что мое жилье потеряет в рыночной стоимости из-за того, что район обретет дурную славу. И мне придется тратить больше времени на то, чтобы улучшить жилищные условия. Не хочу этого, поэтому это все - и моя проблема тоже. Просто мне не безразлично будущее моей семьи, она не должна жить среди подобного.
Ради такого буду, как вы изволили выразиться, доносить.
BigBeaver
Все просто же. Смотрите. В стране сколько-то миллионов машин, а мне мешает только одна единственная в моём дворе. Соответственно, 99% это очень заниженно. В реальности мне не мешает 99.99% машин или типа того (в зависимости от процента неправильно припаркованных).
SuharkovMP
Вы ничего не путаете? Это был ответ на комментарий выше.
BigBeaver
Нет. Но очень сильно иронизирую. Настолько толсто, что даже тонко, видимо.
SuharkovMP
Ваша ирония помогла автору комментария обойти вопрос, который был адресован не вам. Спасибо за иронию.
NutsUnderline
в таком масштабе, кстати, тогда и не стоит волноваться что таким образом что то "строиться" и массово злоупотребляется
xaosxaos2
А Вы не нарушайте и доносов не будет. Так у меня автомобилисты возле дома отжали всё зелёное, что было. Сначала укатали газон выпилили деревья, снесли лавочки, потом сделали стоянку, так что она всё равно не для всех и продолжили убивать всё зеленое вокруг дальше. Ой ну всё надо же ставить куда Вам Ваше авто, но почему-то у нас не хотят покупать гаражи, последнее время они не котируются, да и туда за машиной идти порой минут 20, а тут вышел из подъезда бибикнул, завёл и поехал красота! Вы как собачники, ой она не кусается, только поиграет (откусить полноги и выбросит) зачем ей намордник, зачем за ней какашки убирать правда? Начните сначала с себя соблюдать правила не бросать мусор не выкидывать бычки не курить в общественном месте и доносов не будет. В чем проблема?
BigBeaver
Это что, в смысле? Это надо окружающих уважать что ли?
xaosxaos2
Надеюсь это был сарказм? :)
galaganovvv
Литерали 1984. А если серьезно, то что плохого в том, чтобы люди проявляли гражданскую позицию (при условии, что они ей не злоупотребляют). Тем более сейчас любой штраф можно легко обжаловать и это по сути сводит к минимуму риск получения штрафа лицом не нарушившим закон
P.s после прочтения второго комментария есть подозрение, что это какая-то метаирония
NutsUnderline
предлагаете терпеть молча?
BigBeaver
Нет конечно - терпила это латентный стукач. Тру пацаны должны брать дело в свои руки. Сжигать машины, наприемр. Или бить лицо водителю, ну или что-то такое, чем занимаются нестукачи.
vilgeforce
Хорошая идея, пацанов поменьше станет вскоре
Wesha
Ну зачем же сразу сжигать? Есть много интереных подходов. Вроде накрошить хлеба на крышу (часик отмывания от голубиных испражнений владельцу обеспечен); брюкву в выхлонпную трубу; забросить сырое яйцо в моторный отсек...
milkground
О, ровные пацанчики подтянулись на Хабр. Сами же в своих придуманных правилах путаетесь.
Wesha
Правильно! Пусть лучше помогают строить аналоговый концлагерь — пишут жалобы на пергаменте гусиным пером и отправляют голубиной почтой!
SuharkovMP
У Руси свой путь, и концлагеря свои. Будем писать голубиными перьями и использовать гусиную почту. Голубки - птица европейская. Русь должен олицетворять гусь.
Voiddancer
Не ожидал встретить ауе головного мозга на хабре