DevFM
Открыть в Telegram
О разработке: AI, технологии, инструменты, system design, процессы, команды Для связи @sa_bul
Больше2 837
Подписчики
+224 часа
-27 дней
+4930 день
Архив постов
2 837
Проектируем сервис: поиск организаций по картам
Частью жизни middle-разработчика и выше является проектирование сервисов. На собеседованиях эта секция называется system design interview. В рамках проектирования нужно уточнить требования к сервису и ограничения, оценить возможную нагрузку, выбрать те или иные технические решения.
В видео FAANG System Design Interview: Design A Location Based Service (англ) проектируют сервис поиска ближайших организаций по картам. Требуется регистрация организации (классический CRUD) и поиск ближайших для заданной геопозиции (вернуть все организации в заданном радиусе). Условия — 200 млн организаций на карте и 100 млн пользователей, генерирующих в день по 5 запросов каждый. Сможете по этим данным прикинуть объём диска для хранения будущей БД?
Автор подробно рассматривает способы хранения точки на карте для быстрого поиска ближайших — geohash и quadtree.
#skills #youtube
2 837
Брокер сообщений Apache Kafka
Начать изучение рекомендуем со статьи Apache Kafka: основы технологии от ребят из slurm, в которой покрыты:
— отличия кафки от остальных сервисов очередей
— базовые компоненты kafka
— основные принципы работы
Для опытных пользователей будет полезна статья Apache Kafka: the Complicated Simplicity (открывать с vpn) о неочевидных проблемах, с которыми можно столкнуться. Но наибольшую ценность представляют предложенные решения.
Нам эта статья помогла разобраться, почему не удаляются записи месячной давности при явно заданном в настройках правиле "удалять записи старше одного месяца". Дело в том, что кафка хранит данные в сегментах (segments). Запись осуществляется в один активный сегмент, который при достижении определенного размера становится неактивным. Оказалось, что удалять можно только данные из неактивных сегментов. И правило на удаление не сработает, если данные в этот момент находятся в активном сегменте.
2 837
Backup: август
Python:
1. Управляем зависимостями: poetry / вендоринг
2. Пример логгирования в python / применяем else в цикле for / разбираем код в трёх постах
3. Заглушки для тестирования — постановка задачи и решение
Обучение:
1. Сравнение брокеров сообщений: идеальные критерии
2. Английский язык: почему он важен / как я научился воспринимать английский на слух
3. Чему стоит научиться в вузе? (хватить губить будущее ИТ)
Рассуждаем о программировании:
1. Нормальный ли у меня код?
2. Поддерживаемость кода
3. Чем плох goto?
4. Чему я научился за 30 лет в разработке?
Hardskills:
1. Подводные камни в bash
2. Анатомия Linux
Самое популярное:
Корчеватель ломает науку — как сгенерированные тексты пытаются опубликовать в рецензируемых изданиях
Наши видео:
1. Идеальный скрипт на bash
2. Атака forkbomb в docker
3. Стрим по pythonBackup: август
#backup
2 837
В файле requirements.txt обычно собраны необходимые для запуска python-проекта пакеты. Для установки этих зависимостей нужно выполнить команду
pip install -r requirements.txt
Но с ростом числа поддерживаемых проектов появляются конфликты между разными версиями пакетов. Например, одновременная поддержка Django версий 2, 3 и 4 — это кромешный ад. В статье Modern Python Environments приведен обзор систем управления окружением в python, а в конце есть удобная сравнительная табличка.
Какие проблемы есть у requirements?
1. Команда pip freeze выводит длинную портянку зависимостей проекта. Поддерживать в аккуратном, контролируемом состоянии подобный файл сложно. Никогда нельзя понять, какие из зависимостей являются основными, а какие транзитивными.
2. Нет возможности разделять зависимости по средам исполнения. В development-среде нужны тесты и линтеры, которые в production-среде не требуются.
Для управления зависимостями в проектах я использую Poetry. Из интересного, в poetry отказались от привычного нам requirements, решив проблемы так:
1. Основные зависимости проекта хранятся в файле pyproject.toml, все остальные зависимости poetry собирает в отдельном файле.
2. Для разделения зависимостей по средам исполнения в процессе установки пакета необходимо указать соответствующую опцию и в pyproject.toml появится соответствующий раздел. В production-среде вы сможете устанавливать одни зависимости, в dev другие.
Еще в poetry стоит выделить возможность собирать ваш код в питоновские пакеты, дополнительно не описывая установщик setup. Есть и другие интересности, за которыми стоит заглянуть в документацию.
Poetry полезен даже в Docker, обеспечивая возможность переноса зависимостей между этапами сборки в multi-stage builds.2 837
Мы сняли часовой стрим по созданию небольшого проекта на python для начинающих разработчиков. Идея проста — прочитать в csv-файле ФИО и login и проверить существование этого login на gitlab. Но тут vim, проект на gitlab, консольный git, исключения, google docstring, правильная структура проекта и тесты — всё слилось в едином экстазе.
Все покрытые темы — в описании под видео.
#youtube
2 837
Пятничное развлекательное. Этим вечером предлагаем вам очередную подборку комиксов от xkcd с лёгким налётом безумия. Про интерес к этому комиксу вы можете почитать в старом посте.
Безопасность
Взгляды на конфиденциальность
Бессонница
Кишечная фауна
Представь себе поляну
Проверка багажа
Путешествие во времени
Свобода слова
#fun
Уже доступно! Исследование Telegram 2025 — ключевые инсайты года 
