Pull to refresh
1
0
Send message

Общее представление о контейнерах и бинах в Spring

Level of difficultyMedium
Reading time5 min
Views1.8K

IoC container - это контейнер, реализующий принцип Inversion of Control (IoC). Он управляет созданием, связыванием и жизненным циклом бинов, которые конфигурируются на различных этапах сборки приложения и затем добавляются в контекст.

org.springframework.beans и org.springframework.context пакеты являются основой для Spring Framework’s IoC container. BeanFactory это интерфейс контейнера Spring, предоставляющий базовый функционал для создания и управления бинами. BeanFactory используется в основном для простых приложений и в случаях, когда ресурсы ограничены. Это наиболее низкоуровневый интерфейс, предоставляющий базовые возможности по конфигурации и управлению бинами. ApplicationContext является под-интерфейсом BeanFactory. Он добавляет:

Ознакомиться
Total votes 2: ↑1 and ↓10
Comments4

Создание полного Fast-API сервиса с фронтендом и деплоем за полчаса

Level of difficultyEasy
Reading time15 min
Views11K

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

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

Читать далее
Total votes 17: ↑15 and ↓2+17
Comments6

Как я создал архиватор из задачки с техсобеса: сжатие файлов с помощью RLE

Level of difficultyMedium
Reading time17 min
Views9.6K

Привет, меня зовут Рома. Я работаю в KTS на позиции Python backend-разработчика. 

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

Читать далее
Total votes 58: ↑54 and ↓4+61
Comments9

Установка LLM на скромном VPS

Level of difficultyMedium
Reading time6 min
Views7.4K

«Я тебя завалю, если ещё раз упомянешь AI», — писал автор нашумевшей статьи. В самом деле, хайп вокруг ИИ всем надоел. Но мы всё-таки рискнём поговорить о том, какую LLM поставить на своём сервере и зачем.

Сразу упомянем, что на серверах RUVDS установлены видеокарты NVIDIA Quadro P4000 (на фото). Карты довольно слабенькие, так что подойдут скорее для проектов в образовательных целях и т. д. Тем более что под VPS выделяется максимум 1 ГБ видеопамяти. Но даже в таких спартанских условиях можно запустить LLM.

Кстати, о VPS с видеокартой. Несколько лет назад мы уже писали о сферах их применения и даже проводили тесты. Всё это можно найти здесь.
Читать дальше →
Total votes 32: ↑30 and ↓2+46
Comments16

Flyway + Spring Boot: настройка и написание миграций баз данных

Level of difficultyEasy
Reading time11 min
Views2K

Написание скриптов миграции трудоёмкий процесс. И если есть возможность это дело автоматизировать – этим нужно пользоваться!

В этом гайде я расскажу как подключить и настроить Flyway в Spring Boot приложении, сгенерировать скрипты инициализации и миграции схемы базы данных вместе с Amplicode!

Читать далее
Total votes 14: ↑14 and ↓0+16
Comments3

Антипаттерны тестирования: как не стоит писать тесты в Python. Часть 1

Reading time5 min
Views5.1K

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

В этой статье разберемся с тремя основными антипаттернами тестирования в Python.

Читать далее
Total votes 12: ↑7 and ↓5+6
Comments5

Работает — не трожь: зачем обновлять Python в долгоживущих проектах

Reading time15 min
Views16K

Всем привет! Меня зовут Сергей Яхницкий. Я пишу на Python уже больше шести лет, техлид в Яндекс Такси, Python-евангелист и член Python-комитета Яндекса (аналог Python Steering Council).

Человек я простой, звёзд с Гитхаба не хватал: до того, как я устроился в Такси, я мирно писал маленькие бэкенды на Python. А потом меня прорвало: кодогенерации, CI/CD, кучи тестов, монорепа и прочее. Вот тут-то моя питоничья душа и воспряла. Решил я всё автоматизировать, обновить всё, что движется, а что не движется — подвигать и обновить. Из этого вышел мой рассказ.

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

Читать далее
Total votes 59: ↑57 and ↓2+66
Comments22

Глубокое погружение в хуки pytest: как и зачем их использовать

Level of difficultyMedium
Reading time3 min
Views1.6K

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

Читать далее
Total votes 6: ↑4 and ↓2+4
Comments0

Hamster Kombat. Сколько ты реально заработаешь? Вся правда. Большой разбор проекта, токена HMSTR и команды

Reading time21 min
Views226K

В сегодняшнем материале мы разберем проект Hamster Kombat по косточкам. Поговорим о том, как вас разводят на время и внимание, как создатели Хомяка продают свою аудиторию, подсветим все его зашквары и несостыковки. Разберем экономику его токена, инвестиции и предположим, по какой цене он выйдет на рынок. Ну и самое главное — попытаемся понять, сколько же удастся на проекте заработать.

Для того, чтобы понять, сколько денег раздаст проект (и раздаст ли вообще), стоит ли вообще тратить на него свое время, необходимо проанализировать массу метрик, в том числе его фундаментальные показатели, фандрайзинг, токеномику, команду и многое другое. Этим прямо сейчас и займемся. Устраивайтесь поудобней.

И да, вынужден предупредить. Не всем этот материал понравится. За время, проведенное в крипте я привык видеть людей, желающих быть обманутыми. Ну ничего. К хейту я тоже готов. Должен же хоть кто‑то открывать ваши глазки на этот жесткий мир и показывать, что он не так уже и приветлив.

Читать далее
Total votes 187: ↑172 and ↓15+189
Comments210

Как вернуть энергию и интерес

Reading time34 min
Views29K

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

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

Читать далее
Total votes 75: ↑69 and ↓6+74
Comments43

Как настроить уведомления в Django с помощью сигналов: пошаговое руководство

Level of difficultyEasy
Reading time8 min
Views2.7K

В Django сигналы используются для отправки и получения важной информации при сохранении, изменении или даже удалении модели данных и это относится к определенным прошлым или настоящим событиям в реальном времени. Сигналы помогают нам связывать события с действиями. Меня зовут Ясин, я младший разработчик Python в Kokoc Group, работаю чуть больше года. Изучаю и использую в работе фреймворки Django и FastAPI. Сегодня покажу пример, как можно эффективно использовать сигналы, но ожидаю, что вы имеете базовые представления о Python 3, виртуальной среде и настройке проекта Django  версии 3 или выше. Поехали!

Читать далее
Total votes 11: ↑11 and ↓0+12
Comments1

Самодельный джазмастер со звукоснимателями P-90, превращённый когтями кота в лёгкий релик

Level of difficultyEasy
Reading time8 min
Views10K


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

Хотите знать, в чём состоит прелесть датчиков P-90 и формы корпуса, повторяющей Fender Jazzmaster? Тогда я обо всём расскажу!
Спойлер: ни один кот не пострадал
Total votes 38: ↑37 and ↓1+55
Comments16

Система вёрстки документов. Часть 1 — Основа

Level of difficultyEasy
Reading time4 min
Views2.1K

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

Читать далее
Total votes 10: ↑9 and ↓1+10
Comments7

Микросервисы в представлении среднего разработчика, и как всё на самом деле

Level of difficultyMedium
Reading time11 min
Views56K

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

Когда спрашиваю у людей на собесах, или когда в команде решаем, как клепать очередной проект, такое порой слышу, что становится страшновато. Мне кажется, лет через 5 все компании будут обитать в мультивселенной безумия из “микросервисов”, которую они себе радостно построили, уходя от этих ваших страшных “монолитов”.

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

погрузиться в микросервисы
Total votes 236: ↑232 and ↓4+260
Comments207

Создание собственного API на Python (FastAPI): Знакомство и первые функции

Level of difficultyEasy
Reading time20 min
Views11K

Друзья, приветствую! Данной статьей я планирую начать большой цикл публикаций, в которых я расскажу все, что знаю про FastAPI, начиная от самых простых аспектов и заканчивая более глубокими задачами, такими как JWT авторизация, работа в фоне, валидация данных, правильное подключение базы данных и прочее.

Читать далее
Total votes 21: ↑18 and ↓3+15
Comments14

Архитектура универсального проекта Django

Reading time4 min
Views26K

В ходе последних лет моей разработки проектов Django я понял, что почти все они имеют одно строение:
API, Apps, Config, Library, Utils, Workers...

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

Читать далее
Total votes 10: ↑8 and ↓2+9
Comments15

Python service layer: основы оформления бизнес-логики на примере Django-приложений

Reading time18 min
Views35K

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

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

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

На самом деле, изложенный далее текст относится не только к Django-проектам. Разрабатывая веб-приложения, используя другие инструменты, вроде Flask, люди используют те же концепции веб-разработки, причём часто именно в таком же виде, как они реализованы, в Django - views, request-response объекты, middlewares, модели, формы.

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

Авторизация и регистрация в интернет-магазине и закон: как реализовать и не получить штраф

Level of difficultyEasy
Reading time9 min
Views7K

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

Читать далее
Total votes 4: ↑2 and ↓2+2
Comments13

FastStream — новый убийца Celery?

Level of difficultyEasy
Reading time7 min
Views9.6K

FastStream - это относительно новая блестящая игрушка в руках Python'истов, которая создана специально для работы с брокерами сообщений.

В Python сложилось устойчивое убеждение, что если мы работаем с MQ - то нам нужен Celery, но он слегка устарел. Именно поэтому люди пытаются выкинуть "деда" и затащить вместо него любой новый многообещающий MQ-инструмент. Кроме того, культ Celery настолько силен в умах, что практически все новые библиотеки для работы с MQ пытаются стать его "убийцей" и заменой.

Однако, это не совсем верно. Существует огромный пласт проектов, которым нужен не фреймворк для менеджмента задач, а просто "голый" функционал Kafka/RabbitMQ/NATS/whatever для межсервисного взаимодействия. И все эти проекты вынуждены довольствоваться "сырыми" python-клиентами к своим брокерам, а всю обвязку вокруг этих клиентов писать самостоятельно. FastStream целится как раз в эту нишу.

В рамках статьи я хочу убедить вас, что не Celery мы едины, и для альтернативных инструментов найдется место под солнцем. А также рассмотрим фичи FastStream, которые он привносит в застоявшийся мир MQ-инструментов.

Читать далее
Total votes 27: ↑26 and ↓1+28
Comments23

asynpg-lite: Простой асинхронный менеджер для PostgreSQL на Python

Level of difficultyEasy
Reading time15 min
Views2.8K

Друзья, в прошлых своих публикациях я рассказывал о том, что почти в каждом своем проекте использую свой класс для работы с базой данных PostgreSQL. На днях этот класс перерос в полноценную библиотеку asynpg-lite на базе asyncpg, которую каждый из вас может прямо сейчас установить и начать использовать.

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

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

Для тестирования примеров, которые я приведу, вам потребуется база данных PostgreSQL. Она может быть установлена как на вашем локальном компьютере, так и располагаться удаленно, например, на VPS-сервере.

Читать далее
Total votes 8: ↑6 and ↓2+8
Comments12

Information

Rating
4,008-th
Registered
Activity