Пет-проект - это проект, который вы делаете в свободное время для улучшения своих навыков и пополнения портфолио.

Для джунов это отличная возможность компенсировать отсутствие коммерческого опыта в резюме.

Пет-проект не сильно отличается от коммерческого. На нём встречаются задачи разной сложности. Чем больше и чем сложнее задачи, тем быстрее развиваешься как разработчик.

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

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

1. Генератор паролей

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

Использование:

Программа предлагает выбрать параметры для составления необходимого пароля:

pwd_length = int(input('Enter password length: '))
pwd_digits = input('Include numbers (yes = y, no = n): ')
pwd_uppercase = input('Include uppercase letters (yes = y, no = n): ')
pwd_lowercase = input('Include lowercase letters (yes = y, no = n): ')
pwd_punctuation = input('Include symbols "!#$%&*+-=?@^_"? (yes = y, no = n): ')

Ссылка на GitHub

2. Шифрование файлов

Программа, позволяющая шифровать и расшифровывать файлы.

Установите модуль для шифрования файлов pyAesCrypt:

pip install pyAesCrypt

Использование:

  1. Укажите в коде путь к файлу.

  2. Запустите программу и введите пароль.

  3. Файлы зашифрованы.

Чтобы расшифровать файлы, используйте скрипт decryption.py и введите пароль, который вводили для шифрования.

Ссылка на GitHub

3. Генератор QR-кодов

(QR-код - ссылка на GitHub репозиторий)

Программа, которая позволяет генерировать QR-код по ссылке.

Установите библиотеки qrcode и image:

pip install qrcode

pip install image

Использование:

  1. В файле main.py укажите ссылку, по которой вы хотите сгенерировать QR-код.

  2. В папке появится файл .png, это и есть сгенерированный QR-код.

Ссылка на GitHub

4. Преобразование видео в GIF

Программа, позволяющая легко преобразовывать video-файлы в GIF-файлы.

Установите библиотеку:

pip install moviepy

Использование:

  1. Укажите путь к видео файлу.

    clip = VideoFileClip('<your path>')

  2. Укажите путь к файлу GIF.

    clip.write_gif('<your path>', fps=10)

Ссылка на GitHub

5. Распознавание текста на изображении

Программа, которая распознаёт текст на изображении и записывает его в .txt файл.

Установите библиотеку:

pip install pytesseract

Использование:

  1. Добавьте в папку проекта изображение .jpg или .png, из которого вы хотите распознать текст, и файл .txt для записи текста.

  2. Текст с изображения будет записан в указанный вами файл .txt.

Ссылка на GitHub

Если у вас тоже есть идеи для pet-проектов, на которых вы изучаете новые технологии, поделитесь своим опытом в комментариях.

Комментарии (16)


  1. APXEOLOG
    03.11.2021 20:36
    +7

    И в чем смысл пет-проекта, который состояит из десятка строк кода, скопированных с SO?


    1. sunsexsurf
      03.11.2021 21:32

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


      1. pomponchik
        04.11.2021 16:39
        +1

        Причем просто импортом работать не будет, надо еще сам тессеракт установить. Представляю, сколько "пет-проектов" окончится на этом шаге.


  1. lesskop
    03.11.2021 22:28
    +3

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


    1. nochkin
      04.11.2021 04:15
      +1

      Да, уж. Так дойдём до того, что на Хабре статья будет состоять просто из небольшого куска официальной документации.


  1. SergeiMinaev
    04.11.2021 00:16
    +1

    Генератор паролей

    30 строк, большая часть которых отвечает за ввод. Имхо, если пароль по определению должен быть безопасным, о чём можно судить по названию библиотеки, то не нужно спрашивать у пользователя о длине пароля и о том, включать или не включать буквы/цифры. Я бы сделал так:

    import string, random
    ''.join(random.choices(string.ascii_letters + string.digits + string.punctuation, k=12))

    Генератор QR-кодов

    Буквально несколько строк кода, использующих готовые библиотеки. Намного интереснее было бы изучить алгоритм, по которому генерится QR и хотя бы это сделать самостоятельно. Хотя, конечно, это уже сложно. Но зато скилы прокачались бы ого-го.

    Преобразование видео в GIF

    Тут у вас самое весёлое :) Целых ТРИ строки кода, которые просто используют готовую библиотеку. Котоорая... в свою очередь, под капотом использует ffmpeg (я даже проверять не стал, это и так очевидно). И ffmpeg сам по себе отлично умеет конвертить видео в гиф ( https://superuser.com/a/556031 ). Чтобы не запоминать все необходимые опции, можно сделать однострочный bash-скриптик, который будет делать нужное.

    Распознавание текста на изображении

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


    По поводу идей: на начальном уровне, к сожалению, ничего толкового сделать не выйдет, т.к. все идеи уже реализованы более опытными. Но если делать для себя, то в образовательных целях можно сделать, например, асинхронный http1.1 сервер, используя только socket - если делать его полноценно, столкнётесь со множеством интересных задач, решая которые, получите кучу опыта. Или, например, какую-нибудь уведомлялку о новых емейлах (себе делал такую, т.к. лень держать запущенным большой и толстый почтовый клиент с gui). Или телеграм бота с инфой по курсам валют, погодой и кол-ву дней до конца света.


    1. dimamatrusmat
      04.11.2021 01:18

      Прикол в том, что на некоторых сайтах, есть свои ограничения на пароль, а так, ты прав)


      1. nochkin
        04.11.2021 04:19
        +1

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


        1. wibbtwo
          09.11.2021 13:55

          Тут вопрос, наверное, не в хранении, а в возможности легкого подбора короткого и часто встречающегося пароля.


          1. nochkin
            10.11.2021 05:55

            Подбор легко ограничить количеством попыток. Есть куча сайтов, которые после 5-10 попыток блокируют аккаунт и надо им звонить в поддержку для разблокировки.

            Но это не повод хранить пароли открытым текстом в БД.


            1. wibbtwo
              10.11.2021 20:33

              никто и не спорит


    1. artemmokinn Автор
      04.11.2021 01:21

      Большое спасибо за конструктивную критику.


  1. TrickyBestia
    04.11.2021 01:18
    +3

    Все 5 идей об одном и том же:

    1. Установить модуль.

    2. Вызвать его из своего скрипта несколькими строчками кода.

    3. Зарелизить пет-проект.

    Ладно бы оно ещё было на каком-нибудь C++, где зависимости ставятся не через `pip install` - можно попрактиковаться с каким-нибудь CMake или meson, но нет, это Python. ИМХО, такие проекты куда-нибудь выкладывать, как минимум, стыдно.


  1. saboteur_kiev
    04.11.2021 02:12
    +3

    Пет-проект - это проект, который вы делаете в свободное время для улучшения своих навыков и пополнения портфолио.

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

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


  1. unsignedchar
    04.11.2021 09:13
    +2

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


  1. daniilshat
    04.11.2021 11:24
    +5

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