PJ Dev
480 subscribers
58 photos
1 video
1 file
67 links
История в прямом эфире о том, как я стал разработчиком, изменил свои привычки и улучшил качество жизни

https://pjdev.ru/
Download Telegram
Завершил теорию первого спринта "Парсинг". В целом тема понравилась, но не уверен, что хотел бы заниматься этим всю жизнь. Однако такие знания точно где-нибудь да пригодятся.

Помимо того, что идёт работа с библиотеками requests и BeautifulSoup4, во время спринта немного освежил в памяти регулярные выражения (re). Я уже работал с ними во время основной части обучения, но, как оказалось, из-за отсутствия практики напрочь забыл.

Ещё освежил в памяти способы логирования информации, через библиотеку logging, поработал с контекстными менеджером with и c модулем csv, который я использовал при разработке игр (создавал матрицы карт для отображения объектов).

Из нового, познакомился с модулем argparse, который позволяет работать с аргументами при запуске программы. Когда я учился в школе21, то там такая практика была обычной, т.к. работа велась с языком Си, но на Python раньше не встречал такой необходимости.

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

#Python #Парсинг #ЯндексПрактикум
👍8🔥53
Кажется я беру свой первый академический отпуск на курсе "Python разработчик, расширенный стек". Абсолютно ничего не успеваю, в итоге отстал уже на полтора спринта. Пытался нагнать, но разные непредвиденные обстоятельства не дают этого сделать.

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

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

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

P.s. прошёл блок по асинхронному программированию, какой-то он совсем маленький. Буквально на 5 минут чтения текста, если это все, что нам дадут, то я буду крайне разочарован. Потому что это был один из ключевых навыков, которому я хотел обучиться на курсе. Надеюсь, что дальше будет что-то еще

#Мысливслух #ЯндексПрактикум #Python
9👍4🥰1👏1🤔1
Говорил, что планировал академ, так вот, как запланировал, так и получилось. Уже сходил, вернулся и даже сдал второй спринт по парсингу.

В общем Beautiful Soup вполне простой и понятный инструмент, попользовался, в целом понравилось. Очень радует, что появилось больше практики работы с Requests и Requests Cache, понимание запросов и формирование страниц — точно пригодится. Ну и в конце меня ждал Scrapy, который, наверняка, для своих задач очень хорош, но немного нагружен, как мне показалось. Такой всё умеющий комбайн. Ему конечно стоило бы посветить больше времени, чтобы досконально разобраться, но основы понятны, а если придётся с ним работать, то уже будет ясно куда смотреть и как это устроено. Разобраться не составит тяжелого труда.

Наконец впереди Flask, FastApi и практика по SQLAlchemy. Пока складывается ощущение, что этот курс не такой большой и полезный, каким он мне показался изначально, но выводы делать рано. Сначала завершу блок по фреймворкам, потом будет еще какой-то блок "Python для бизнеса" — но я вообще не очень понимаю что это и зачем. Завершит эту картину месяц проектной работы, вроде как обещают работу с реальным заказчиком.

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


#Мысливслух #ЯндексПрактикум #Python
🔥13👍4👏2🏆21
Наконец закончились каникулы, и началось самое интересное — изучение Flask, FastAPI и SQLAlchemy. И знаете, я чувствую себя уверенно. Всё началось с Flask + SQLAlchemy, и хотя раньше я не работал с Flask, всё оказалось довольно понятным. Он очень похож на свои аналоги — Django и FastApi.

Я вспоминаю, как начинал изучать Django — тогда было много информации, и я не понимал, как всё устроено. Кроме того, ещё приходилось изучать core-python. Сейчас же было легко разобраться, как настроить urls, создавать модели, получать выборки из базы с помощью ORM или передавать нужные объекты в шаблонизатор. По сути, когда вы уже знаете и понимаете основы, всё, что нужно сделать — это изучить синтаксис новых фреймворков и понять их особенности. Меня радует, что всё идёт так хорошо. До конца спринта ещё 2 недели, а я уже почти дошел до финального задание.

P.S. Немного о конкурсе, о котором я вам говорил. До конца осталось 2 недели, а мой канал в рейтинге на 6 месте. Самое интересное, что от третьего места, которое также предполагает награду в виде курса, я отстаю всего на 11 подписчиков. Надеюсь, получится увеличить аудиторию канала и победить. Победа вполне возможна, хотя сначала я в это не верил, так что нужна ваша помощь. Отдельное спасибо Анжелике за репост на свой канал. Она кстати живёт в Грузии и занимается фотографией.

#python #flask #обучение
🔥11👍51🥰1👏1
Добил я теорию модуля "Альтернативные фреймворки — Flask" до конца. В целом хорошо, но по сути ничего нового, кроме синтаксиса другого фреймворка, что логично. Приятно освежил все это дело в памяти.

