Решаю тестовое задание на Junior Python разработчика / Пишем сервис анонимных записок

  Рет қаралды 20,310

ZProger [ IT ]

ZProger [ IT ]

Күн бұрын

⭐ Курс ООП и Приват канал: www.zproger-school.com/?...
⭐ Телеграм канал: t.me/+nUx84M44jhg1MWUx
Я связался с IT компанией и запросил тестовое задание на Junior Python разработчика. В этом видео мы реализуем такое задание с полного нуля и рассмотрим все используемые технологии.
Мы поработаем с FastAPI, который будет реализован в асинхронном варианте, добавим модели Pydantic и развернем виртуальное окружение Virtualenv.
Сервис анонимных записок предоставляет API и полную документацию к нему, через встроенные возможности FastAPI. Все видео наполнено отборными фишками, которые стоит внимательно изучить.
📁 Фишки Poetry: t.me/codeblog8/221
📁 Исходный код проекта: t.me/codeblog8/236
📁 Github: github.com/Zproger
📁 Все плейлисты с уроками: bit.ly/39GaY89
📁 Связаться со мной: zproger777@gmail.com
📁 Поддержать канал: github.com/Zproger/donate
Тайм-коды:
0:00 - Особенности и фишки проекта
1:00 - Какой функционал нужно реализовать?
1:55 - Как выбрать фреймворки и технологии?
2:49 - Подводные камни FastAPI и как их избежать?
3:38 - Как отсутствие Virtualenv может положить систему?
3:57 - Создание проекта. Установка и настройка
4:29 - Создаем главную страницу с интерфейсом
6:25 - Как я создал интерфейс не имея опыта в этом?
6:45 - Создаем модели Pydantic. Какие плюсы от этого?
9:40 - Создаем функцию для добавления заметок с Pydantic
10:48 - Как работает алгоритм хеширования?
11:27 - Как сохранить записку в памяти сервиса?
12:15 - Создаем интерфейс для страницы с ID
13:14 - Как написать функцию для получения записки?
14:38 - Тесты готового софта

