Обновить
-22
@shqiptarread⁠-⁠only

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

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

ещё одна статья написанная нейосеткой

  • Количество вакансий для Junior снизилось.

  • Их стало сложнее "переманить"

одно другому противоречит

те кто заминусовал Andrbob -а, вы хотя бы объясните почему

Представим, что у нас есть кастрюля компота объемом 10 литров (10 000 мл)

а теперь компотом объясни комплексные числа. на 0 делить можно, но числа будут мнимые

из обратной связи по последнему тестовому заданию:
Комментарий к вашему ТЗ от проверяющего:
"Плюсы: ТЗ выполнено полностью. Реализованы основные пользовательские операции: регистрация, логин, логаут, просмотр, редактирование, мягкое удаление пользователя. Продуманная схема БД, RBAC с ресурсами, действиями, ролями. Полное API для управления правами администратором. Корректные HTTP статусы - 401, 403. Полноценные бизнес-сущности: Product, Category, Order с CRUD и реализацией интеграции с системой прав доступа. Есть скрипт для загрузки тестовых данных при инициализации.
Минусы: Нет эндпоинта для логаута в v1/auth"

весь прикол в том, что ручка логаута в v1/auth у меня есть )))

звон немного в другом месте

пусть пишет. нам будет проще найти работу

Вы тратите день на настройку окружения вместо программирования

чегооооооо??? установил новую версию питона в отдельную папку, в проекте сделал венв python -m venv .venv активировал .venv\scripts\activate. всё.

объяснение докера в статье - не люблю такое выражение,но чувак - учи матчасть. смотри не скажи такое на собеседовании.

pip freeze > requirements.txt

uv? не, не слышал

Мы будем использовать Django 5.2.6

задачки на подумать.
1) что будет если использовать django select2 для выборки и таблицы с 20-30 тыс записей? а про подавление некоторых исключений в классах я вообще молчу.
2) сколько предложений о работе на джанге и колько на фастапи?

хрень какая-то

ну типа есть гитверче

requrements.txt мне на нравтся одним - там нет дерева зависимостей. если я по ошибке поставил какойнибудь пакет,а он за собой потянул ещё несколько, то непонятно, что удалять. вроде uv показывает зависимости, но не уверен,не использовал

может и мне подобную статью забабахать?

у автора немного сумбурный порядок изложения, но в целом подход нравится. плюсанул. молодец
из замечаний
1) docker run --name fastapi-container -p 80:80 -d -v $(pwd):/code fastapi-image что это за извращение? в волумес можешь поместить всю папку с фастапи. и таким образом всё что пишешь в идешке - отражается и в докере - фастапи в контейнере перезагружается, а логи ты видишь в терминале идешки. если у тебя несколько контейнеров, и они засирают терминал, то этой командой docker logs -f <имя контейнера> можешь видеть логи нужного тебе контейнера в текущем времени
2) для уменьшения объёма контейнера советую в докере установить облегчённую версию питона,поставить на неё зависимости, а потом установить новый образ а зависимости ставить из старого

FROM python:3.13-slim AS builder

WORKDIR /install

RUN apt update && apt install -y build-essential

COPY requirements.txt .
RUN pip install --upgrade pip &&
pip wheel --no-deps --wheel-dir /wheels -r requirements.txt

RUN useradd -m myuser
USER myuser

FROM python:3.13-slim
ENV PYTHONDONTWRITEBYTECODE=1
PYTHONUNBUFFERED=1
WORKDIR /backend

Добавляем самоподписной сертификат в доверенные

RUN apt-get install -y ca-certificates &&
update-ca-certificates

RUN apt update && apt-get install -y curl grep

Копируем wheels и устанавливаем зависимости

COPY --from=builder /wheels /wheels
COPY requirements.txt .
RUN pip install --no-deps --no-index --find-links=/wheels -r requirements.txt

--no-deps: Не устанавливает зависимости пакетов, только те, что перечислены в requirements.txt.

--no-index: Не использует PyPI или другие индексы , т.е. не будет скачивать пакеты из интернета.

--find-links=/wheels: Ищет пакеты локально в директории /wheels , где должны лежать .whl (wheel) файлы.

-r requirements.txt: Указывает список пакетов для установки.

--no-cache-dir: Отключает кэширование загруженных пакетов. Это может быть полезно, чтобы уменьшить размер образа Docker.

COPY . .

ENTRYPOINT ["sh", "-c", "
if [ "$PROFILE" = "1" ]; then
python -m cProfile -o output.prof runserver.py;
else
uvicorn app.main:app --host 0.0.0.0 --port 8000
--ssl-keyfile /usr/local/share/ca-certificates/tls.key
--ssl-certfile /usr/local/share/ca-certificates/tls.crt
--reload;
fi"]

3) не забываем про хеалсчеки, зависимости и порты
одно из решений
depends_on:
db:
condition: service_healthy
healthcheck:
test: [ "CMD", "sh", "-c", "curl -sk https://localhost:8000/health_check/ -o /dev/null -w '%{http_code}' | grep -q '200' || exit 1" ]
interval: 5s
timeout: 5s
retries: 10
networks:
devops_mynetwork:
ipv4_address: 172.20.0.12
зайди в контейнер и проверь,как отработал хеалсчек
если тебе не надо открывать порт наружу, используй expose: вместо ports:
если в контейнере надо внести запись в hosts, то есть extra_hosts:

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

Отсюда нет смысла пытаться это далее автоматизировать - есть такая штука - инфраструктура как код называется

всё это конечно очень хорошо,особенно учитывая что вы стартап. однако
1 ваше видео можно скачать по кускам - отдельно видео, отдельно аудио,потом соединить. в интернете есть такие сервисы
2 всё намного проще - obs studio и подобные. можно записать экран в хорошем качестве
вопрос - смысл в вашей защите от скачивания, если "индеец Зоркий Глаз увидел,что стены нет"?

чувак, учи git, terraform и ansible. а в настройках нгинкса не забывай отключать устаревшую криптографию.

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность