Search
Write a publication
Pull to refresh
20
0
Сергей Поповичев @Vanger

DevOps

Send message

Что бы я хотел знать когда начинал изучать Django? — очень общий взгляд

Reading time7 min
Views33K
Здесь на Хабре много различных инструкций по использованию Django. Эти инструкции часто включают много кода и представляют последовательность шагов, которые нужно сделать, чтобы создать проект.

Когда я начинал изучать Django и Wagtail по таким инструкциям, меня часто смущало, что пара команд создает кучу непонятных файлов (особенно на самом старте). Последующее описание этих файлов в инструкциях содержало слишком много деталей, которые трудно было усвоить за раз.

В этом посте я бы хотел посмотреть на Django с очень «философского вида» — минимум кода, максимум общих фактов. Думаю, что такой взгляд поможет тем, кто хочет начать изучать Django но теряется на старте.

image
Читать дальше →

Аэродромное обеспечение: большой пост про то, что там, на земле, делают самолёту

Reading time16 min
Views21K

Как правильно паковать самолёты в конверт

Привет!
Давным-давно вы просили продолжить рассказывать про те службы в авиации, которые пассажир не видит. Мы при неоценимой помощи сотрудника аэропортового обеспечения aerodromer решили описать вообще основные виды работ. Например, зачем нужно часто-часто косить траву.

Правила аэродромного обеспечения полётов очень подробно описаны в нормативных документах. Большинство из них — ещё начала 90-х годов. Более современные поправки поменяли нормативы не очень сильно. Несмотря на развитие технологий, очень многие вещи, выработанные годами и написанные кровью, уж простите за пафос, остались. По-прежнему одни из главных инструментов аэродромщика — голова, ноги, глаза.

Очень важной вехой в становлении правил аэродромного обеспечения стала катастрофа самолёта Ту-154 в аэропорту Омска в 1984 году. Тогда в условиях плохой видимости самолёт получил разрешение на посадку при работающих на полосе уборочных машинах (без радиостанций прослушки эфира и без проблесковых маячков). На двух из них были ёмкости с керосином по 7,5 тонны каждая. 178 погибших. Потом были выработаны основные правила при работе на ВПП, требования к автомобилям, выполняющим работы, ведению радиосвязи, взаимодействию между службами, обеспечивающими полёты. Но человеческий фактор остаётся основной причиной авиационных происшествий, и катастрофа Falcon 50 во Внуково в 2014 году лишь подтверждает эту избитую истину.
Читать дальше →

OCR-конвейер для обработки документов

Reading time11 min
Views17K
Сегодня я расскажу о том, как создавалась система для переноса текста из бумажных документов в электронную форму. Мы рассмотрим два основных этапа: выделение областей с текстом на сканах документов и распознавание символов в них. Кроме того, я поделюсь сложностями, с которыми пришлось столкнуться, способами их решения, а также вариантами развития системы.



Первичным переводом документа в электронную форму является его сканирование или фотографирование, в результате которого получается графический файл в виде фотографии или скана. Однако такие файлы, особенно высокого разрешения, занимают много места на диске, и текст в них невозможно редактировать. В связи с этим, целесообразно извлекать текст из графических файлов, что успешно делается с применением OCR.
Читать дальше →

Панорама-FM или как увидеть все радиостанции сразу с помощью SDR

Reading time38 min
Views21K
Привет, Хабр.

Наверное все, хоть немного интересующиеся радиосвязью, знают что с помощью SDR-приемника возможно принимать и обрабатывать широкую полосу спектра радиодиапазона. Собственно, отображением спектра в таких программах как HDSDR или SDR# никого не удивить. Я покажу как построить псевдо-3D спектр принимаемых станций с помощью RTL-SDR, GNU Radio и примерно 100 строк кода на языке Python.



Также мы возьмем приемник посерьезнее, и посмотрим на весь FM спектр 88-108МГц.
Продолжение под катом.
Читать дальше →

Таблица в Atlassian Confluence на основе данных из REST запроса

Reading time5 min
Views11K
Привет!

В этой статье я расскажу, как сделать страницу в Atlassian Confluence с таблицей, данные в которую будут приходить из REST запроса.

Мы сделаем страницу в Confluence с таблицей, которая будет содержать данные о проектах в Jira. Эти данные мы будем получать из Jira при помощи метода project из стандартного Jira REST API.

Вы можете посмотреть видео по этой статье вот здесь.
Читать дальше →

Шаблон backend сервера на Golang — часть 2 (REST API)

Reading time32 min
Views33K

UPD. Ссылка на новый репозиторий проекта с поддержкой развертывания в Kubernetes


