httpbin - инструмент для тестирования HTTP библиотек и кусков кода

При разработке http библиотек периодически возникает необходимость обработки граничных, да и не только граничных, условий:

  • Как происходит обработки 404-ошибки.
  • Если это чат - то как отображаются картинки, текст
  • Как происходит обработка различных кодировок
  • Если прокси, то как убедиться в анонимности прокси-сервера(т.е. http-заголовок не содержит вашего реального IP)

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

И к счастью, реализация подобного механизма уже есть - httpbin.

Пишем простые проекты. Проект #1. Часть #2

Продолжаем писать проект "Страница со статистикой отжимания" с помощью flask + google chart's.

В этой части дополним шаблон javascript'ом, продумаем и реализуем сохранение/загрузки истории.

Ранее создан базовый проект flask и html файл с текстом Hiiii.

Python уроки: исключения (exceptions)

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

Исключительные ситуации или исключения(exceptions) - это ошибки, обнаруженные при исполнении. Например, к чему приведет попытка чтения несуществующего файла? Или если файл был случайно удален пока программа работала? Такие ситуации обрабатываются при помощи исключений.

Если же Python не может понять, как обойти сложившуюся ситуацию, то ему не остается ничего кроме как поднять руки и сообщить, что обнаружил ошибку.

В общем, исключения необходимы, чтобы сообщать программисту об ошибках.

memoryviews - меньше копирований объектов

В Python есть несколько типов для работы с бинарными данными - byte, bytearray, memoryview

Memoryview объекты (согласно документации) позволяют Python-коду(а не C_API) обращаться к внутренним данным объекта, который поддерживает protocol buffer. И работать с этими данными без копирования.

В словах без копирования основная польза для программиста.

django-ipware - определяем IP пользователя

Наверное, вы сталкивались с письмами от google, с содержанием аля "В ваш аккаунт зашли с IP-адреса <такого-то>, что делать?". Чтобы реализовать такую логику необходимо записывать историю входов и ip-адрес.

Для django есть небольшой модуль - django-ipware, который самостоятельно разбирает HTTP(s) запрос. Модуль вычитывает необходимые поля запроса и возвращает адрес пользователя.

Пишем простые проекты. Проект #1. Часть #1

Нудное введение:

Замечено, что новичкам трудно перейти от теории к практике - заставить себя писать, а не только читать. Чтобы помочь мы постоянно публикуем различный материал и указываем как применить эти знания на практике.

В этот раз решили написать 2 небольших проекта:

  • Первый - страница со статистикой отжимания. Будет показано, как с помощью flask + google chart's сделать проект для сохранения и визуализации количества отжиманий.
  • Второй - vk2rss - сервис для преобразования стен групп ВКонтакте в RSS. Будет рассмотрен парсинг, работа с VK API, создание простого GUI.

Оба проекта будут описаны в виде текста. А следующие попробую записать в виде скринкаста (Это ведь интересней?)

Сборники задач. Часть 2

Теория без практики - это ничто. Предлагаем ссылки на сборники задач.

Сборники задач. Часть 1

Теория без практики - это ничто. Предлагаем ссылки на сборники задач.

ipaddress - работаем с IPv4/v6

Модуль ipaddress упрощает создание, редактирование, манипуляцию с IP-адресами и сетями начиная с Python 3.3. (тогда он появился)

pathlib - объектно-ориентированный подход к файловым путям

Python 3.4 добавил модуль pathlib. Этот модуль содержит классы, представляющие файловые пути с семантикой, подходящих для различных операционных систем.

Теги

notify, os, isinstance, encode, database, all, многопоточность, mail, срез, сборник, pytest, новый год, конкурентность, аргумент, gevent, pycon, GIL, python проект, интерпретатор, игры, замыкание, pynotify, функциональное программирование, pypi, типы данных, csv, график, testing, поиск ошибок, автоматизация, ardruio, swagger, память, vk.com, файл, pip, web, тест, статический анализ, dsl, syntax, отчет, notification, список, ide, графика, rest, pycallgraph, githook, generic, hook. webhook, история, asyncio, logging, инструмент, swig, click, Category: Полезные модули, crawler, while, aiohttp, оптимизация, clonedigger, Бизли, трансдьюсер, matplotlib, bottle, концепция, типизация, language, урок, fuzzy-testing, nose, image, путь, удаленный вызов процедур, тестирование, консоль, vk, c, list, pylint, operator, print, практика, сравнение, functools, польза, измерение, сопроцедуры, selenium, генерация данных, БД, мастер класс, plotly, bokeh, генерация, производительность, winapi, flask, typing, strip, lxml, os.path, grab, scandir, Qt, pycharm, проект, книга, dictwriter, coverage, html, фп, pypy, signal, стандартная библиотека, now, weakref, google, практика программирования, Tags:, corotine, sqlalchemy, nameko, синтаксис, import, паттер, virtualenv, api, зеленый поток, timeit, контекст, бд, funcy, encoding, кэш, json, статистика, байт-код, unittest, кодировка, datetime, opencv, ооп, itertools, package, fp, mixin, python, assert, pyqt, утка, garbage collector, frozenset, курс, numpy, django-debug-toolbar, терминал, xpath, closure, type, requirements, дубликат, статическая типизация, PIL, работа, debug, быстродействие, водяной знак, plot, рейтинг, ip, python3, yield from, fronteram scrapy, видео, test, fuzzy, curses, gitter, unicode, twitter, decode, cache, pep, вконтакте, операционная система, ОС, awesome, any, тесты, задача, установка, последовательность, ошибки, генератор, hardcore, toolbar, Wx, магия, doctest, qt, железо, множество, marshal, сигнал, greenlet, слайс, db, future, время, admin, pyside, настройка, regex, module, примесь, slots, sys, email, action, регулярные выражения, одноплатный компьютер, дубликат кода, scrapinghub, micropython, mock, фича, raspberry pi, foreign key, ссылка, pickle, django, нг, модуль, справочник, celery, импорт, лямбда, with, rpc, наука, jinja2, log, обработка текста, super, set, svg, матрица, pygame, fixture, docstring, декларативный язык, fabric, пакет, опыт, магическая переменная, regexp, Гвидо, slice, __all__, gui, база данных, юникод, yattag, cython, матан, документация, анализатор, менеджер контекста, yield, учебник, real-time, слабая ссылка, IPython, браузер, xml, GUI, gc, channel, zip, машинное обучение, библиотека, __future__, ошибка, данные, requirements.txt, оповещение, парсинг, изображение, CLI, tox, фильтр, feedly, R, cffi, http, таблицы, gunicorn, python2, стандарт, if, rss, requests, tkinter, time, mechanize, gensim, интерфейс, Category: Разное, визуализация, postgresql, web parsing, язык, исключение, архитектура, lstrip, parsing, Category: Встречи, путь до файла, copy paste, multiprocessing, объект, rstrip, статический анализатор, lambda