Skip to content

Instantly share code, notes, and snippets.

dvmn-tasks

Block or report user

Report or block dvmn-tasks

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@dvmn-tasks
dvmn-tasks / Сценарии использования.md
Last active May 18, 2020
Сценарии использования к уроку Верстаем онлайн-библиотеку
View Сценарии использования.md

Сценарии использования

Сценарии использования (use-cases) к уроку Верстаем онлайн-библиотеку курса Девман.

1. Хочу скачать библиотеку

Ваш заказчик — школьник Максим — хочет скачать к себе новую, свежую версию библиотеки. У него уже есть ссылка на репозиторий, вы сами её дали.

  1. Максим перешёл по ссылке на репозиторий GitHub
  2. Из README понял, как скачать библиотеку к себе
View Глючит livereload.md

Глючит livereload?

Если вы запустили скрипт, а изменений на сайте не видать, то проверьте запускался ли код сборки сайта. Функция watch реагирует только на новые изменения, сделанные уже после запуска программы. Всё что случилось раньше она не заметит. Подробнее в слайдах.

Второй вариант — изменения были в py-скриптах. Их livereload не подхватывает, придётся перезапустить скрипт вручную.

Advanced level

Flask и Django умеют самостоятельно перезапускаться даже при изменениях в py-файлах. Но это довольно сложный трюк с использованием subprocess. Если интересно, почитайте код Werkzeug, фрагмент кода.

@dvmn-tasks
dvmn-tasks / how-to-check-urlencode.md
Last active May 13, 2020
Кодирование ссылок в шаблоне
View how-to-check-urlencode.md

Кодирование ссылок в шаблоне

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

Подробнее о проблеме:

Как тестировать

@dvmn-tasks
dvmn-tasks / Backslash in url.md
Last active May 13, 2020
Что делать с обратными слешами \ в адресе?
View Backslash in url.md

Что делать с обратными слешами \ в url-адресе?

В URL не должно быть обратных слешей \, стандартом разрешён один лишь разделитель, и это прямой слеш /. Если вы работаете на Windows, то наверняка столкнётесь с рядом проблем.

Проблемы начинаются когда в данные попадают пути с каталогами:

images\photo.png
books\amigo.txt
@dvmn-tasks
dvmn-tasks / Как проверить related_name.md
Last active May 13, 2020
Как проверить related_name
View Как проверить related_name.md
@dvmn-tasks
dvmn-tasks / README.md
Last active Feb 14, 2020
Шаблон. Сообщение проверяющему
View README.md

Добрый день. Вы просили связаться.

У меня проблемы с уроком {название} в модуле про {тема}. Вот мой код: {ссылка}.

В разделе "Где проблема" было вот это:

{скриншот}

@dvmn-tasks
dvmn-tasks / README.md
Last active Aug 9, 2019
Как отправить файл с помощью Requests
View README.md

Этот сниппет кода основан на ответе к вопросу о загрузке файлов через Requests на сайте StackOverflow.

import requests

with open('image.jpg', 'rb') as file:
    url = '...'
    files = {
        'media': file,  # media — это имя поля данных, как указано в доке к API
    }
@dvmn-tasks
dvmn-tasks / exception-bubbling.md
Last active Nov 7, 2019
Где перехватывать исключения
View exception-bubbling.md

Исключения умеют всплывать

Исключения в Python — это особый объект, который умеет путешествовать между функциями и менять их поведение. Своим появлением исключение прерывает обычное исполнение программы — сверху вниз и вглубь — и переводит его в особый обратный режим — наверх до подходящего try except finally.

Для примера рассмотрим программу — информер с прогнозом погоды. Функция request_weather делает запрос к API сайта weather.com и возвращает прогноз погоды:

def request_weather():
    response = requests.get('https://weather.com/api/weather/moscow/')
    return response.json()
@dvmn-tasks
dvmn-tasks / script.py
Created Jul 17, 2019
Async code example
View script.py
import asyncio
import itertools
import aionursery
PRELOADER_SYMBOLS = [
'|',
'/',
'—',
'\\',
]
@dvmn-tasks
dvmn-tasks / http_err_statuses.md
Last active Nov 28, 2018
Распрстранённые ошибки при работе с HTTP и пояснения к ним
View http_err_statuses.md

HTTP статусы

Статус ответа приходит от сервера вместе с ответом. Например, вы наверняка уже знакомы с кодом 404 — он означает "Страница не найдена". Таких кодов очень много и стоит ориентироваться в них, чтобы не теряться и быстро находить ошибки.

Код ответа всегда состоит из трёх цифр. По первой цифре можно понять к какому классу относится статус. Если код начинаетсяс цифры:

  • 1 — информационный. Скорее всего с ним вы не столкнётесь ещё долго. Как пример приведём 101, «переключение протоколов».
  • 2 — успешный. Его рассматривать не нужно, всё ведь прошло хорошо. Ответ 200 так и расшифровывется: «хорошо».
  • 3 — перенаправление. Например, 308, «постоянное перенаправление» — запрашиваемый ресурс был окончательно перенесен на новый адрес.
  • 4 — ошиба клиента. Например, 404 — «страница не найдена». То есть клиент попросил у сервера страницу, которой нет. В такой ситуации ошибся явно клиент, а не сервер.
You can’t perform that action at this time.