Представленный ниже шаблон сервера на Golang был подготовлен для передачи знаний внутри нашей команды. Основная цель шаблона, кроме обучения — это снизить время на прототипирование небольших серверных задач на Go.


Первая часть шаблона посвящена HTTP серверу:


  • настройка HTTP сервера через командную строку и конфигурационный файл
  • настройка параметров TLS HTTP сервера
  • настройка роутера и регистрация HTTP и prof-обработчиков
  • настройка логирования HTTP трафика, логирования ошибок в HTTP
  • HTTP Basic и MS AD аутентификация, JSON Web Token
  • запуск сервера с ожиданием возврата в канал ошибок
  • использование контекста для корректной остановки сервера и связанных сервисов
  • настройка кастомной обработки ошибок и кастомного логирования
  • сборка кода с внедрением версии, даты сборки и commit

Вторая часть шаблона посвящена прототипированию REST API.
Ссылка на репозиторий проекта осталась прежней.


Третья часть посвящена развертыванию шаблона в Docker, Docker Compose, Kubernetes (kustomize).


Пятая часть посвящена оптимизации Worker pool и особенностям его работы в составе микросервиса, развернутого в Kubernetes.


Архитектура шаблона REST API


В ходе тестирования шаблона на стенде были получены следующие результаты.

Читать дальше →

Halt and Catch Fire — команда, заслужившая экранизацию

Reading time7 min
Views13K
Приветствую всех Хабрачан и Хабрачанок!

Спасибо всем вам за такую поддержку! Мы вместе прошли долгий и интересный путь по вселенным всех ключевых фильмов и сериалов в мире IT. Мы вместе пытались разобраться в сериале «Мистер Робот», вместе обсуждали лучшие комедии о нас с вами и смогли вместе задуматься над философским кино в IT. Настал черёд заключительной статьи про уникальный, на мой взгляд, сериал — «Halt and Catch Fire». Уникален он тем, что сериал про историю IT. В картине рассказывается о том, какой путь прошла вся индустрия до преобразования в привычную нам индустрию. Многие ждали эту статью и я постараюсь максимально подробно рассказать про этот сериал, который полюбился многим из нас.


Как я искал пацанский движок для блога

Reading time8 min
Views46K


Я много пишу в интернетах и мне захотелось завести свой личный стэндалон блог, куда можно писать мелкие заметки и статьи, не подходящие для других площадок. Главная проблема личного блога — мне лень оформлять посты. Чтобы черкануть пару строк в каком-нибудь Wordpress, нужно слишком много телодвижений. Я попробовал несколько разных движков и каждый раз ловил себя на ощущении, что мне не хочется ими пользоваться, намного быстрее и проще писать в записную книжку вроде Evernote или Notion. Так я стал искать идеальный движок для блога, отвечающий всем моим потребностям.

Мои требования к идеальному движку:


  • Желательно self-hosted — я пережил много закрытий сервисов, от narod.ru до google+ и точно знаю, что рано или поздно все протухает, поэтому надежнее всего держать контент у себя. Также посты могут удалять по каким-то фейковым жалобам или по DMCA, как это происходит на Medium и LiveJournal.
  • Возможность подключения своего домена — мне нужен сайт-визитка со всеми проектами и ссылками в одном месте, где можно разместить портфолио, резюме, контакты.
  • Минимум телодвижений и интерфейса — в идеале интерфейса CMS вообще не должно быть видно, админская панель не нужна, посты должны редактироваться, создаваться и просматриваться в одном месте.
  • Полноценный WYSIWYG редактор — поддержка разметки Markdown и обработка её в реальном времени, подсветка кода, вставка картинок из буфера обмена.
  • Нормальные комментарии — возможность оставлять анонимные комментарии и авторизовываться через максимум соц. сетей для персонифицированных комментариев.
  • Минималистичный внешний вид — я не хочу заниматься версткой и темами, подходящее оформление должно быть из коробки.


Внутри я рассказываю какой вижу идеальную CMS, редактор постов и комментарии, почему большинство существующих движков устарели на десять лет, и сравниваю между собой разные движки.

Отложенные ретраи силами RabbitMQ

Reading time7 min
Views29K

Меня зовут Алексей Казаков, я техлид команды Клиентских коммуникаций в ДомКлике. В этой статье я хочу поделиться с вами «рецептом», который позволил нам реализовать отложенные ретраи при использовании брокера сообщений RabbitMQ


rabbit_retry
Читать дальше →

Букварь по дизайну систем (Часть 1 с дополнениями по микросервисам)

Reading time37 min
Views25K


Несколько лет назад, для закрытия одного их предметов мне довелось перевести данный букварь. Де-факто этот вариант стал официальным переводом. Но развитию этого перевода мешает, тот факт, что он был написан в Google Drive и закрыт на редактирования. Сегодня я уделил время на переформатирования всего этого текста в MD формат с помощью редактора Хабра, с радостью публикую здесь и вскоре отдам текущим контрибьюторам.


Словарь


Node — нода — узел с каким либо ресурсом
Content — контент — данныe
Traffic — трафик — запрос/ответ, данные которые передаются от сервера клиенту и наоборот
Hardware — железо — аппаратная часть
Instance — инстанс — созданный объект какой либо сущности. Например инстанс сервера API
Headers — хедеры — заголовки (как правило TCP пакета, но может быть и HTTP запроса)



Читать дальше →

Микросервисы на С++. Выдумка или реальность?

Reading time5 min
Views16K


В этой статье я расскажу о том, как создал шаблон (cookiecutter) и настроил окружение для написания REST API сервиса на С++ с использованием docker/docker-compose и пакетного менеджера conan.


Во время очередного хакатона, в котором я участвовал в качестве бекенд-разработчика, встал вопрос о том, на чем писать очередной микросервис. Все что было написано на текущий момент, писалось мной и моим товарищем на языке Python, так как мой коллега был специалистом в этой области и профессионально занимался разработкой бекендов, в то время как я вообще являлся разработчиком под встроенные системы и писал на великом и ужасном С++, а Python просто подучил в университете.


Так вот, перед нами встала задача написать высоконагруженный сервис, основной задачей которого был препроцессинг поступающих к нему данных и запись их в БД. И после очередного перекура товарищ предложил мне, как С++ разработчику, написать этот сервис на плюсах. Аргументируя это тем, что так будет быстрее, производительнее, да и вообще, жюри будут в восторге от того, как мы умеем распоряжаться ресурсами команды. На что я ответил, что никогда не занимался такими вещами на С++ и с легкостью могу оставшиеся 20+ часов посвятить поиску, компиляции и компоновке подходящих библиотек. Проще говоря, я струсил. На том и порешили и спокойно дописали все на Python.

Читать дальше →

Хакинтош на Powermac G5 или как собрать себе рабочую станцию. Часть 2

Reading time14 min
Views19K

Это вторая часть истории о сборке в корпусе от PowerMac G5 рабочей машины на базе Х86 архитектуры.



Для начала о комплектующих.


После покупки блока G5 я стал размышлять, а что же поставить в него? Однозначно это должно быть решение на базе Xeon'а, и однозначно на сокете 2011. С серией я тоже определился довольно быстро, это или Е5-1600 или Е5-2600, и точно НЕ v1.

Как внедрить Atlassian Jira + Confluence в корпорации. Технические вопросы

Reading time10 min
Views14K
Планируете внедрение ПО Atlassian (Jira, Confluence)? Не хотите допустить жестоких ошибок в проектировании, которые потом придётся решать в последний момент?


Тогда вам сюда — рассматриваем внедрение Atlassian Jira + Confluence в корпорации с учётом различных технических аспектов.
Читать дальше →

Python + OpenCV + Keras: делаем распознавалку текста за полчаса

Reading time12 min
Views229K
Привет Хабр.

После экспериментов с многим известной базой из 60000 рукописных цифр MNIST возник логичный вопрос, есть ли что-то похожее, но с поддержкой не только цифр, но и букв. Как оказалось, есть, и называется такая база, как можно догадаться, Extended MNIST (EMNIST).

Если кому интересно, как с помощью этой базы можно сделать несложную распознавалку текста, добро пожаловать под кат.


Читать дальше →

Руководство по CI/CD в GitLab для (почти) абсолютного новичка

Reading time13 min
Views410K

Или как обзавестись красивыми бейджиками для своего проекта за один вечер ненапряжного кодинга


Наверное, у каждого разработчика, имеющего хотя бы один пет-проект, в определённый момент возникает зуд на тему красивых бейджиков со статусами, покрытием кода, версиями пакетов в nuget… И меня этот зуд привёл к написанию этой статьи. В процессе подготовки к её написанию я обзавёлся вот такой красотой в одном из своих проектов:


результаты


В статье будет рассмотрена базовая настройка непрерывной интеграции и поставки для проекта библиотеки классов на .Net Core в GitLab, с публикацией документации в GitLab Pages и отправкой собранных пакетов в приватный фид в Azure DevOps.


В качестве среды разработки использовалась VS Code c расширением GitLab Workflow (для валидации файла настроек прямо из среды разработки).

Читать дальше →

Измеритель температуры и влажности на контроллере Arduino c отображением значений на LCD дисплее