В модуле:
1. Научился создавать Flask проекты;
2. Подключать к ним БД и работать с ней при помощи ORM SQLAlchemy;
3. Поработал со встроенным во Flask шаблонизатором Jinja2, тоже самое, что и в Django (Jinja), только поновее. Разбил шаблоны на модули: базовый, футер, хедер, наполнение. Тут все по классике;
4. Поработал с формами для получения данных через POST запросы;
5. Создал костюмную обработку ошибок, чтобы было красиво. Яндекс заботливо все нарисовал, оставалось только подключить;
6. Научился создавать пользовательские команды и пользоваться теми, что есть во Flask. В частности сделал команду для наполнения БД моковыми данными;
7. Написал API сервис для проекта, который умеет в CRUD;
8. Поработал с фреймворком для миграций Alembic, точнее обёрткой для Flask: Flask-Migrate;
9. Вспомнил, как пользоваться Postman и протестировал свой API.

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

P.s. хочу сказать большое спасибо тем, кто помогает мне с развитием канала и, соответственно, с продвижением к лидерству в конкурсе. Отдельное спасибо Андрею Пронину за рекомендацию на своём большом канале о Python. Также отдельная благодарность всем людям с которыми я вместе учился, и которые решили меня поддержать (я опубликовал ссылку на канал во всех чатах когорт, где когда-либо учился). По моим предварительным подсчётам, я должен выйти на третье место, которое уже призовое, но другие каналы тоже развиваются. Поэтому праздновать пока рано, нужно думать, как еще привлечь людей, какую бы коллаборацию устроить или где бы заявить о себе.

#обучение #Python #Flask
👍11🔥4🤝21
Относительно недавно я пытался устроиться на работу, но взяли другого кандидата. Тогда я попросил показать мне его код, чтобы понять, что я сделал не так. Наши работы оказались очень похожими.

Одним из ярких отличий его работы от моей - наличие документационных строк. Они ярко выделялись на фоне кода и приковывали к себе внимание, отвлекая от реализации. У меня сразу возник вопрос: "А почему я не добавил их в свой проект?".

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

Мысль поплыла дальше: "А почему ни в одном из своих учебных проектов я не писал документационных строк? Почему большинство других студентов этого не делает?". Потом те же вопросы возникли и про Type Hinting. Что более важно — курс этому учил! Но, к сожалению, не требовал, и такой важной привычки не появилось. Будем исправляться.

Сдал на ревью проект, написанный на базе Flask. Это сервис по сокращению ссылок, в котором реализован API. При помощи формы на веб-странице можно добавить оригинальный url, и либо получить автоматически-сгенерированный короткий идентификатор длиной в 6 символов, либо написать собственный длинной не более 16 символов. Короткий идентификатор должен быть уникальным, но оригинальным — не обязательно. Если кроткий идентификатор будет занят, имеет недопустимые символы или заходит за пределы допустимой длины, то система сообщит вам об этом. Время жизни ссылок никак не ограничивается.
В комментариях была интересная идея, вести анализ того, на какие ресурсы чаще всего ссылаются пользователи. Мне в голову пришла та же мысль, но в рамках ТЗ этого пункта не было. Может быть когда-нибудь я доработаю этот проект, а может и нет. Впереди еще точно много всего интересного.

P.s. сейчас понял, что забыл оформить README файл. Сделаю пуш с изменениями уже после ревью.

#Python #Flask #Программирование #Проекты
👍144🔥3🥰1
В прошлом посте я писал о том, почему вообще решил делать собственный web-сервис для блога, а теперь расскажу о технической реализации backend-части.

Недолго думая, я выбрал фреймворк Django по очень простой причине: это привычный для меня инструмент, который я хорошо понимаю. Был вариант ещё использовать FastAPI в академических целях, чтобы освежить его в памяти, но, так как впереди ещё стоял вопрос реализации frontend-части, я решил, что сосредоточу обучение на фронте.

После прошлых неудачных попыток мне совсем не хотелось уходить в архитектурные фантазии, и я решил, что буду делать всё просто и стабильно. Поэтому я сознательно придерживался минимализма во всём проекте. Решил, что пока обойдусь без регистрации/авторизации, ограничусь минимальными моделями Post и Tag, ну и дефолтным User для себя, чтобы управлять админкой. Скромный набор обязательных полей и связей, и всё было готово.

Отдельный плюс Django для такого проекта — это админка из коробки, которая на первых порах позволяла управлять данными без frontend-части. Да и в целом для блога это очень полезный инструмент, который с лёгкостью закрывает вопросы создания и редактирования постов, тем более если ты единственный автор. Django изначально создавался для журналистов с идеей быстрого создания контентных web-сервисов.

Я сразу принял решение, что буду развивать backend как API-приложение. Главная его задача: хранить и обрабатывать данные, реализовывать бизнес-логику и отдавать всё это наружу в понятном формате. Так что логичным продолжением стало дополнение в виде Django REST Framework, который дал сериализацию, пагинацию и разграничение прав доступа. В итоге backend получился API-only: опубликованные посты отдаются через публичные endpoint'ы, черновики доступны только из административного контура, а сам сервис сосредоточен именно на данных и логике публикации.

Когда backend начал обретать форму, стало понятно, что следующим шагом будут отдельный frontend и объединение этих двух сервисов в один рабочий продукт. Поэтому было принято решение создать три отдельных репозитория: backend, frontend, infra. Об этом и будут следующие посты.

#Backend #Django #Python #Блог
👍106🔥4