Archive 2012

Установка Open vSwitch на RHEL/CentOS 6.3 в 10 шагов

Published at December 20, 2012 ·  2 min read

Open vSwitch (http://openvswitch.org/) - это виртуальный свитч, котороый позволяет вам строить виртуальную сеть (SDN) поддерживает различные протоколы для мониторнига и управления (NetFlow, sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag и др). Приставка “open” означает что он является opensource продуктом со всеми вытекающими плюсами и минусами. На просторах интернета найти документацию по нему и руководства по установки не проблема, если вы знаете английский язык. На русском практически ничего нет:(. Далее я расскажу процесс установки его с исходников на Red Hat Enterprise Linux 6....


Lettuce и Python3

Published at December 3, 2012 ·  1 min read

Решил я для своих маленьких и уютных домашних проектов (pet project’ов) использовать Python 3.3. Казалось бы, ничто не предвещало беды. Ну кроме как отсутстие поддержки Python 3.x у некоторых библиотек. В частности, Lettuce(http://lettuce.it/). Но так, как я уже выбрал не самый простой, на данный момент, путь (да, я про python3), то отступать было не куда, решил портировать Lettuce под Python 3.3. Возможно, свою роль в этом сыграли еще свежие воспоминания о UA Pycon 2012, в частности, доклад Михаила Коробова “Как всем перейти на Python 3....


Краткой описание сетевых интерфейсов в Linux

Published at November 29, 2012 ·  1 min read

Посмотрим какие сетевые интерфейсы бывают и какие есть на конкретном хоте. Делается это командой “ifconfig” или “ip link show”. У каждого тут будет разный список, в моем случае, команда “ip link show” выводит следующее:  Рассмотрим подробнее типы интерфейсов: lo - local loopback interface, виртуальный интерфейс, который присутствует в ядре, отвечает на адрес 127.0.0.1. Весь пакеты, отправленные на него будут автоматически отправлены обратно на тот же интерфес(адрес), с какого отправили....


Избавляемся от ошибки ValueError: unknown locale

Published at October 8, 2012 ·  1 min read

Переодически сталкиваюсь с этой проблемой и приходится гуглить. Решил, записать, что бы проще искать. Собственно, проблема выглядит так: File “/home/e0ne/src/project/.venv/app/lib/python2.7/locale.py”, line 496, in getdefaultlocale return _parse_localename(localename) File “/home/e0ne/src/project/.venv/app/lib/python2.7/locale.py”, line 428, in _parse_localename raise ValueError, ‘unknown locale: %s’ % localename ValueError: unknown locale: UTF-8 File “/home/e0ne/src/project/.venv/app/lib/python2.7/locale.py”, line 496, in getdefaultlocale return _parse_localename(localename) File “/home/e0ne/src/project/.venv/app/lib/python2.7/locale.py”, line 428, in _parse_localename raise ValueError, ‘unknown locale: %s’ % localename ValueError: unknown locale: UTF-8 Проблема заключается в том, что для текущего сеанса шелла(bash, etc) не настроена системная локаль....


Private Clouds: что? где? зачем?

Published at October 2, 2012 ·  2 min read

Так как в последнее время я часто слышу вопросы вида “зачем нужны частные облака и что это такое?”, то решил написать этот пост, на который смогу ссылаться. Итак, вначеле уже традиционное определение из Wikipedia: **Частное облако (англ. private cloud) — инфраструктура, предназначенная для использования одной организацией, включающей несколько потребителей (например, подразделений одной организации), возможно также клиентами и подрядчиками данной организации. Частное облако может находиться в собственности, управлении и эксплуатации как самой организации, так и третьей стороны (или какой-либо их комбинации), и оно может физически существовать как внутри, так и вне юрисдикции владельца....


OpenStack и Quantum: начало

Published at September 11, 2012 ·  4 min read

Из wiki.openstack.org: Quantum is an OpenStack project to provide “network connectivity as a service” between interface devices (e.g., vNICs) managed by other Openstack services (e.g., nova). Из описания можно предположить, что в будущем это станет заменой nova network, что не далеко от правды. Ниже я расскажу об установки OpenStack + Quantum и немного о самом Quantum. Установка OpenStack c помощью скриптов devstack является одной из самых простых и быстрых. В простейшем случае, это выглядит так:...


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

Published at June 12, 2012 ·  3 min read

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


Пролемы с компиляцией (Xcode) после перехода на Mac OS Lion

Published at April 30, 2012 ·  1 min read

После перехода на Mac OS X Lion многие приложения, которые нужно устанавливать с исходноков перестали компилироваться с примерно такой ошибкой:  error trying to exec ‘cc1plus’: execvp: No such file or directory В список таких приложений попали macports, MacVim, питоновские библиотеки, которые имели расширения на C и т.д. Суть проблемы заключается в том, что Xcode 4.3 или предыдущая версия (Xcode’ом не польщуюсь, поэтому особо не слежу за апдейтами) начал ставиться со всеми зависимостями и тулами в другую папку, а именно в */Applications/Xcode....


Отключение кеширования статических файлов в Tornado

Published at April 5, 2012 ·  2 min read

Статические файлы (картинки, скрипты, css), как правило кешируются для более быстрой работы сайтов (уменьшение трафика - это уже скорее побочное явление). И в этом, казалось бы, нет ничего плохого. За исколючением одного - когда это самое кеширование мешает разработке. В моем случае используется стандартная связка nginx для статики + Tornado для всего остального. Но так как создавать вторую версию конфигурации nginx’а с отключенным кешированием мне не хотелось, да и в процессе разработке во многих случаях можно обойтить самим лишь Tornado, то я решил отключить кеширование в Tornado....


CPython: bytecode - что, где, зачем?

Published at April 3, 2012 ·  3 min read

Хотя python и является интерпретируемым языком программирования, но все-же какае-то компиляция в нем есть. Это не такая компиляция, которую многие привыкли в C/C++. Скорее это нечно похожее на JVM (java virtual machine) и CLR (Common Language Runtime). Это компиляция в bytecode - низкоуровневый платформонезависимый язык, который выполняется внутри Python Virtual Machine (PVM). Более полное и официалное определение с сайта python.org: Python source code is compiled into bytecode, the internal representation of a Python program in the CPython interpreter....


Восстанавливаем работу 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 и получаем ошибку:...


Интересная особенность типа bool

Published at March 6, 2012 ·  1 min read

На днях узнал об одной интересной особенности типа bool в python: >>> b = True >>> b + 1 2 Поведение достатчно логичное, если учесть, что: >>>> isinstance(b, int) True Всё дело в том, что тип bool - это всего-лишь синтаксический сахар и наследник от типа int, который, для удобства использования, может иметь всего два значения - 0 (False) и 1 (True). Пример выше врядли встретится в коде, но зать об этом стоит на случай если где-то случайно поменяется тип переменной с bool на int или наоборот....


Материалы доклада про XSS на QAClub (Харьков)

Published at March 6, 2012 ·  1 min read

Сама презентация: Невоторые полезные ссылки   http://en.wikipedia.org/wiki/Cross-site_scripting http://ha.ckers.org/xss.html http://www.amazon.com/XSS-Attacks-Scripting-Exploits-Defense/dp/1597491543/ref=sr_1_1?ie=UTF8&qid=1331027707&sr=8-1 https://www.owasp.org/index.php/Cross-siteScripting(XSS) http://www.ibm.com/developerworks/tivoli/library/s-csscript/ http://support.microsoft.com/kb/252985 http://css-tricks.com/what-is-xss/ http://habrahabr.ru/blogs/infosecurity/139453/   ...


Доклад про XSS на QAClub (Харьков)

Published at February 27, 2012 ·  2 min read

Уже послезавтра (ну ладно, почти послезавтра) я буду делать доклад на очередной встрече харьковских QA - QAClub‘е. И все было бы ничего, если б в анонсе встречи не были добавлены следующие строчки: “Докладчики постараются рассказать на уровне, который будет доступен и для людей, только знакомящихся с темой безопасности web-приложений. Для понимания доклада про XSS (cross site scripting) знание JavaScript не обязательно”. После этого некоторые самые вкусные интересные вещи о XSS решил не рассказывать....


Тестирование в Python: nose vs pytest

Published at February 25, 2012 ·  2 min read

Продолжаю сравнивать различные python-библиотеки. На этот раз выбор пал на два тест-фреймворка: nose и pytest. Первый позиционирует себя как unit test framework, второй - как для модульных, так и для функциональных и других тестов. Но так, как грань между модульными, интеграционными и функциональными тестами достаточно тонкая, то ее часто не замечают. Поэтому, эти библиотеки можно использовать для всех вышеперечисленных тестов. Краткое сравнение функциональности фреймворков (тут я выбрал наиболее важные для меня вещи): | |nose|pytest |Репозиторий |https://github....


Сравнение библиотек pika и kombu на примере работы с RabbitMQ

Published at February 21, 2012 ·  2 min read

RabbitMQ - одна из реализаций сервера для обмена сообщениями на базе протокола AMPQ(http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol, http://amqp.org/). Подробно описывать его работу, достоинства и недостатки я сейчас не буду. Цель этого поста - сравнить две библиотеки для работы с ним с помощью Python. На самом деле, этих библиотек значительно больше, краткий список их доступен на сайте RabbitMQ: http://www.rabbitmq.com/devtools.html#python-dev. Сравнивал по принципу “нужно это, это и еще вооон то”. Детальное описание фич на сайте - ниже только те, которые были критичные для меня....


Конфигурация сетевых интерфейсов в RHEL-based операционных системах

Published at February 15, 2012 ·  1 min read

Еще один пост из серии “чтоб не забыть и знать где искать”. По умолчанию, RHEL 6.x и любой другой, основанный на нём (CentOS, Scientific Linux), кроме Fedora, дистрибутив в минимальной установки (в других не проверял) после запуска не поднимает доступные ему сетевые интерфейсы. Для их работоспособности необходимо сделать следующее: ifup eht0 # dhclient eth0 Первая команда включает сетевой интерфейс eth0, вторая - запускает DHCP Client. Рабочую сеть мы получили, но теперь прийдется выполнять данные команды после каждой перезагрузки, что не есть хорошо....


Избавляемся от ошибки 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 - больше. Решение достаточно простое....


Переквалификация программиста - так ли это просто?

Published at January 25, 2012 ·  3 min read

Так как периодически сталкиваюсь с этой темой решил высказать свое мнение и заодно поспорить на тему “Насколько легко программисту выучить новый язык и писать на нем”. Я неоднократно слышал утверждения о том, что хорошему программисту выучить новый язык и писать на нем качественный софт/код не составит труда. Со своей стороны, я уже второй раз поменял основной язык, на котором пишу/зарабатываю на хлеб с маслом. Сначала был C#/.NET, как правило, это был веб, ASP....


virtualenv + pip как альтернатива buildout

Published at January 4, 2012 ·  2 min read

Мне всегда казалось, что для небольших проектов использование buildout - это как с пушки по воробьям: долго, сложно и неудобно. Хотелось чего-то более простого и понятного. И таким оказалась связка virtualenv + pip. Про virtualenv я уже писал тут. pip - это замена easy_install, менеджер пакетов для python, который позволяет быстро и удобно устанавливать, обновлять и удалять пакеты. Более подробно можно почитать на официальном сайте. Сейчас же меня интересует возможность быстрого развертывания необходимого окружения для запуска проекта....


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

Published at January 3, 2012 ·  2 min read

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


2012-й: успеть до конца света

Published at January 1, 2012 ·  1 min read

 Небольшой список того, что хотелось бы сделать в этом году: дочитать книги Learning Python & Prorgamming Python; опрделиться до конца с форматом блога; вывести со статуса beta notacash.com и доделать там всё, что планировал; разобраться с CQRS и дописать брошенное django-cqrs; ещё больше перейти на лицензионный контент (в первую очередь софт, книги, музыка); прочитать всё из http://www.etnogenez.ru/; сделать регулярными встречи KharkivPy; закончить начатое в 2011-м.  ...




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)