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 getdefaultlocalereturn _parse_localename(localename)File “/home/e0ne/src/project/.venv/app/lib/python2.7/locale.py”, line 428, in _parse_localenameraise ValueError, ‘unknown locale: %s’ % localenameValueError: unknown locale: UTF-8 Проблема заключается в том, что для текущего сеанса шелла(bash, etc) не настроена системная локаль. Ошибка позникала как под Linux(Ubuntu, RHEL-based), так под Mac OS. Фиксится просто: Добавляем в ~/.bashrc следующие строки:...


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

Published at October 2, 2012 ·  1 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 для разворачивания окружения стало сложно и неудобно....


Пролемы с компиляцией (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

Это компиляция в 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. The bytecode is also cached in .pyc and .pyo files so that executing the same file is faster the second time (recompilation from source to bytecode can be avoided). This “intermediate language” is said to run on a virtual machine that executes the machine code corresponding to each bytecode....


Восстанавливаем работу 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 + 12 Поведение достатчно логичное, если учесть, что: »» 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-site_Scripting_(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 ·  1 min read

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


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

Published at February 25, 2012 ·  1 min read

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


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

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


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-м.  ...


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)