Пікірлер: 85
@daniilkotelevets995
@daniilkotelevets995 8 ай бұрын
Видос крутой , очень понятно объясняешь про все что делаешь и так же про фриланс;)
@user-bt9pq7jh2y
@user-bt9pq7jh2y 8 ай бұрын
Очень круто🔥хочется больше такого фриланс контента🔥🔥
@zproger
@zproger 8 ай бұрын
Благодарю, если по активности зайдет, то буду продолжать
@user-do7dp9vl5b
@user-do7dp9vl5b 8 ай бұрын
Вообще-то нижуя непонятно, если честно... какая-то скороговорка-винегрет...
@Antariys33
@Antariys33 8 ай бұрын
Спасибо за такой фриланс!
@herypank3367
@herypank3367 8 ай бұрын
Привет, спасибо за видео! Когда ждать видео по настройке системы?
@user-vf8xh7fh9j
@user-vf8xh7fh9j 8 ай бұрын
Спасибо за видево, познавательно)
@user-cz8pg1xf2y
@user-cz8pg1xf2y 8 ай бұрын
А можешь показать сам запрос в чат-гпт? Хотелось бы увидеть видос как правильно формировать запросы для этой нейросетки
@Sosed2024
@Sosed2024 8 ай бұрын
Благодарю, круто!
@zproger
@zproger 8 ай бұрын
Спасибо!
@Inker
@Inker 8 ай бұрын
Спасибо за контент! Хотелось бы похожий видос на Джанго Рест, с более предметным углублением в связь между фронтом и джанго через апи )
@zproger
@zproger 8 ай бұрын
Спасибо за идею, возможно будет что-то по фастапи, я решил в этот фрейм копнуть, он мне показался более интересным, нежели джанго
@doskaree
@doskaree 8 ай бұрын
Уважаемый ZProger, сними пожалуйста видео о том, какой у тебя линукс и как ты его кастомизировал. Очень нравится твоё оформление, хочу сделать такое же.
@zproger
@zproger 8 ай бұрын
Спасибо, я в процессе. Пока что занимаюсь фиксом багов в оболочке
@Ju8Sho
@Ju8Sho 8 ай бұрын
Здравствуйте, да я тоже хочу такую оболочку
@Ju8Sho
@Ju8Sho 8 ай бұрын
Какой Линукс используете? Или какой Линукс лучше для программиста, я уже устал менять линукс
@rock4ts
@rock4ts 8 ай бұрын
ещё не начал смотреть видео, но есть ощущение, что будет затронута тема фриланса
@zproger
@zproger 8 ай бұрын
Даааа)))
@ruslwhite
@ruslwhite 8 ай бұрын
Что то у тебя все очень плохо с объяснениями или с моим восприятием, на половине видео перестал успевать за тобой
@zproger
@zproger 8 ай бұрын
Старался медленно объяснять, возможно стоит в такие моменты ставить на паузу и подумать над логикой софта. Маленькие проекты проще воспринять на лету, тут же немного посложнее.
@user-tq7wi6js2n
@user-tq7wi6js2n 8 ай бұрын
​@@zprogerили можно скорость воспроизведения на 0.75 ставить
@user-qu7ld8un7z
@user-qu7ld8un7z 8 ай бұрын
Уважаемый ZProger, умоляем вас всем сообществом питонистов, сделайте тутор на свой рабочий стол, мы просто в восторге с него.
@zproger
@zproger 8 ай бұрын
Я бы с радостью, вот только они не готовы еще. Оболочка которая в билдере, она ломанная на данный момент и не ставит окружение правильно.
@BorisenkoV89
@BorisenkoV89 8 ай бұрын
Фриланс. Про временные ряды что то надо запилить, например предсказание цены биткоина на базе LSTM
@zproger
@zproger 8 ай бұрын
Спасибо за идею
@hjortronsult2552
@hjortronsult2552 8 ай бұрын
А этот хеш (11:10) будет персистентый?
@anthonytedag1568
@anthonytedag1568 8 ай бұрын
Полезная информация
@zproger
@zproger 8 ай бұрын
Благодарю
@emigrate89
@emigrate89 8 ай бұрын
Написал приложение на Tkinter. Думаю переделать во что-то централизованное, типа бэка на сервере, которое по апи и веб отдаст, и десктопному клиенту ответит, и в телеграм бот сможет. Вот не знаю как начать.
@Adolf_Hitler.1939
@Adolf_Hitler.1939 8 ай бұрын
"фриланс" Создай анонимный чат с разными видами шифрования на выбор)
@zproger
@zproger 8 ай бұрын
хмм, как раз планировал делать новый анонимный чат, спасибо за идею
@HiroPuko
@HiroPuko 8 ай бұрын
Приятно было бы увидить блок схему алгоритма например в Microsoft Vision. Написнане программы в IDE это конечный этап, потом идеет тестировка и коректировка программы. Проект не маленкий, это не задача на CodeWars, лучшее сделать несколько видео, но качествено доносить информацию до пользователей, со всеми стадиями разработкий.
@zproger
@zproger 8 ай бұрын
Спасибо за идеи, обязательно учту в следующих видео
@iStormSpir1t
@iStormSpir1t 8 ай бұрын
правильно, проект не маленький а мизерный, такие тестовые расчитаны на несоклько часов (4-6) , максимум день т.к. тут писать нечего, а с момента поиска заметок путем перебора по всем а не по ключу поржут все от души и отправят учить базу :D
@zproger
@zproger 8 ай бұрын
​@@iStormSpir1t Согласен, перебирать значения это плохая идея, особенно если это будет полноценный сервис. У меня на это задание было времени примерно минут 40, я думал не над чистотой кода, а над тем, чтобы просто собрать работающий прототип. Если копать в сторону улучшений, то тут надо сделать как минимум следующее: 1. Переработать API, ибо он сейчас заточен больше под интерфейс, нежели под работу с API 2. Улучшить передачу данных, сервер не должен хранить записки в открытом виде 3. Была идея эти данные просто дампить и подгружать прямо из модели, так как проект маленький, и не вижу смысла сюда ставить целые сервера Postgres 4. Убрать костыль с редиректом и отдавать только данные Но все же, цель этого видео была связана скорее с тем, чтобы показать принцип выполнения задания за максимально короткое время, мне в идеале нужно было вообще в 9 минут уложиться. Если составлять ТЗ под создание идеального проекта, то это никак не поможет новичкам и никто такое видео смотреть не будет. Но в целом согласен с комментарием, было бы неплохо эти моменты с улучшениями упомянуть.
@ydjin3930
@ydjin3930 6 ай бұрын
@@iStormSpir1t с момента со списками в котором лежат заметки поржут. Ведь вероятно подразумевалось что ты поднимешь какую то простую БД, вероятнее всего postgres, можно в целом редис, в котором будут записи удаляться по таймеру. Посмотрят как ты соберешь простые модели, как будешь хранить не безопасные данные. Потом скорее всего посмотрят как будет запускаться твое приложение, а именно захочется увидеть докер или докер компоуз чтобы запустить и приложение и бд. Да тут часов на 4-6, но автор показал примерно ничего из того что реально требуется. Вообще отдельный вид кринжа это написание веб интерфейса. Ведь вероятнее всего это совсем не требовалось и на проекте будет фронт который будет все красиво рисовать и просто интегрироваться с твоими ручками.
@alekseynefedov2598
@alekseynefedov2598 8 ай бұрын
Очень жду видео с настройкой Arch Linux и neovim 😢 Когда там уже
@Beirym
@Beirym 8 ай бұрын
Интересно было бы решить подобный фриланс самому
@zproger
@zproger 8 ай бұрын
Можете немного улучшить его или написать с нуля используя другой функционал. Тут не помешало бы добавить шифрование, чтобы сервер не мог прочитать записку, можно добавить время, после которого записка автоматически удаляется. Таких идей очень много, поэтому если интересно, то можете приступать и практиковаться =))
@CRYgun
@CRYgun 7 ай бұрын
Do you have a Linux?
@bibabloba5140
@bibabloba5140 8 ай бұрын
А что у тебя за линукс?
@Vlad2030
@Vlad2030 8 ай бұрын
видел очень похожее тестовое на уровень стажера бэкендера в авито. у меня есть придирки к тестовому: 1. как то у тебя не рест апишно вышло, можно было бы красиво сделать с эндпоинтом /notes/. 2. также не увидел бд в проекте (было бы замечательно использовать mongoDB и crud запросы через orm) 3. еще не ясно что с запуском сервиса, тут не хватает docker-compose который бы запускал бэкенд под gunicorn(ASGI uvicorn worker class) с бд 4. я бы еще шифрование какое нибудь сделал бы по типу hmac(sha256(secret+id+salt+time)) я считаю что на 2023 год это на джуна тестовое не тянет, слишком просто и странно что ты 5 дней делал когда оно делается за вечер (примерно я бы за столько сделал хотя я не senior как ты а почти middle)
@zproger
@zproger 8 ай бұрын
Спасибо за доп.заметки 😉, я согласен что можно было все это прикрутить, но не хотелось видео тянуть на минут 30. Добавлю, что я видео делал 5 дней, не потому что софт писал, а потому что в создание видео входит много этапов, это и написание сценария, составление контент-плана, создание обложки, написание проекта, озвучка, монтаж и рендеринг. Только одна озвучка может занять целый день. С правками согласен, если люди будут читать, то смогут взять эти идеи для практики. Спасибо.
@Vlad2030
@Vlad2030 8 ай бұрын
аа понял, сначала думал что кодил 5 дней @@zproger
@alexes.bochkarev
@alexes.bochkarev 8 ай бұрын
Все либы для монги на питоне, имитирующие orm' ки печальны. Лучше всего pymongo в чистом виде юзать
@Vlad2030
@Vlad2030 8 ай бұрын
@@alexes.bochkarev c pymongo не работал, но вот после sqlalchemy удобно пользоваться mongoengine, и я чет к нему привык
@AJG54143
@AJG54143 8 ай бұрын
Для джуна это слабовато говоришь? 😂 по моему через чур
@marcb5832
@marcb5832 8 ай бұрын
Редирект внутри Fastapi нужно прописывать как RedirectResponse. типа return RedirectResponse(request.url_for('login_page'), status_code=status.HTTP_302_FOUND) request прописываем в аргументах -- например async def your_page(request: Request) status -- это статус коды импортируем from fastapi import status
@zproger
@zproger 8 ай бұрын
Красота, благодарю.
@a_n_t_o_n_09
@a_n_t_o_n_09 8 ай бұрын
👍👍👍👍
@user-lu8kp9pm5m
@user-lu8kp9pm5m 8 ай бұрын
11:33 фрагмент ролика искренне любопытный, абстрактное название - секрет )?
@emigrate89
@emigrate89 8 ай бұрын
Нравятся видео и темы, но не успеваю за твоей скоростью. Возраст видимо.
@zproger
@zproger 8 ай бұрын
можно попробовать на практике сразу разбирать и на паузы ставить, так быстрее информация закрепляется
@hoopengo2289
@hoopengo2289 8 ай бұрын
где вы такие легкие тест.задания находите?)))
@zproger
@zproger 8 ай бұрын
Ну там еще был докер и шифрование. Я это не учел, чтобы не затягивать видео на 30м, но в целом это тоже легко реализовать.
@hoopengo2289
@hoopengo2289 8 ай бұрын
@@zproger просто я щас делаю тестовое задание на стажера в компанию HQ, и там задание сложнее чем это. Вот у меня в голове и создался диссонанс 😁
@AJG54143
@AJG54143 8 ай бұрын
​@@hoopengo2289а что там нужно сделать?
@qvagin
@qvagin 8 ай бұрын
Fastapi, как я понял, потихоньку вытесняет django. Да и на курсах python делают сейчас больше акцента на этот фреймворк.
@zproger
@zproger 8 ай бұрын
Мне он больше зашел) Очень классный инструмент
@ifuckgoogle
@ifuckgoogle 8 ай бұрын
а где игра на pyxel где гриб прыгает на марио?
@zproger
@zproger 8 ай бұрын
Разве набрали уже лайки?
@ruslanskhema
@ruslanskhema 8 ай бұрын
я заказал курс разработчик телеграм ботов на питон. Но у вас канал обо всех возможностях питона. Могу ли я узнать как задать горячую клавишу для нажатий кнопок? я это делал в ахк языке. а тут это возможно? я для игр хочу сделать дота 2 на инвокера
@Anonim-im6ln
@Anonim-im6ln 8 ай бұрын
😮❤❤❤❤
@DreamingDolphing
@DreamingDolphing 7 ай бұрын
Тут не сказано главное: принял ли такое тестовое задание работодатель и что-то мне подсказывает, что нет.
@deymonster2u
@deymonster2u 8 ай бұрын
Что - то ты напутал нет? Ты данные хранил в чем?
@zproger
@zproger 8 ай бұрын
Pydantic, там notes_list переменная
@sultan161193
@sultan161193 8 ай бұрын
Нифига непонятно 😮
@zproger
@zproger 8 ай бұрын
:0
@linuxoidovich
@linuxoidovich 6 ай бұрын
Алгоритмы бы тебе подучить. Тут поиск записки O(N), а можно было сделать O(1)
@zproger
@zproger 6 ай бұрын
Я понимаю что циклы медленные, просто я писал этот код в таких условиях и с такими дедлайнами, что решил допустить это. В любом случае идеальный проект проходит много стадий рефакторинга и оптимизаций.
@linuxoidovich
@linuxoidovich 6 ай бұрын
@@zproger Так тут не циклы медленные, а алгоритм поиска неправильный. Лучше было взять хеш таблицу и вместо перебора всего списка для поиска, можно было получить константное время.
@Alexander-ku4gi
@Alexander-ku4gi 8 ай бұрын
что это за тема в pycharm?
@zproger
@zproger 8 ай бұрын
вроде github dark
@user-iq2st2el2d
@user-iq2st2el2d 8 ай бұрын
зачем вообще на такую сумму устраиваться? Курьером можно получать 120 тыс не напрягаясь, а напрягаясь 180 тыс
@zproger
@zproger 8 ай бұрын
:D
@user-cm1ri1sn2u
@user-cm1ri1sn2u 8 ай бұрын
сумбур
@zproger
@zproger 8 ай бұрын
бывает ;)
@AlexRootx
@AlexRootx 8 ай бұрын
freelance
@zproger
@zproger 8 ай бұрын
;))
@user-ek8gf7jp8f
@user-ek8gf7jp8f 6 ай бұрын
Как будто скороговорки говоришь. Инфа норм,но над подачей поработать надо.
@user-hu4iu6bt5b
@user-hu4iu6bt5b 7 ай бұрын
Ага на 65к такое задание? Там че рабы сидят и все пилят😂😂 Какой-то бред. Тут как минимум задание для фулстека. Который и бек и фронт знает и взаимодействие всего этого. Какой нах 65к бред полнейший. Такие задания на от 200+ идут.
@zproger
@zproger 7 ай бұрын
Та какие 200+) Это задание меньше чем на 100 строчек кода. Это по сути хеллоу ворлд если изучать бэк. На 200+ там совершенно другие задания. Я бы сделал видео конечно, но предвкушаю, что его посмотрит только 5 человек :D
@user-dx5rk5xl4g
@user-dx5rk5xl4g 7 ай бұрын
Слишком много рекламы самого себя
Каха инструкция по шашлыку
01:00
К-Media
Рет қаралды 8 МЛН
TRY NOT TO LAUGH 😂
00:56
Feinxy
Рет қаралды 11 МЛН
He tried to save his parking spot, instant karma
00:28
Zach King
Рет қаралды 23 МЛН
Мок-собеседование Junior Python developer
1:13:36
Помогите, я джун
Рет қаралды 15 М.
Решаем тестовое задание на позицию junior python backend разработчик
21:18
𝐧𝐞𝐫𝐝𝐢𝐳𝐚𝐲-𝐜𝐨𝐝𝐞
Рет қаралды 11 М.
Михаил Выборный собеседование junior python разработчик
56:37
Каха инструкция по шашлыку
01:00
К-Media
Рет қаралды 8 МЛН