Как стать автором
Поиск
Написать публикацию
Обновить
0
0

Пользователь

Отправить сообщение

Подготовка к техническому собеседованию Senior/Team Lead backend

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров25K

Недавно появились мысли походить на собеседования чем я успешно занялся. Если конкретно - смотрел лидовскую/сеньерскую позиции на Python и Golang(но статья может пригодиться backend разработчикам в целом). Не ставлю целью статьи объять все не объятное и дать какие-то гарантии. Я лишь зафиксирую данные для себя на будущее.

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

Сразу сделаю пометку, что некоторые навыки/ресурсы специфичны(по типу нарешивания Leetcode), но отталкиваемся от текущих реалий рынка.

Читать далее

Фоновые асинхронные задачи в FastAPI и их мониторинг

Время на прочтение19 мин
Количество просмотров28K

Привет! Меня зовут Иван, я бэкенд-разработчик в KTS.

Сегодня расскажу, как в FastAPI эффективно работать с фоновыми задачами и настроить их мониторинг в Prometheus.

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

В статье опишу 5 вариантов: встроенный в FastAPI Background Tasks и 4 библиотеки — ARQ, SAQ, FastStream, адаптированный к асинхронному коду Celery.

В конце расскажу, как мониторить фоновые задачи.

Читать далее

Асинхронные задачи с FastAPI и Celery

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров33K

Если в приложении есть длительные процессы, то вместо того, чтобы блокировать основной поток, вы должны обрабатывать их в фоновом режиме.

Чтобы достичь этого, мы расскажем вам о процессе настройки Celery и Redis для обработки длительно выполняющихся процессов в приложении FastAPI. Мы также будем использовать Docker и Docker Compose, чтобы связать все воедино. Наконец, мы рассмотрим, как протестировать задачи Celery с помощью модульных (unit) и интеграционных тестов.

Читать далее

Spring Boot. Фоновые задачи и не только

Время на прочтение10 мин
Количество просмотров38K

Введение


В данном туториале я хочу привести пример приложения для отправки email-ов юзерам, основываясь на дате их рождения(например с поздравлениями), используя аннотацию Scheduled. Я решил привести данный пример, т к по моему мнению он включает в себя довольно многие вещи, такие как работа с базой данных(в нашем случает это PostgreSQL), Spring Data JPA, новый java 8 time api, email-сервис, создание фоновых задач и небольшую бизнес-логику при этом оставаясь компактным. Сегодня интернет пестрит огромным множеством туториалов которые обычно сводятся к тому как наследоваться от CrudRepository, JpaRepository и тд. Туториал расчитан на то, что вы уже смотрели хотя бы некоторые из них и имеете представление о том, что такое Spring Boot. Я же постараюсь показать пример приложения, которое более обширно показывает его возможности и как с ним работать.

Создание проекта


Идем на Spring Initializr.

Добавляем зависимости:

1. PosgreSQL — в качестве базы данных
2. JPA — доступ к базе
3. Lombok — для удобства и избавления от бойлерплейт кода(не придётся писать геттеры, сеттеры и тд самим), подробнее тут
4. Mail — собственно для работы и отправки email-ов, оф. документация

Указываем группу и артефакт, к примеру com.application и task. Скачиваем и распаковываем проект, затем открываем его в среде разработки, у меня это Intellij IDEA.

База данных


Теперь устанавливаем себе PostgreSQL. Далее создаём базу данных с юзером и паролем. Можно сделать это прямо из IDEA, во вкладке database, можно с помощью командной строки если у вас линукс, следующими командами:

sudo -u postgres createuser <username>
sudo -u postgres createdb <dbname>
$ sudo -u postgres psql
psql=# alter user <username> with encrypted password '<password>';
psql=# grant all privileges on database <dbname> to <username> ;

Также на windows это можно сделать с помощью pgAdmin или его альтернатив.
Читать дальше →

Создаём безукоризненную автодокументацию кода на Python с помощью Sphinx

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров11K

В этой статье я расскажу о генераторе документации Sphinx, с помощью которого можно автоматически создавать документацию для модулей Python. Кроме того, я буду использовать шаблон проекта Cookiecutter Data Science в Visual Studio Code (VS Code), поскольку он легко интегрируется в Sphinx и имеет стандартизированную структуру директорий. Официальное пособие по использованию Sphinx — отличный ресурс для пользователей, которые хотят углубиться в детали. А моя статья — это краткое руководство по началу работы с этим инструментом.

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

Заметаем рутину под ковёр. Шаблон Step Builder в Java

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров5.1K

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

Читать далее

Как сделать форму согласия на обработку персональных данных на сайте. Справится даже школьник

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров3.4K

