#Python

Как быстро поднять простой HTTP-сервер

Published at October 8, 2013 ·  1 min read

Скорее заметка для себя. Постоянно забываю об этом ключе. Иногда нужно очень быстро поднять HTTP-сервер с минимальным функционалом. Например, нужно проверить HTML+JavaScript, который работает только через веб-сервер. Я, конечно понимаю, что у меня под рукой всегда есть, как минимум nginx, и поднять на нем сайт, который будет раздавать статические фалы, делов на 5-10 минут. Но, во-первых, это долго, а во-вторых, этот самый nginx у меня находится на виртуалке, пусть и включенной в 90% времени на ноутбуке....


Статический анализ динамического кода: мысли вслух

Published at January 5, 2013 ·  2 min read

В очередной раз чуть не наткнулся на давнюю проблему, но вовремя опомнился. При pylint “радостно” сообщил, что в некоторых модулях есть unused imports и их можно(нужно) удалить. Все было бы хорошо, если б не одно но: python очень даже динамический язык, а pylint ничего не знает о том, что будет происходить с кодом во время выполнения. Исходя из этого, уже можно представить какие проблемы могут быть. В моем случае, код был такой:...


Создание своего локального PyPI репозитория

Published at June 12, 2012 ·  3 min read

Создать свой PyPI репозиторий для рабочего проекта мне пришлось сразу по нескольким причинам: начиная от архитектурных особенностей, заканчивая простотой удобством такого решения. Началось все с того, что наше приложение состоит из набора независимых между собой частей, packages. Соответственно, каждый такой пакет может зависить от любого числа других - как самописных так и нет. В таком случае создавать для каждого пакета свой файл pip-requirements для разворачивания окружения стало сложно и неудобно. Следующая причина - это сделать возможность установки любого пакета нужной верисии не имея доступа к нашей системе контроля версий (mercurial)....


Восстанавливаем работу Mercurial и MacOS Lion + Python 2.7

Published at March 21, 2012 ·  1 min read

Уже не помню когда у меня перестал ратотать клиент к mercurial (hg) - после перехода на Python 2.7 или апгрейда дла Lion. Но так, как я им не пользовался, то решил не тратить время на восстановлние работоспособности. Но тут на проекте решили использовать Mercurial в качестве source control. Соответственно пришлось разбираться с hg. Сразу скажу что установка последней версии проблему не решила. Шаг 1. Выполняем команду hg и получаем ошибку:...


Избавляемся от ошибки socket.error: [Errno 98] Address already in use в python

Published at February 8, 2012 ·  1 min read

Время от времени, при разработке очередного API, которое работает поверх HTTP или создается Socket-сервер после остановки и попытки запуска сервера получаю ошибку: socket.error: [Errno 98] Address already in use Проблема заключается в том, что при аварийном (Ctrl+Z) завершении сервера в операционной системе остается запущенным процесс, который слушает нужный мне порт. В разных ОС время жизни такого процесса разное: в RHEL это около двух минут, в Ubuntu - больше. Решение достаточно простое....


Мысли в влух о модульности Django

Published at January 3, 2012 ·  2 min read

