Итак, сегодня 1 февраля 2024, время 01:40, и на данный момент у меня в активе: 11 мини-программ и 2 проекта на питоне. А за день до этого, 31 января, я хватался за многое, и ничего особенно не сделал. Но обо всем по-порядку.

11 мини-программ

Я просто взял книгу «Большая книга проектов Python» и выполнял подряд все задания. Какие-то совсем не интересные я пропускал. Сначала читал описание задачи, потом пробовал ее сделать, затем сравнивал решения. Они плюс-минус совпадали, но были и большие отличия. Какие-то решались быстро, а над некоторыми пришлось поломать голову. Итак, вот список:

    • bagels.py
    • bithdayparadox.py
    • bitmapmessage.py
    • caesar.py
    • caesarhacker.py
    • calendar.py
    • cells.py
    • chohan.py
    • collatz.py
    • deepcave.py
    • diamonds.py

    bitmapmessage — когда делал, вспомнил свой старый проект на Delphi, где я делал ASCII-графику по загруженной картинке.

    caesar — это я уже делал на Pascal/Delphi, а может и на Basic. Я узнал про шифр Цезаря из какой-то приключенческой книги, но эта история уже затерта в памяти.

    calendar — вывод календаря в ASCII таблице, включая дни из прошлого и следующего месяца, чтобы неделя была полностью заполнена. Пришлось повозиться. Пробовал сначала рассчитать, какая дата конца прошлого месяца выпадает на понедельник. Но потом сделал решение проще: в цикле отматывал по 1 дню назад, пока не станет понедельником. Когда я сравнил свое решение с книжным, они в этом плане совпали.

    cells — игра «Жизнь». Эту игру я делал на Delphi, а может быть и на Basic. Узнал из журнала «Наука и жизнь». Реализация на Delphi использовала, насколько помню, массивы, где каждая ячейка игрового поля — отдельный элемент массива. Циклом проходились все ячейки массива, и, согласно правилам, делался массив для следующей генерации.

    Недавно узнал из Ютуба, что такое задание предлагается на собеседовании в абстрактый Гугл. Массивы — хорошо, но можно лучше — быстрее, и с экономией памяти. И такое решение — лучше. На Ютубе показали как сделать правильнее. И вот, когда настала очередь делать эту программу на Python, я ее сделал именно так, чем и горжусь.

    diamonds — рисование ASCII-графикой алмазов. Хотел как-то математически высчитывать, какой символ ставить. Может быть потому что был вечер, а может быть потому что я все усложнил, но я не справился. Снес. Потом подсмотрел решение и сделал свое.

    2 проекта на Python

    Первый проект — deb-tools (от слова Debitos), в котором лежат утилиты для разработки:

    • createdb — генерирует SQL для создания баз данных и пользователей в Postgres
    • createguest — создание пользователя-гостя с правами только на чтение на dev и prod контурах

    Второй проект — server-metrics. Это веб-сервер, который с /metrics отдает некоторые метрики сервера, которые не предоставляет какой-нибудь cadvisor или node-exporter:

    • данные, которые получены с утилиты: docker sytem df
    • количество дней до окончания регистрации доменов: из whois

    В Grafana это выглядит так:

    День, когда за все хватаешься, а результата кот наплакал

    31 января был именно такой день. Вначале все шло по плану, но затем пришлось ставить пакет python-whois, который принес массу проблем.

    Во-первых пришлось разбираться как работает venv, virtualenv и чем они отличаются.

    Во-вторых, мой PyCharm упорно не давал выбрать интерпретатор внутри src/.venv каталога. Может я что-то не так делаю? Снос проекта и восстановление из git не помогло. Repair IDE не помогло. Нет, это какой-то баг. Пришлось снести PyCharm полностью, удалить его конфиги, и поставить назад. После этого заработало.

    В-третьих я допустил ошибку в docker-compose.yml и долго не мог ее найти. А все было элементарно.

    В-четвертых, docker образ не собирался, говорил что нет imp-модуля. На счет этого я записал в сорцах:

    Сделан даунгрейд 3.12 => 3.10 из-за проблемы с установкой пакета python-whois

    В-пятых, я сегодня помогал в решении вопроса с мошенниками, которые взломали Госуслуги у моей мамы (сегодня) и тещи (у нее в субботу).

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

    Хотя, если подумать 🤔, то довольно насыщенный день.

    На счет Python: у меня все еще каша в голове касаемо управления пакетами через venv, virtualenv, poetry и … (какой-нибудь еще менеджер пакетов). Какой лучше использовать, как все это вместе работает?

    От debitos

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *