Типичные улучшения

Для поиска по тегу начните название тега с символа '@'.

Улучшения, показаны 50 из 90.

Измените настройки STATICFILES_DIRS

После `BASE_DIR` папка верхнего уровня у всех путей одна

Вернитесь к исходным настройкам wttr.in

Ваши настройки для wttr.in отличаются от тех, что были в исходной программе. Теперь прогноз погоды …

Добавьте поддержку http[s]

Ссылка может начинаться с `http://` или с `https://`, если сайт поддерживает защищенное соединение. Пользователь ожидает, …

Проверьте работу условий if

Если условие `if` записано неверно, то внутренний блок кода никогда не сработает. Либо наоборот, будет …

Сделайте скрипт совместимым с *nix и Windows

В Linux и MacOs для записи путей в файлам используют символ `/`, а в Windows …

Проверьте HTTP статус ответа

Интернет так устроен, что даже если сайт не может обработать запрос, он всё равно обязан …

Сделайте скрипт устойчивым к разрыву соединения

Если долго держать открытым соединение с сервером, то рано или поздно случится обрыв: админ перезапустит …

Обработайте status timeout

API Девмана может вернуть в ответе JSON с полем `'status' == 'timeout'`.

Не пропускайте уведомлений

Если преподаватель проверит две работы с минимальной задержкой в полсекунды, то о первой вам сразу …

Остановите процесс zip в случае сбоя

Сейчас, если что-то пойдет не так, то в системе останется работать зависший процесс zip. > …

Исправьте ошибку при быстром движении корабля

Если скорость корабля будет высокой и за один такт он преодолеет больше одной клетки, то …

Развяжите координатные оси

При считывании нажатий клавиш могут оказаться зажатыми сразу две - влево и вниз. Такое случается, …

Закройте сокет в случае ошибки

Даже в случае сбоя в работе программы, полезно вызывать `writer.close()` — закрытие сокета избавит от …

Создайте обратное давление

В библиотеке asyncio запись данных в сокет не приводит к их немедленной отправке. Сделав это, …

Зафиксируйте скорость игры

Сейчас темп игры задается исключительно мощностью CPU — чем мощнее процессор, тем динамичнее игра. На …

Добавьте поддержку других доменов Bitly

Чаще всего Bit.ly генерирует ссылки, начинающиеся с домена `bit.ly/`, но это не всегда так. Сервис …

Почините настройку DEBUG

Любое непустое значение в переменной окружения включает отладочный режим, даже если это `DEBUG=FALSE`.

Запретите каскадное удаление

У поля `ForeignKey` в модели данных есть обязательный атрибут `on_delete`, он задает правило удаления записей …

Удалите временные файлы в случае ошибки

Даже в случае сбоя в работе программы, полезно удалять временные файлы — это избавит от …

Выровняйте такты event loop

Остановка одной корутины приводит к сайд-эффекту: следующие за ней корутины пропускают свой "ход". Они не …

Сделайте миграцию идемпотентной

Использование метода `create` в коде дата-миграции часто мешает запустить её повторно — каждый запуск создает …

Оберните атрибут тега в кавычки

HTML требует, чтобы содержимое атрибутов было обернуто в кавычки. Так неправильно: ```html ``` Так верно: …

Почините удаление корутин из списка

Цикл по корутинам (event-loop) пропускает запуск отдельных корутин и работает нестабильно. Проблему демонстрирует следующий фрагмент …

Отпустите CancelledError

Когда asyncio закидывает внутрь корутины `CancelledError`, то ожидает что исключение всплывет вверх по стеку вызовов …

Учтите особенности timedelta.seconds

Название атрибута `timedelta.seconds` часто вводит в заблуждение. Сначала кажется, что речь идёт об общем количестве …

Почините сломанную миграцию

Миграция выглядит сломанной. Такое случается, если не протестировать её после изменений в коде. И это …

Почините ссылки на посты

Когда хочется почитать пост — хочется кликнуть по картинке или броскому заголовку [здесь](https://dvmn.org/filer/canonical/1577994963/457/) или [здесь](https://dvmn.org/filer/canonical/1577735594/453/).

Обработайте MultipleObjectsReturned

При вызове метода `QuerySet.get` помимо исключения `DoesNotExist` возможна еще одна ситуация — вместо одной записи …

Исправьте битую ссылку

Если в ссылке нет ошибок, то она будет вести на нужную страницу или откроется заданная …

Обработайте DoesNotExist

При вызове метода `QuerySet.get(…)` может так случиться, что искомой записи в базе не будет, и …

Переместите файл в статику

Все картинки на сайте делятся на две группы: статику и медиа. Первые намертво пришиты к …

Исправьте реакцию на ReadTimeout в long polling запросе

Исключение `ReadTimeout` возникает если сервер не отвечает так долго, что клиент, не дождавшись, сам разрывает …

Уточните критерий поиска

Если бы автоинспеция искала машины по ФИО водителя, штрафы бы постоянно приходили не тем людям. …

Разделите сессии DialogFlow

DialogFlow использует id сессии подобно тому, как сайт узнаёт пользователя по cookies. С помощью сессий …

Добавьте в парсер поддержку всех относительных адресов

Сайты в интернете — это вещь динамичная, их код постоянно обновляется, даже если внешне это …

Проверьте обработку исключений

Если блок кода внутри `except` сломан, то этого легко не заметить. Сначала программа будет отлично …

Замените обратные слеши в адресе

По недосмотру на Windows часто используют адреса с обратным слешом `\`: ```html ``` По стандарту …

Изолируйте миграцию от остального кода

В миграциях Django ни в коем случае нельзя использовать код из models.py и прочих файлов …

Обеспечьте уникальность названий для скачиваемых файлов

Со временем администрация сайта может переместить файлы с одного адреса на другой. Например, могут раскидать …

Проверьте ответ tululu на редирект

Сайт tululu ведёт себя нестандартно — в любой непонятной ситуации он вместо 404 присылает редирект …

Укажите HTML title

Вы замечали, что у вкладок браузера есть свои названия? Эти надписи подсказывают на каком сайте …

Добавьте favicon

Каждая вкладка браузера имеет своё название и иконку — так она подсказывает на каком сайте …

Отключите неактивные кнопки

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

Почините битую вёрстку

В верстке есть ошибки. Это может привести к некорректному отображению сайта в нестандартных браузерах или …

Закодируйте URL

В адресе URL разрешено использовать не так много символов. Пробелы, квадратные скобки, кириллица — все …

Укажите img alt

Атрибут `alt` является обязательным для заполнения. Если оставить его пустым, то вёрстка будет некорректной.

Отделите пользователей разных соцсетей и чатов

Каждая соцсеть и каждый мессенджер следят за уникальностью своих id. Если пользователь получил id, то …

Закройте сокет

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

Считывайте архив равными порциями

Метод `readline` считывает данные до символа переноса строки `\n`. В бинарном файле сложно предсказать когда …

Очистите токен

Программа не может авторизоваться на Девмане по токену. Вместо токена она требует в настройках строку …