Reading time3 min
Views32K
Недавно я начал изучать программирование микроконтроллера Arduino. После того, как я выполнил несколько базовых упражнений (мигание светодиодом, работа с дискретными и аналоговыми входами, вывод информации на ЖК дисплей и т.д.) мне захотелось сделать какое нибудь полезное устройство для дома.

Я решил сделать измеритель температуры и влажности в комнате, с индикацией параметров на ЖК дисплее. Также я сделал адаптивную подсветку дисплея, которая меняет яркость в зависимости от уровня освещенности в комнате. Это позволяет уменьшить энергопотребление устройства, и тем самым увеличить срок службы батарейки.

Как повысить продуктивность команды (и снизить число ошибок) с помощью митингов

Reading time8 min
Views5.8K


«Нельзя совершить одну и ту же ошибку дважды: во второй раз это уже не ошибка, а выбор»,
— Стивен Денн

Если вы — единственный, кто несет ответственность за ошибку, то с таким утверждением не очень-то поспоришь. Но что, если ошибка совершается группой людей?

Например, легко ли вам удается найти и исправить ошибки, которые делает в работе ваша команда? В зависимости от уровня психологической защищенности иногда даже открытое обсуждение этих проблем с коллегами может показаться невозможным.

И что, если ошибка совершается в компании из 10 000 человек? Действительно ли повторение этой ошибки будет выбором, как следует из цитаты? Или всё-таки это проблемы, которые находятся вне вашего контроля?

Да, исправлять ошибки, совершаемые группой людей, гораздо сложнее, чем исправлять собственные ошибки (что вполне очевидно).

Но есть и хорошие новости: исправить типичные ошибки команды вполне реально, причем делать это можно на митингах. Давайте же выясним, как это происходит.

Переведено в Alconost
Читать дальше →

Планирование за час и другие оптимизации scrum ивентов

Reading time7 min
Views11K
image
Чистый скрам — как единорог на музыкальном фестивале: вроде бы он существует, все о нём говорят, только вот показать тебе его никто не может. Так же сложилось и у нас в команде, об этом и поговорим. А если конкретнее — о том, как мы сократили время на встречи и не потеряли пользу от них.
Читать дальше →

Интеграция Gitlab, Jira и Confluence на Python для автоматизации сборки релизов

Reading time6 min
Views8.3K
Недавно на стендапе коллега внес рацпредложение: автоматизировать сборку релизов, взяв за основу готовые уже наработки по взаимодействию с Jira, написанные на Python.

Процесс деплоя у нас следующий: когда накапливается достаточное количество задач, прошедших тестирование из них собирается Релиз-кандидат (RC) в каждом проекте, затронутом задачами, затем задачи тестируются в составе RC. После этого RC заливается на стейджинг сервер, где в близком к боевому окружении все еще раз тестируется и проводится полный регресс. И затем, после необходимых деплойных действий свежий релиз заливается в мастер.

До недавнего времени весь процесс сборки проводился кем-либо из разработчиков вручную. Что отнимало час, два и больше времени и было, мне кажется, не очень интересным занятием. Теперь же, когда уже почти все готово, релиз из 20 задач, затрагивающий 5 проектов, собирается меньше минуты. Остается, конечно еще разрешение конфликтов, запуск пропущенных тестов и прочее, но даже с учетом этого, времени разработчиков и тестировщиков, вынужденных ждать, пока кто-то и первых освободится и создаст RC, экономится немало.

В общем, приступил я к задаче, и она оказалась очень интересной и увлекательной. А что еще надо для удовольствия от работы, как не увлекательных проектов?
Читать дальше →

Одновременное ведение Ajile (недоаджайл) и Waterfall проектов

Reading time6 min
Views9.2K
Есть множество готовых проверенных временем фреймворков для организации рабочего процесса, в которых хорошо описаны методы и принципы. Если собираем машину, используем Kanban, готовим пирог — Lean, разрабатываем сайт на заказ — PMBoK. Важно учитывать, что каждый проект уникален и нуждается в адаптации подходов, но в целом для вашего случая скорее всего уже есть достаточно полезных решений. Выстраивая процессы для себя, взял всего понемногу.

Было


Работал в стартапе. Один продукт, одна небольшая команда, нет жестких ограничений по срокам. Использовали Scrum и Kanban в чистом виде, если можно так выразиться. Записывали задачи в Trello и перетаскивали по 4 доскам: идеи, надо сделать, в работе, готово. Для обсуждения хода работы созванивались каждый день, а раз в неделю планировали задачи на следующий спринт. Все как у людей.
Что стало потом?

Information

Rating
Does not participate
Location
Калужская обл., Россия
Date of birth
Registered
Activity