Pull to refresh
19
0
Игорь Руденко @ig_rudenko

Инженер-программист

Send message

20 лучших практик по работе с Dockerfile

Reading time13 min
Views37K

Эта статья содержит рекомендации по написанию Dockerfile и принципам безопасности контейнеров и некоторые другие связанные темы, например про оптимизацию образов.

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

К счастью, большинство потенциальных проблем мы можем решить еще на этапе разработки.

Хорошо подготовленный Dockerfile исключает необходимость использовать привилегированные контейнеры, открывать порты, в которых нет необходимости, включать лишние пакеты и избегать утечки чувствительных данных. Старайтесь решить эти проблемы сразу, это поможет в дальнейшем сократить усилия на поддержку ваших приложений.

Читать далее
Total votes 38: ↑36 and ↓2+40
Comments22

Книжная полка DevOps-инженера

Level of difficultyEasy
Reading time9 min
Views17K

Всем привет! Решил накидать книжных полезняшек для тех, кто любит DevOps или движется в этом направлении. Книги поделил по темам: сначала базовый уровень, потом архитектура, методологии, ну и всё остальное. В общем, от и до.

Я Сергей Задорожный, руководитель отдела платформенных решений банка «Центр-инвест» и один из авторов курса «DevOps для эксплуатации и разработки» от Яндекс Практикума. Раньше занимался написанием бэкендов на Java и Kotlin, потом занялся архитектурой, выстраиванием процессов, а сейчас заношу DevOps-практики в финтех-энтерпрайз.

Читать далее
Total votes 22: ↑22 and ↓0+26
Comments4

Безопасность в Django: защита от распространенных угроз веб-приложений

Level of difficultyEasy
Reading time39 min
Views6.6K

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

Читать далее
Total votes 32: ↑31 and ↓1+36
Comments4

Обзор и гайд по Tortoise ORM: собрал в одну статью все, что надо знать об инструменте и своем опыте работы с ним

Level of difficultyMedium
Reading time26 min
Views4.9K

Привет, Хабр! Меня зовут Даниил Лихачев, я Python backend developer в диджитал-продакшене Далее. Сегодня я хотел бы представить вашему вниманию асинхронную библиотеку для работы с базами данных под названием Tortoise ORM. Это обзорная статья, чтобы показать, что из себя представляет данная библиотека и для каких проектов она подойдет. Также на основе своего опыта постараюсь осветить аспекты, в которых Tortoise ORM хороша и удобна, а также те, в которых ее возможностей может не хватать и как это обойти. Также бонусом предоставлю свой шаблон в стеке FastAPI + Tortoise ORM.

Читать далее
Total votes 15: ↑14 and ↓1+17
Comments16

Как подружить Celery и SqlAlchemy 2.0 с асинхронным Python

Level of difficultyMedium
Reading time3 min
Views9.6K

Недавно, я столкнулся с задачей, когда с проекта на Python нужно было стряхнуть пыли и заставить работать чуточку производительнее. В следствии чего монолит был распилен на микросервисы, а брокером между сервисами стали всем знакомый RabbitMQ и такой же старый как сам Python - Celery. Проект был перенесен с Django на FastAPI, который по-моему субъективному мнению является идеальным решением для любых бэкендов на Python. Проблема с которой я столкнулся во время подключения Celery описана в данном посте.

Читать далее
Total votes 7: ↑7 and ↓0+7
Comments11

Django Admin с миллионами записей — 11 практик оптимизаций для начинающих

Reading time8 min
Views23K

Django — самый популярный Python web-framework. За больше чем 10 лет оброс огромным слоем возможностей. Среди них можно выделить — Django Admin — это готовый CRUDL интерфейс с поиском, фильтрами и хитрыми настройками.


Каждый раз стартуя проект на Django, удивляюсь насколько круто иметь админку — web интерфейс просмотра данных. Да еще и бесплатно.


Каждый раз поддерживая проект на Django, удивляюсь, как же сложно поддерживать админку в рабочем состоянии.


В этой статье я постараюсь привести 11 практик, которые позволят избегать тормозов админки максимально долго.

Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments10

Отказоустойчивый кластер с балансировкой нагрузки с помощью keepalived

Reading time15 min
Views73K

Сегодня я расскажу о том, как быстро собрать отказоустойчивый кластер с балансировкой нагрузки с помощью keepalived на примере DNS-серверов.

Читать дальше →
Total votes 13: ↑12 and ↓1+16
Comments40

Погружение в DevOps: запускаем GitLab и GitLab Runners локально

Level of difficultyMedium
Reading time3 min
Views5.9K

В этой статье мы рассмотрим, как развернуть собственный GitLab сервер и GitLab Runners с использованием Docker Compose. Это руководство поможет вам создать локальную среду для изучения и практики GitLab CI/CD. Мы пройдем через все этапы: от настройки контейнеров до регистрации раннеров и создания примера CI/CD пайплайна. Независимо от того, новичок вы в CI/CD или опытный разработчик, этот гайд предоставит вам ценные знания для улучшения вашего процесса разработки.

Читать далее
Total votes 7: ↑4 and ↓3+5
Comments3

System Design 101

Level of difficultyMedium
Reading time42 min
Views97K



О сложных системах простыми словами.


В шпаргалке на высоком уровне рассматриваются такие вещи, как протоколы коммуникации, DevOps, CI/CD, архитектурные паттерны, базы данных, кэширование, микросервисы (и монолиты), платежные системы, Git, облачные сервисы etc. Особую ценность представляют диаграммы — рекомендую уделить им пристальное внимание. Полагаю, шпаргалка будет интересна всем, кто хоть как-то связан с разработкой программного обеспечения и, прежде всего, веб-приложений. Буду признателен за помощь в уточнении/исправлении понятий, терминологии, логики/алгоритмов работы систем (в рамках того, что по этому поводу содержится в оригинале), а также в обнаружении очепяток.


Выражаю благодарность Анне Неустроевой за помощь в редактировании материала.


Возможно, немного другой формат шпаргалки покажется вам более удобным.


System Design (сборник на английском языке).

Читать дальше →
Total votes 79: ↑79 and ↓0+79
Comments17

Разработка системы заметок с нуля. Часть 1: проектирование микросервисной архитектуры

Reading time4 min
Views13K

Данный проект рассматривается как pet-project. Любую критику и советы готов увидеть в комментариях.

Это моя фактически первая статья на хабре за долгое время, последняя была написана очень много лет назад, если что-то не так - напишите в личные сообщения - я все исправлю.

Репозиторий с исходным кодом: https://github.com/theartofdevel/notes_system

Видео версия: https://www.youtube.com/watch?v=Txi95RQPRP0

Под катом текстовая расшифровка.

Читать далее
Total votes 11: ↑8 and ↓3+6
Comments7

Инструменты практического изучения сетей

Reading time4 min
Views5.2K
Привет! Я — golang разработчик в Каруне. Часто в работе сталкиваюсь с тем, что нужно понять, как функционирует та или иная сетевая система. Как правило, современные компьютерные системы объединены в сеть, и взаимодействие между узлами этой сети можно рассматривать через теоретическую призму модели OSI. 
Читать дальше →
Total votes 7: ↑7 and ↓0+7
Comments0

Как (вы)жить без отдела безопасности

Reading time15 min
Views14K
Безопасность — это защита объектов и интересов от угроз. Когда кажется, что с ней всё хорошо, в интернете появляется много интересного: списки e-mail и телефонов из незащищённой базы данных крупных магазинов, записи колл-центров некоторых операторов, логины и пароли производителей оборудования из открытого репозитория или данные миллионов кредитных карт клиентов крупных банков.



Безопасность — это непросто. Но и ничего сложного в ней тоже нет — это множество рутинных действий: инвентаризация, мониторинг, проверка доступов, тесты, инвентаризация, контроль, мониторинг, логирование, инвентаризация и инвентаризация. В безопасности много инвентаризации. Почему так, что такое безопасность и с чего она начинается, расскажет Мона Архипова.

Мона Архипова — соучредитель и COO в sudo.su (МИРЦ) и vCISO Anna Systems. Ранее работала на различных руководящих и экспертных должностях в IT и безопасности. Всё ещё играющий бизнес-тренер.
Total votes 18: ↑16 and ↓2+20
Comments12

50 оттенков matplotlib — The Master Plots (с полным кодом на Python)

Reading time39 min
Views387K
Те, кто работает с данными, отлично знают, что не в нейросетке счастье — а в том, как правильно обработать данные. Но чтобы их обработать, необходимо сначала проанализировать корреляции, выбрать нужные данные, выкинуть ненужные и так далее. Для подобных целей часто используется визуализация с помощью библиотеки matplotlib.



Встретимся «внутри»!
Читать дальше →
Total votes 67: ↑67 and ↓0+67
Comments15

Для чего хакерам Микротик и как я спрятал 100 тыс. RouterOS от ботнета

Reading time9 min
Views324K
RouterOS очень мощный инструмент в руках профессионалов и ответственных специалистов. Но в руках новичков или тех, кто делает всё на «и так сойдёт» Mikrotik начинает жить своей жизнью и превращается в ноду ботнета.

Ещё в мае 2018 я писал статью с рекомендациями как защитить свой Микротик.

Как ни странно, но в сети до сих пор тысячи «открытых» роутеров Mikrotik и армия ботнета пополняется.

Я в свободное от работы и отдыха время искал уязвимые устройства по всей сети и делал настройки в соответствии со своими рекомендациями, то есть добавлял правила фаервола, которые закрывали доступ к роутеру не из локальной сети. В комментариях писал информацию об уязвимости и оставлял адрес телеграм-канала @router_os, где можно было мне задать интересующие вопросы (у нормального админа они должны были появиться).