Все сказанное ниже является личным мнением автора и не является объективной точкой зрения и/или истиной последней инстанции. Я всегда считал и продолжаю это делать, что Django - не очень-то и модульный фреймворк. Он расширяемый, но не модульный, IMHO. В моем понимании модульный фреймворк, это фреймворк, который состоит из ядра (core), и каких-то модулей, которые можно к нему подключать при желании/необходимости. Но и без них будет доступна минимальная функциональность. В случае же Django - выкинуть из него некоторые модули (e....


Первая встреча харьковского Python Community Kharkiv.Py

Published at November 9, 2011 ·  1 min read

В Киеве ежегодно проходит PyCon, переодически собираются встречи Kyiv.Py - жизнь python community по немного идет своим ходом. А вот в Харькове, к сожалению, ничего подобного не было (не считая DevTime прошедшей весной). Вот мне и хахотелось собрать харькоское python community для общения, обменом знаниями и опытом. Подробности на http://kharkivpy.org.ua/...


Установка компилятора gcc на Mac OS Lion

Published at October 28, 2011 ·  1 min read

При установке пакетов psycopg2 и lxml easy_install радостно падал с криками:  unable to execute gcc-4.2: No such file or directory error: command ‘gcc-4.2’ failed with exit status 1  Вполне логично, т.к. gcc у меня не стоял :(. Странно только что в Snow Leopard все работало. Немного полазив по инету нашел, что gcc ставится вместе с XCode, который ставится бесплатно из Mac App Store. Но и это не сразу помогло....


Пару слов о UA Pycon 2011

Published at October 25, 2011 ·  2 min read

На прошедших выходных прошла уже вторая ежегодная конференция Ua Pycon 2011. Как видно из названия - конференция посвящена языку программирования Python. Людей было действительно много, наверное 300+. Официальных цифр я не видел/не помню. Также, в отличии от прошлого года, было целых 2 потока докладов, что является доказательством того, что конференция растет, а вместе с ней растет и Python-сообщество Украины, что меня очень радует. На фоне этого хочется создать свое маленькое или не очень харьковской сообщество, т....


Когда нужно использовать Django

Published at August 31, 2011 ·  1 min read

Выбор веб-фреймворка не в .NET стеке для нового проекта достаточно нетривиальная задача. Их много - больших, маленьких, хороших и не очень, горячих и зелёных. Так как при работе с Python больше сталкивался с Django, то для себя, т.е. очень IMHO, сделал несколько правил. Использовать Django нужно когда:  нужно получить опыт с Django; нужно сделать быстро сайт с админской частью (блог, CMS и т.д.); есть хорошее готовое приложение/модуль для Django и его нужно сомсем немного доточить напильником; нет необходимости заморачиватья с DAL (data access layer) и стандартного ORM вполне достаточно; какие-то из модулей Django уж ооочень хорошо подходят для текущей задачи; нужно сделать что-то очень быстро и нет опыта с другими фреймворками....


Eventlet - concurrent-библиотека для Python

Published at August 17, 2011 ·  2 min read

Давно не писал обзоры приложений и библиотек, но эта мне так понравилась, что не удержался. Давно не писал обзоры приложений и библиотек, но эта мне так понравилась, что не удержался. Работа с потоками всегда была не самым лёгким занятием для программистов. А если брать особенность работы с потоками в Python ветки 2.x и 3.x (не считая версий 3.2 и 2.7), то кроме потоков нам на голову падали ещё проблемы в GIL (Global Interpreter Lock)....


Google App Engine 1.5.0: backends, Go и другие изменения

Published at May 10, 2011 ·  2 min read

Сегодня вышел Google App Engine 1.5.0. Кроме большого числа пофикшенных багов, появилось несколько достаточно интересных изменений. Среди них стоит отметить такие:   Backends - постоянно запущенный инстанс одной из четырех конфигураций, который не связан с запросами (http requests) и может занимать до 1GB памяти. Один из способов применения - генерация отчетов, которая занимает много времени или другие ресурсоемкие задач Изменения в Task Queue - поддержка pull-запросов, увеличение лимита на используемую память Размер HTTP Request и Response увеличен до 32MB High Replication Datastore теперь является хранилищем по умолчанию для новых приложений Много изменений, связанных с квотами - некоторые были увеличены, а некоторые, наоборот - уменьшены К моему сожалению, Full Text Search еще не закончили :(....


Dev Time #4: Python - 2.5 недели спустя

Published at April 30, 2011 ·  1 min read

DevTime прошел, а отчёт так и не был написан. В этот раз писать буду мало и только об одном докладчике. Вообщем могло быть и хуже, могло быть и лучше. Если коротко - сказывается недостаток выступлений на публику. Это был 3-й доклад, предыдущие два были для UNETA. Буду стараться в будущем делать лучше и больше. Собстенно, сам доклад (видео):   Презентация:   Примеры кода, уже традиционно, на github: https://github.com/e0ne/events/tree/master/devtime/tipfy...


Dev Time #4 - Python

Published at March 31, 2011 ·  1 min read

Среда, 13 апреля этого года должна была пройти так же, как и остальные среды, но не тут-то было. В этот день состоится очередная встреча харьковского сообщества разработчиков Dev Time (мой отчет с первой встречи: http://blog.e0ne.info/post/First-Kharkov-DevTime-event-summary.aspx). Особенностью этой встречи будет то, что это первое подобное события на моей памяти в Харькове, посвященное языку программирования Python. О Python будет говорить Настя Хоменко aka @Eva__Brown с докладом “Python Tips” (детали уточняются). Вторым докладчиком буду я....


[Updated] Python 3.2 и новая версия PyCharm IDE

Published at February 22, 2011 ·  1 min read

Буквально на днях вышло сразу два интеречных релиза: Python 3.2 и PyCharm 1.2 EAP Build 105.13. Так как сейчас в новых версиях Python изменений в синтаксисе нет (сделано это для ускорения перехода с ветки 2.x на 3.x), то все изменения сводятся к более стабильной работе, фиксам багов и всяким маленьким и не очень плюшкам. На фоне этого релиза новая версия PyCharm кроме некоторых небольших улучшений/изменений несет в себе одну достаточно важную функцию под названием “Python version compatibility inspection”....


tipfy - маленький, но мощьный web framework для GAE

Published at January 17, 2011 ·  3 min read

Так уж сложилось, что мне было необходимо выбрать framework для разработки небольшого приложения на python + GAE. Первым делом я посмотрел в сторону Django и немного огорчился, узнав что теперь GAE team рекомендуют использовать форк django-nonrel - практически тот же django, но дающий возможность простой работы с NoSQL базами данных. Так как django-nonrel все ещё не достиг версии 1.0 и имеет ряд недоработок, которые разработчики обещают исправить в ближайшее время. Из недостатков, которые для меня оказались решающими стоит отметить - не работает с GAE “из коробки”, соответственно необходимо многое доустанавливать-настраивать руками, на что не хотелось тратить время....


Python и virtualenv - разные среды разработки без виртуальной машины

Published at January 3, 2011 ·  3 min read

Проблема с использованием разных версий софта практически настолько же стара как мир разработки этого самого софта. Смотря со стороны разработчика, то самый простой случай - это когда нужно пофиксить какие-либо баги в предыдущей версии. Проблема заключается в том, что для dev environment уже используется более новая версия python, django и/или другого, необходимого для проекта, ПО. В более “тяжелом” случае все становится еще интересней: в production одно, на stage - другое, на машине разработчика - третье, а тут еще нужно писать под google app engine, для которого требуются специфические (старые) версия python/django....


[Offtopic] Анонс сайта notacash.com

Published at October 6, 2010 ·  1 min read

Те, кто фолловит меня в твиттере, уже знают о существовании сайта notacash.com. Сейчас я хочу немного рассказать о нем. Более чем 3.5 года моя работа связана с технологиями Microsoft, в частности - .NET framework и платформа ASP.NET. Но так, как кроме языка программирования C# существует ещё большое количество других - я решил попробовать что-то другой. Выбор пал на скриптовые языки,а именно - python. По мере приобретения теоретических знаний о python, появлялась необходимость в их практическом применении....


HTML Decode/Encode и URL Decode/Encode - что, когда и зачем использовать?

Published at September 3, 2010 ·  4 min read

HTML Decode/Encode. Если кто-то слышал об такой атаке на веб-сайты, как XSS Injection, то он(она) знает что для предотвращение такой атаки необходимо использовать функции HtmlEncode/HtmlDecode. XSS Injection (Cross-site injection) - один из способов атак веб-приложений, главной идеей которого является вставка(инъекция) чужого javascript-кода на атакуемый веб-сайт. Как минимум, это может привести к краже печенек cookies и получении прав администратора сайта. … 1.1. ASP.NET Это происходит, примерно, так: Допустим, у нас есть форма для отправки комментарием, где пользователь вводит свой еmail и текст коммеентария....


DevConf 2010

Published at May 16, 2010 ·  1 min read

DevConf 2010 уже завтра. До поезда в Москву осталось чуть более 3-х часов. Посмотрел финальную програму и немного расстроился: даже не смотря на то, что едем мы вдвоём, из-за плотного расспеисания и немкольких паралельных потоков врядли получится попасть на все интересующие доклады :(. Надеюсь что организаторы запишут и выложут видео....


Пишем Hello World на IronPython

Published at October 21, 2008 ·  2 min read

IronPython - динамический язык с поддержкой .NET. Полностью совместим с оригинальным Python, но, в тоже время, позволяет пользоваться всеми преимуществами .net framework. Проект развивается комьюнити и поддерживается Microsoft. Оффициальный блог - http://blogs.msdn.com/ironpython. Текущая стабильная версия - 1.1.2, но уже сейчас доступна вполне рабочая 2.0 Beta 5, которая включает в себя множетсво баг-фиксов и другие изменения. Чтобы начать программировать на этом языке достаточно всего лишь скачать его дистрибутив и запустить его консоль....




Archives

2018 (2)
2017 (3)
2016 (2)
2015 (3)
2014 (5)
2013 (17)
2012 (22)
2011 (35)
2010 (25)
2009 (35)
2008 (32)
2007 (2)