Передача пакетов через поток TCP

21 июня 2016 г. 21:08 python  

Сокеты Беркли предоставляют возможность передавать датаграмы без гарантии доставки (UDP) либо поток байт с гарантией (TCP). Смысл потока в отличии от датаграм состоит в том что при передачи определенного колличества байт на передающей стороне функцией send нет гарантии что вы получите ровно столько же за один вызов recv на принимающей стороне. Например вы можете передать один раз 1000 байт а получить сначала 400 а потом 600 байт. Аналогично в потоке возможен и обратный процесс - склейки - вы можете 3жды отправить по 200 байт а получите сразу 600. Причиной такого поведения есть алгоритм Нейгла позволяющий за счет накапливания байт и последующей отправке значительно повысить эффективность передачи данных. Но что если передавать нужно именно пакеты целиком, то есть датаграмы целиком. Один из вариантов - использовать подход TLV (Tag-length-value), пример на Python приведен в статье.

Advanced Python

28 мая 2016 г. 10:48 python  

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

Все что будет рассматриваться в статье проверялось и относится к python3 и python3.4 в частности. Тут не указаны отличия от этого всего в python2 чтобы не тратить ни чье время, но пару таких отличий все же есть.

Вставка картинок из буфера обмена в TinyMCE4 и загрузка на сервер

6 января 2016 г. 12:10 python   django  

Черкая статьи в блоге приходится нередко вставлять изображения, загружать их отдельными кнопками и диалогами на сервер не всегда удобно. Намного проще вставлять из буфера обмена скриншоты либо всякие зарисовки из Gimp. Как это реализовать и будет рассказано в статье. В качестве редактора я использую популярный TinyMCE 4ой версии, на бэк-енде у меня Django на python3. 

Сборка испольняемого файла из скриптов Python

23 февраля 2015 г. 0:02 python  

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

Во-первых поставляя исходный скрипт нужно позаботится о присутствии интерпретатора нужной версии у пользователя да еще и нужных модулей. 

Во-вторых отдавая пользователю текстовый скрипт он получает возможность изменять его, что для некоторых приложений крайне недопустимо. Этот пункт касается не только python а и других динамических языков с интроспекцией. Безусловно, любой исполняемый файл написанный на компилируемом языке можно дезасемблировать, но это требует от злоумышленника большего опыта и больший усилий. А вот получить даже из байт-кода в .pyc файле текстовый .py может любой кто умеет пользоваться google.

В этой статье мы попробуем разобраться с решением обоих проблем. 

Развертывание Django на cubietruck

24 января 2015 г. 17:06 python   cubietruck   django   nginx  

В статье рассматривается развертывание приложений написанных с использование Django web framework. Для запуска приложения мы будем использовать интерфейс WSGI (Web Server Gateway Interface), который поддерживается в django. В качестве web-сервера будет использован nginx, а взаимодействие между nginx и WSGI будет осуществлено при помощи модуля uwsgi. 

Python будем собирать  из исходников. Причины этому по карйней мере две: во-первых, python3 из репозитариев ARM ubuntu собран без опции Py_ENABLE_SHARED, что при использовании uwsgi приводит к ошибке Fatal Python error: exceptions bootstrapping error.

Во-вторых в репозитарии python3 имеет версию 3.3, а в ней еще нет некоторых прикольных штук, например встроенного виртуального окружения venv.

Документация Django в PDF на русском

7 января 2015 г. 18:25 Arch Linux   python   django  

Django Web Framework известен своей отличной англоязычной документацией с множеством примеров и стандартных решений. Большую работу по переводу на русский язык выполняют создатели открытого проекта http://djbook.ru/. Исходники распологаются на  GitHub. Создатели проекта автоматически компилируют документацию в html и выкладывают на djbook.ru. Если вам нужна оффлайн-версия, вы можете собрать её сами. Как это сделать будет рассмотрено в статье. Я буду использовать дистрибутив ArchLinux. 

Настройка среды и создание проекта на Django в Windows (Python3 + Aptana Studio)

20 октября 2014 г. 1:22 python   django  

Тут качаем пайтон: https://www.python.org/downloads/. При написании статьи, последней версией была 3.4.2. При установке поставить "Add python.exe to Path" в окне Customaze Python ...

Cкачиваем Aptana Studio Тут

После установки переходим в обычную cmd, запустив python --version проверяем в самом низу действительно ли это установленная версия - чтобы потом не было сюрпризов.

Сначала создадим виртуальную среду python. По сути это будет папка с виртуально чистой установкой пайтона. В ней мы будем доставлять нужные модули и при этом они не будут устанавливаться в системе, а будут затрагивать лишь виртуальную среду.

Unix-подобная среда в Windows

3 сентября 2014 г. 11:53 хак   python   Cygwin   vim  

В отличие от ОС Linux, ОС Windows не является системой, удобной для разработки программного обеспечения. Безусловно, критерий удобности - понятие субъективное, но пожалуй безспорным фактом выступает отсутствие в Windows гибко настраиваемого эмулятора терминала и интерпретатора с ридлайном, а также довольно скудный набор базовых утилит командной строки. В этой статье я покажу свой метод создания "комфортного" псевдо-пространства с помощью системы cygwin и терминала Console2.

Achtung! Если вы читаете эту статью позже 2017 и используете Windows 10, то вместо cygwin крайне рекомендую установить Windows 10 creators update который затем даст возможность установить Ubuntu прямо из Windows Store (даже в Home editions). Она реализована на Windows Subsystem for Linux и по сути будет работать также как cygwin (в коммандной строке), но с родным интерфейсом и поддержкой почти всех пакетов из Ubuntu! В качестве терминала вы можете использовать например hyper.

 

Cygwin (Сигвин) представляет собой набор Unix программ и библиотек, скомпилированных под ОС Windows и размещенных в файловой системе таким же образом как и в настоящем Unix-е. Благодаря этому мы получаем полный эквивалент Unix среды начиная от bash и вплоть до компиляторов gcc, которыми  без особого портирования исходного кода можно собирать проекты для выполнения в Windows (достаточно большое количество кросс-платформенных приложений используют такой подход, так как он наиболее простой и быстрый). 

Сборка libFTDI

25 августа 2014 г. 18:43 Linux   ftdi   python   Cygwin  

Микросхемы шотландской компании Future Technology Devices International широко известны ембеддерам во всем мире не только как преобразователь USB-UART, а и как простой способ реализации портов ввода-вывода через USB. В отличие от применения для этих целей микроконтроллеров, микросхемы ft232 и ft2232 не требуют предварительной прошивки а управляющий софт пишется под операционную систему USB-хоста. 

Для взаимодействия с микросхемой на хосте на данный момент предлагается библиотека libFTDI, поддерживаемая немецкой фирмой Intra2net. Библиотека распространяется в виде исходных кодов, в результате сборки которых создаются динамические бибилиотеки, заголовочные файлы для С/С++ а также обвертка для Python.