#python

Python Releases

Published at February 21, 2019 ·  1 min read

Since I switched to Python 3.5 as my default and I need to keep backward compatibility with Python 2.7 one year more, I don’t follow new features and releases a lot. Originally, Python 3.5 was released about 3.5 years ago. Looking throw release notes, I think I’ll switch to Python 3.6 just for the projects where I don’t need to support 2.7. There are not a lot of features in newer releases but some of them seem to be useful for me....


Click - Implement CLI Without Pain

Published at February 16, 2019 ·  1 min read

I didn’t write reviews for libraries for a while. Honestly, I don’t want to write a review for click because a reading of it will require more time than you try it. It’s an awesome library which is really easy to use. E.g.: @click.command() @click.option('--command', prompt='command name: clone or update', help='Clone or update repos') def main(command): if command == 'clone': clone() elif command == 'update': update() I didn’t find anything like this for Python....


Vue.js + Python API + Docker in Development Environment

Published at January 8, 2019 ·  3 min read

NOTE: All things described in this post could be not 100% correct. I just described my development environment for a simple project with JavaScript fronted and Python backend. Everything located in the same repository to make example less complicated but it also could work well for small projects and/or when backend and frontend are implemented by the same team. Any contributions are welcome! Intro It’s a story about how I tried to create a simple development environment for web project with Python-based backend and frontend written on Vue....


Learned About Pystone

Published at January 4, 2019 ·  1 min read

pystone is a simple Python benchmark which is included in a standard library. As any other benchmark you need to be careful with its' results. It was interestings how fast are my environments. All tests were done using python3 -m test.pystone command. Intel Core i5 4590 @ 3.30GHz: Pystone(1.2) time for 50000 passes = 0.19486 This machine benchmarks at 256594 pystones/second * Intel Core i7 2600 @ 3....


The Easiest Way to Parse Xml in Python

Published at January 3, 2019 ·  1 min read

I would like to add this as a note here. I really hope that we will not use XML anymore in the nearest future but in case if somebody needs it, you have to use untangle. untangle is awesome pure python library to parse XML withoud pain. You just need to try if if XML still exists in your world....


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

Published at October 8, 2013 ·  1 min read

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


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

Published at January 5, 2013 ·  1 min read

from quantum.openstack.common import cfg…from quantum.plugins.openvswitch.common import config И pylint “ругался” на 2-й импорт, который нигде больше не использовался. Но если посмотреть на код этого модуля (https://github.com/openstack/quantum/blob/master/quantum/plugins/openvswitch/common/config.py) и вспомнить как работает механизм импорта в Python’е, то становится ясно, какие проблемы могут быть: при загрузке модуля config, он устанавливает значения по умолчанию настроек. А так, как со всемы настройками принято работать через общий интерфейс cfg, и не импортировать можуль config, то, с большой вероятностью, где-то в runtime у нас произойдет исключение....


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

Published at June 12, 2012 ·  3 min read

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


Восстанавливаем работу 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.g. models, template engine) достаточно сложно. Что-бы сделать что-то подобное, необходимо самостоятельно удалять ненужные куски кода, что тянет за собой проверку работоспособности оставшихся частей и прочие неприятности в виде сложной поддержки полученного кода и обновление фреймворка....


Первая встреча харьковского 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 directoryerror: command ‘gcc-4.2’ failed with exit status 1  Вполне логично, т.к. gcc у меня не стоял :(. Странно только что в Snow Leopard все работало. Немного полазив по инету нашел, что gcc ставится вместе с XCode, который ставится бесплатно из Mac App Store. Но и это не сразу помогло. Ниже привожу список шагов, которые понадобились для установки gcc и psycopg2 после этого....


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

Published at October 25, 2011 ·  1 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  P.S. Ну хоть один пост написал в этом месяце…...


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 и имеет ряд недоработок, которые разработчики обещают исправить в ближайшее время....


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

Published at January 3, 2011 ·  2 min read

Первой моей идеей было поднять разные виртуалки для тестирования, но немного погуглив наткнулся на такую замечательную вещь, как virtualenv. Как написано на оффициальном сайте - “virtualenv is a tool to create isolated Python environments”, что в переводе звучит, примерно, так: “virtualenv - приложение для созданий изолированных рабочих сред для python”. Таким образом вы можете создать несколько окружений с разными версиями python и/или других библиотек. Установка virtualenv ничем не отличается от установки любой библиотеки, написанной на python....


[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 ·  3 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, которая включает в себя множетсво баг-фиксов и другие изменения. Чтобы начать программировать на этом языке достаточно всего лишь скачать его дистрибутив и запустить его консоль....


Tags

.net .net-framework .net-framework-3.5 agile ajax ajax-control-toolkit ampq ansible apache asp.net asp.net-mvc automation axum babel bash benchmark blog blog-engine bootstrap buildout c# cache centos chrome ci cinder ckan cli cloud code-review codeplex community config debugger deface dependencies development-environment devices devstack devtime disks django dlr dns docker dockerimage dos easy_install elmah encoding environment-variables error event events everything-as-a-code exception exceptions fabrik firefox flask foreach forms fstab gae gcc gerrit git github go google google-app-engine grep hack hacked hardware headless horizon hound html hugo iaas ienumerable iis internet iptables iron-python ironic iscsi java-script javascript jenkins jquery js jsx k8s kharkivpy kiss kombu kubernetes kvm kyiv lettuce libvirt linux lio loci logging loopback losetup lvm mac-os macos mercurial microsoft microsoft-sync-framework mobile mono ms-office msbuild networking news nginx npm npx offtopic oop open-source open-xml opensource openstack openvswitch os packages paraller-development patterns-practices performance php pika pip plugins pnp podcast popup postgresql profiler project protocols proxy pycamp pycharm pycon pykyiv pylint pypi python python-3 qcow quantum qumy rabbitmq rar react reactjs refactoring rfc rhel search-engine security selenium server shell silverlight socket software-engineering source-control sourcegear-vault sources sql sql-server sql-server-express sqlalchemy ssh static-site sublimetext svg tests tgt tipfy todo tornado typescript uapycon ui uneta unit-tests upgrades usability vim virtualenv visual-studio vitrage vm vue.js vuejs web-development web-server web-service web_root webpack webroot windows windows-live word-press x32 x64 xcode xml xss xvfb интернет-магазин книги

Recent posts

Go 1.18: new features

Всё будет Kubernetes

2022 Relaunch

Everyday Blogging

I don't want this CI


Archives

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