С мая по сегодняшний день я «вырвал» из лап ботнета более 100 тысяч устройств Mikrotik.

Учитывая то, что я не могу выступить на MUM 2018 в Москве, то свой доклад я решил опубликовать на habr.com
Читать дальше →
Total votes 81: ↑80 and ↓1+79
Comments115

Склеиваем несколько фотографий в одну длинную с помощью компьютерного зрения

Reading time4 min
Views25K
В предыдущих статьях был описан шеститочечный метод разворачивания этикеток и как мы тренировали нейронную сеть. В этой статье описано, как склеить фрагменты, сделанные из разных ракурсов, в одну длинную картинку.
Читать дальше →
Total votes 101: ↑101 and ↓0+101
Comments30

Парадокс Эйнштейна — Подольского — Розена на пальцах и… при чём тут эфир

Reading time8 min
Views31K
Парадокс Эйнштейна — Подольского — Розена сейчас активно изучают в многих лабораториях мира и научных институтах. Пишутся тонны научных статей. Поднято много хайпа в около-научных кругах.


Только лишь одна загвоздка, хотя и достаточно парадоксальная. В самой квантовой механике нет ничего парадоксального в парадоксе ЭПР! Ни граммульки!

Так почему же его так пристально изучают?

И да, при чём тут эфир?!
Читать дальше →
Total votes 28: ↑22 and ↓6+27
Comments211

Как не платить за Java хостинг или быстрый старт с Google App Engine

Reading time4 min
Views18K

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


Все отлично, если вы, скажем, PHP программист — дешевых и даже бесплатных хостингов море.


А что если вы программист Java? Готовые Tomcat хостинги недешевы, а если у вас еще и несколько таких программок, то желание поделиться ими с друзьями выльется в копеечку.


Примерные цены на JVM хостинг

Что же делать?


Google нам поможет...

Читать дальше →
Total votes 17: ↑17 and ↓0+17
Comments14

9 лучших опенсорс находок за ноябрь 2019

Reading time2 min
Views20K

Доброй зимы, дамы и господа. Подготовил для вас подборку самых интересных находок из опенсорса за ноябрь 2019.


За полным списком новых полезных инструментов, статей и докладов можно обратиться в мой телеграм канал @OpensourceFindings (по ссылке зеркало, если не открывается оригинал).


В сегодняшнем выпуске.
Технологии внутри: Rust, TypeScript, JavaScript, Go, Python.
Тематика: веб разработка, инструменты для QA, работа с данными, инструменты разработчика и администратора.


Прошлый выпуск.

Читать дальше →
Total votes 27: ↑26 and ↓1+32
Comments19

Действительно понятное объяснение квантовой запутанности (парадокса ЭПР)

Reading time8 min
Views18K
Понятное для тех, кто захочет разобраться, конечно. Пост состоит из трех частей. Для понимания сути явления, достаточно ознакомиться только со второй частью.

  1. Вводная (зачем, да почему)
  2. Конкретные расчеты
  3. Философско-практическая часть.

1. Вводная (зачем, да почему)

Сподвигло меня на этот пост следующее обстоятельство. В инете достаточно много материалов на эту тему. Однако 80% процентов из них страдают трагическим недостатком – они достаточно подробно рассказывают, почему классическая логика не права и ограничиваются констатацией факта, что в квантовой механике все по-другому и наблюдения соответствуют предсказанным ей значениям. Остававшаяся часть грузит математическим аппаратом и после вереницы формул говорит – ну вот видите, будет вот так-то. После этого возникает ощущение боли от изнасилования мозга, ибо реального удовольствия понимания при этом не возникает.

А понимания хочется, т.к. по моему глубокому убеждению, все-таки следующий революционный скачок технологий, будет связан с овладением человечеством квантовой мощью. И подобно тому, как в 60-х люди даже вообразить не могли, как эти громадные железки занимающие целые подвалы, изменят нашу жизнь, радикально уменьшив размеры и увеличив мощь, так и сейчас мы не представляем себе весь потенциал неуклюжих прототипов с 50 кубитами.
Читать дальше →
Total votes 20: ↑10 and ↓10+7
Comments141

Структура DNS пакета

Reading time7 min
Views40K

Предисловие


Решил как то написать снифер DNS, так сказать just for fun. Просто посмотреть какие адреса в моей системе резолвятся. Протокол старый, документации должно быть много. Много. Но все статьи очень не полные и заканчиваются, на самом интересном моменте. Да, есть rfc1035, но хотелось бы на русском и с пояснениями. Собственно по накоплению опыта и разбора пакета и созрела данная статья. Она рассчитана на тех, кто понимает, что такое DNS и понимает, что бывают запросы и ответы. Для тех, кто хочет немного разобраться в структуре данного протокола.

Статья предполагает теорию, а потом немного практики.
Читать дальше →
Total votes 24: ↑22 and ↓2+27
Comments6
1

Information

Rating
Does not participate
Location
Севастополь, Республика Крым, Россия
Date of birth
Registered
Activity