Привет, Хабр! Меня зовут Тимур уже два года я развиваю в HFLabs продукт «Центр управления согласиями» для энтерпрайза. Тема эта интересная, болезненная и острая одновременно, ведь персональные данные собирает не только крупный бизнес, а вообще все. Любой сайт — от продажи крафтового печенья до крупного автодилера и страховой компании — имеет если не форму регистрации, то анкету для подписки на новости уж точно. 

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

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

Мы подготовили инструкцию, как самостоятельно настроить формы ввода. Для примера взяли CMS «1С-Битрикс: Управление сайтом» и в основном ту самую стандартную функциональность CMS. Материал будет полезен web-студиям и отдельным web-мастерам, а также всем, кто так или иначе работает с согласиями — пусть и в других системах. Расскажем, как формы должны выглядеть и как объяснить заказчику, почему предпроставленная галочка — это не очень хорошо. 

Читать далее

YandexGPT API быстро и без труда с Python SDK. Делимся опытом интеграции

Уровень сложностиСредний
Время на прочтение25 мин
Количество просмотров17K

YandexGPT API — сервис для доступа к генеративным языковым моделям, хоть и является мощным инструментом во многих задачах, однако может озадачить разработчика, решившего внедрить его в свои проекты отсутствием официального SDK, разнообразием способов авторизации, видов моделей и эндпоинтов API. В данной статье я рассказываю, как мы внедряли YandexGPT в свои проекты, а в конце делюсь всеми наработками.

Читать далее

Почему ни в коем случае НЕ надо становиться DevOps инженером! Предостережения начинающим и совет что же делать если «НЕ»

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров54K

Кто я такой, чтобы делиться своими суждениями и утверждениями? Мне почти 47, в сфере IT профессионально работаю около 25 лет, начав самообучение со школы, с папиного i386 с сопроцессором и модемного dial-up на зюхелях (ну... все же помнят.. да? ну да же? :-) Естественно, среди моего опыта и высшее образование, и технические сертификаты, и работа во множестве компаний самого разного масштаба и разных стран. Сейчас я обладаю как негативным, так и позитивным опытом в различных аспектах IT технологий, попробовав себя как в софте, так и в железе.

Этот опыт заставляет меня поделиться информацией из той самой негативной составляющей с целью предотвращения его повторения читателями. И да, тут будет много злобы и яда к тому дерьму тем технологиям, с которыми приходится работать каждый день DevOps и даже системным администраторам. Однако статья наполнена реализмом, а вовсе не пессимизмом! :-D В ней будет раскрыта вся голая правда про лично Ваше будущее как DevOps инженера!

Читать далее

SOLIDно знать…

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров7.1K

SOLID. Принципы и Паттерны. Паттерны и Принципы.
Что может быть ближе друг другу чем эти субстанции ?! Эта статья проведет параллель между ними, она не собирается объяснить суть каждой, вместе или отдельно, а желает показать как одна другой помогает.
То есть, статья в некотором роде перекрестный бой между паттернами и SOLID принципами.

Читать далее

Управление API или API Security? Что это такое?

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров2.3K

В сфере кибербезопасности существует постоянная гонка между атакующими и защитниками. Этот процесс можно сравнить с визуальным процессом гонки, где основная цель - это скорость. Начинается все с фазы разведки, где происходит инвентаризация ресурсов. Затем команды приоритизируют задачи и принимают меры, основанные на этих приоритетах. Важно отметить, что скорость играет ключевую роль в этой гонке. Примером может служить серия событий, начавшаяся с утечки набора инструментов в открытый доступ от группы хакеров «The Shadow Brokers». Через месяц после этого появился шифровальщик WannaCry, а вскоре после этого его модификация NotPetya, использующая те же уязвимости с незначительными изменениями. Это произошло благодаря быстрой адаптации уже существующего кода и техник. Сравнивая сегодняшние события с прошлыми, мы видим, что скорость изменений значительно выросла. Если раньше для появления базовой атаки требовался месяц, то сейчас это может занять менее 10 дней. Это объясняется не только изменениями в инструментарии, но и развитием технологий, включая использование искусственного интеллекта. Однако вместе с увеличением скорости изменений возросла и сложность кибербезопасности. Системы становятся связанными и зависимыми друг от друга, что создает новые вызовы для обеспечения их безопасности. Необходимость защиты таких систем становится все более острой, и скорость реагирования является ключевым фактором в обеспечении безопасности в цифровом мире.

Почему важно быстро реагировать на уязвимости, и какую роль здесь играет Web Application Firewall (WAF).

Читать далее

Lombok — как с ним жить, а не страдать или вариант best practics для lombok

Время на прочтение5 мин
Количество просмотров9K

Когда я впервые увидел - lombok, у меня возникло, дикое сопротивление. Было очевидное ощущение, что что-то не так. Я думаю, у многих консервативных разработчик возникло такое же ощущение. Однако, lombok популярен. Люди его любят, люди его используют. А значит, есть и будут появляться проекты с ним. А значит нам с этим всем придется как-то жить.

Читать далее

Настройка конвейерной сборки Java-проектов в GitLab

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров4.9K

Автоматическая доставка проектных артефактов в тестовые и продуктивные среды является безусловной необходимостью современных процессов промышленной разработки ПО. 

Мы пройдем полный процесс создания пайплайна для сборки и деплоя при помощи GitLab и сопутствующего ПО. Все операции мы проделаем на одном компьютере, хотя ничто не должно вам помешать сразу или в дальнейшем масштабировать полученное решение на один или несколько серверов. Для экспериментов лучше иметь достаточно современный компьютер с количеством оперативной памяти не менее 16 гигабайт, производительным процессором и хорошим интернет-каналом. 

Предполагается, что у вас уже установлены Docker и ssh-сервер и вы немного умеете со всем этим обращаться. 

Читать далее

Распознавание, хранение и поиск лиц в базе данных

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров15K

В этой статье я максимально коротко и просто объясню принцип распознавания, хранения и поиска лиц в базе данных. В качестве примера будет использована библиотека Insightface и база данных PostgreSQL.

Читать далее

Pet-проект на Rust нуждается в конструктивной критике

Уровень сложностиСредний
Время на прочтение1 мин
Количество просмотров6.1K

Примерно 8 месяцев назад я написал на Rust pet-проект, который пытается быть подобием Hibernate в экосистеме Java. Я даже опубликовал его в качестве Open Source, но получил негативный отзыв и удалил его с GitHub.

Сейчас я решил вернуться к этому проекту, но подойти к нему с другой стороны. Я бы хотел услышать идеи по проекту от опытных разработчиков на Rust. Что в моем проекте сделано не в идиоматическом стиле Rust и т.д. и т.п. В общем, хочется получить чек-лист того, что в проекте не так и как это исправить.

Читать далее

Временное хранилище данных на Apache Druid: почему это эффективно сработало для загрузки табличных файлов

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров3.6K

Всем привет! Меня зовут Амир, я Data Engineer в компании «ДЮК Технологии». Расскажу, как мы спроектировали и реализовали на Apache Druid хранилище разрозненных табличных данных.

В статье опишу, почему для реализации проекта мы выбрали именно Apache Druid, с какими особенностями реализации столкнулись, как сравнивали методы реализации датасорсов.

Читать далее

Создаем свой диалект змеиного, или DSL на Python

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров3.3K

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

Как один из вариантов решения предлагаю посмотреть создание своего диалекта Python-скриптов, предназначенного для конкретной предметной области. Этакий DSL «для бедных», с синтаксисом Python, но со средой выполнения, заточенной под выполняемые задачи.

Читать далее

ГАЙД по python стеку для Data Science инженеров

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров21K

Data science - это область, которая занимается изучением и анализом больших объемов данных, чтобы находить в них полезные закономерности, делать прогнозы или принимать решения на основе фактов. Самым популярным языком программирования для data science является Python. Библиотеки pyhton, о которых пойдет речь: NumPy, SciPy, Pandas, Matplotlib. Статья написана для новичков, которые хотят узнать о python стеке для data science.

Подробнее

Как быстро собрать кубик для простых задач: играемся с TinyOLAP

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров4.1K

Привет, Хабр. Сегодняшняя статья будет интересна тем, кто хочет собрать простой OLAP‑куб для анализа данных, чтобы понять, как он устроен и работает. Экспериментировать будем с помощью TinyOLAP, одного из немногих OpenSource движков на Python.

Читать далее

Pandas: от хаоса к красоте кода

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров17K

Работа с pandas.DataFrame может превратиться в неловкую кучу старого (не очень) доброго спагетти-кода. Я и мои коллеги часто используем эту библиотеку, и хотя мы стараемся придерживаться хороших практик программирования, иногда мы все равно мешаем друг другу, создавая запутанный код.

Я собрала несколько советов и подводных камней, которых следует избегать, чтобы сделать код на pandas чистым. Надеюсь, вам они тоже будут полезны. Также я буду ссылаться на классическую книгу Роберта Мартина «Чистый код: создание, анализ и рефакторинг».

Погнали!

Информация

В рейтинге
5 934-й
Зарегистрирован
Активность