Эх. Прежде чем обсуждать, какой метод хеширования использовать, мы должны уточнить наиболее важное требование: можем ли мы генерировать новые короткие URL-адреса для того же самого длинного URL-адреса при последующих запросах, или мы должны возвращать уже сгенерированный. Последний подход намного сложнее реализовать, но обычно можно обойтись без этого. Я сходил на BitLy и убедился, что они этого не делают. Мы тоже не будем.
Для того же самого URL-адреса сервис Bitly возвращает ту же короткую ссылку, которая была сгенерированна ранее, проверил как через web интерфейс, так и черз запрос к API используя токен.
Кое-где даже упоминается, что он вдохновлялся книгой создателя MINIX профессора Эндрю Таненбаума «Операционные системы: разработка и реализация» (Operating Systems: Design and Implementation).
"Примерно через год, когда Линус приехал в Нидерланды на свое первое публичное выступление, он отправился в университет, где преподавал Таненбаум, надеясь получить от него автограф на своем экземпляре книги «Проектирование и реализация операционных систем» – книги, которая перевернула его жизнь. Он ждал под дверью, но Таненбаум так и не появился. Профессор был в отъезде, и встреча не состоялась."
"Just for Fun. Рассказ нечаянного революционера" Линус Торвальдс, Дэвид Даймонд
А как же журналируемые файловые системы?
Для того же самого URL-адреса сервис Bitly возвращает ту же короткую ссылку, которая была сгенерированна ранее, проверил как через web интерфейс, так и черз запрос к API используя токен.
Сюда можно добавить про библиотеку
contextlib
с декораторомcontextmanager
.Нет необходимости писать класс для нового контекстного менеджера, достаточно обернуть генератор в декоратор
@contextmanager
. Ссылка на доку: contextlib — Utilities for with-statement contextsПример из документации:
Использование:
Там много ещё чего.
По алгоритмам и структурам данных хочется добавить: Перевод интерактивного учебника «Problem Solving with Algorithms and Data Structures»
Я бы ещё добавил перевод интерактивного учебника «Problem Solving with Algorithms and Data Structures».
Ссылка на статью на Хабре про этот учебник.
В 1991 на рейсе Киров - Москва тоже предлагали поиграть. Выбор был из нескольких игр, помню, я выбрал "Автослалом", как в этом комментарии.
и "Эхопраксии"
venv не нужно устанавливать если python версии 3.3 и выше, т.к. в этих версиях модуль venv входит в стандартную библиотеку.
Да, в книге этому посвящена целая глава "Minix и Linux" и вставлены письма из их переписки.
"Python. К вершинам мастерства (Fluent Python)." Автор: Лучано Рамальо
Badcodes.ru и Dropcode.ru:
Дмитрии Докучаев, в журнале «Хакер» писал под ником Forb
Олеко Дундич (1958) https://www.kinopoisk.ru/film/43449/
Для примера, можно избавиться от if в этом месте:
У функции makedirs есть опциональный параметр exist_ok, я бы написал так:
И в целом можно "высушить" код, в некоторых местах можно смело убирать else.
Также сделать except избирательным.
Это первое, что бросается в глаза, а так много чего ещё исправить можно.
Глядя на некотрые участки кода, хочется посоветовать ознакомиться с таким понятием как цикломатическая сложность.
Первый раз слышу термин "затемнение". Обычно в книгах и статьях встречается перевод "затенение" (shadowing variables).
Кстати, да, упустил этот момент. Уже исправлено.
После этого предложения, возможно, должен быть какой-то скриншот, но в статье его нет.