Archive 2011

OpenStack + RHEL + iptables = buffer overflow detected

Published at December 30, 2011 ·  4 min read

**Никогда не знаешь, где упадет OpenStack(c) **Я, в процессе очередного дебагга. Те, кто читает мой твиттер (@e0ne), должны знать, что в последнее время я работаю с OpenStack’ом, а именно занимаюсь(конечно, не один я) попытками его запуска на Red Hat Enterprise Linux (RHEL), CentOS, Scientific Linux, etc. Т.к. все это построено на базе полной и непросветной enterpise в виде RHEL, то сборка нового дистрибутива, как правило, у меня начинается со сборки именно под эту ОС....


Мобильные сайты на Django

Published at December 27, 2011 ·  1 min read

Сразу оговорюсь, что вопрос мобильной верстки сейчас затрагивать не буду. Исходя из этого списка, шаблоны, которые предназначенные для мобильных устройст будут выглядеть, примерно, так: {% if request.mobile %}Mobile{% else %}Not mobile{% endif %}  Или же наша view поменяет вид на такой: def index(request):if not request.mobile:return render_to_response(‘index.html’)else:return render_to_response(‘mobile_index.html’) Теперь дело за малым - сделать так, чтоб в объекте нашего запроса (request’а) появилось свойство mobile. Один из самых простых и достаточно эффективных способов - посмотреть какой USER_AGENT у браузера, который делает запрос....


Объекты в Python: equals or not equals

Published at December 22, 2011 ·  2 min read

Рассмотрим задачу сравнения двух инстансов простого класса A в Python. Сам класс A выглядит так: class A(object):def init(self, int_param):self.int_value = int_param В данном случае, если мы выполним такой код: a1 = A(1)a2 = A(1) то инстансы этого классы не будут равны между собой: a1 == a2 - Falsea1 is a2 - False Чтобы понять как это все работает и почему получается такой результат рассмотрим функцию id(object). Функция id() возвращает идентификатор объекта, который будет уникальным и неизменным на протяжении времени жизни объекта....


Git: создаем branch из tag'а

Published at December 21, 2011 ·  2 min read

Любая source control система (TFS, SVN, Git и т.д.) умеет работать с такими вещами, как branch (ветка) и tag (метка). Ветки нужны для разработки каких-то фич, исправления багов и т.д., что бы в это время не ломать уже работающий код. Тэги, в свою очередь, нужны для заморозки какой-то версии кода без возможности последующих исправлений. Грязные хаки вроде залезть в базу данных source control чтобы поменять файл с каким-то тэгом я не рассматриваю по понятным причинам....


Качество кода

Published at December 12, 2011 ·  1 min read

Качественного кода нельзя добиться в случае:...


Качество кода

Published at December 12, 2011 ·  1 min read

Качественного кода нельзя добиться в случае:...


Form submit: что может быть проще? Часть 1

Published at November 22, 2011 ·  3 min read

Казалось бы, отправить (засабмитить) HTML форму на сервер - стандартная задача, которая не должна вызывать никаких проблем и/или вопросов. Но так, как мы не занимаемся сферическим программированием в вакууме, то время от времени появляются трудности, вопросы, проблемы. Сегодня на повестки для такая задача: Есть страница для бронирования мест в театре/кино и т.д. Выглядит она, примерно, так: Можно выбрать несколько мест и нажать кнопку “Зарезервировать”. При этом данные на странице постоянно обновляются (ajax) для отображения актуальной информации о свободных местах....


Первая встреча харьковского 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 после этого....


Тестирование проекта: должны ли все тесты проходить успешно

Published at October 27, 2011 ·  2 min read

Хорошо когда код покрыт тестами. Хорошо когда кроме модульных тестов есть еще интеграционные, функциональные, UI-тесты и другие. Но должны ли тесты всегда проходить успешно? Казалось бы, очевидный ответ - да. Но не все так просто… Хороший тест должен выполняться успешно, когда все работает и показывать ошибку если где-то что-то не так. Он должен тестировать только то, что задумывалось и кричать(зчк) сообщать если ожидаемый результат (expetced result) отличается от того, что мы получили при выполнении нашей программы....


Continuous integration (CI) - что это такое и с чем его едят

Published at October 26, 2011 ·  3 min read

Первую версию этого поста я начал писать еще 2009-01-05 и в ней должно было описываться что такое CI и как настроить CruiseConrol.NET для ежедневных билдов. Пока писал - на ДОУ(линк на хоум пейдж) вышла аналогичная статья, т.ч. в то время моему посту не суждено было быть опубликованным. Потом я считал что Continuous integration является обязательным для любого проекта чуть более чем “hello world” и эта простая истина всем понятна. Как оказалось нет…...


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

Published at October 25, 2011 ·  1 min read

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


OpenStack - opensource IaaS платформа на Python

Published at October 13, 2011 ·  1 min read

Сейчас только ленивый не писал об облаках. То, что раньше было просто веб-сервисом - сайчас SaaS. Вот раньше я пользовался gmail просто как почтой, теперь мне навязывают что это SaaS и поэтому это еще лучше. Как пользователю - мне все-равно как оно устроено. Но вернемся ближе к теме поста и посмотрим какие облака вообще бывают. Наиболее распространенные типы облаков (clouds) это (точные определения можно найти на Википедии, я говорю так, как выглядит это для меня):...


UA Pycon. Киев, 22-23 октября

Published at September 27, 2011 ·  1 min read

Очередное мероприятие под названием PyCon будет в Киеве уже менее чем через месяц. Мой очень короткий отчет о том, что было в прошлом году находится тут: http://blog.e0ne.info/post/UaPycon-how-it-was.aspx. В этом году должно быть еще больше и лучше. В этом году мы планируется провести двухдневную конференцию в два потока — включая доклады, мастер-классы, панельные дискуссии и lighting talks. Кроме того, будет проведена «recruiting session» — у желающих будет возможность больше узнать о украинских компаниях, которые разрабатывают на питоне, об их проектах и побеседовать с их представителями....


Django и jQuery Template

Published at September 21, 2011 ·  1 min read

По отдельность Django и плагин jQuery Template у меня работали хорошо. А вот вместе возникли небольшие проблемы. Вот только не знаю: это все из-за моей невнимательности или данная фича/бага плагина тоже сыграла свою роль. Вначале просто data binding работал отлично и никаких проблем не предиделось. Но стоило только появиться необходимости использовать тег {{if}} из jQuery Template, встретились первые неожиданности. Неожиданность номер раз: Не совсем, конечно, неожиданность, а, скорее, первая меленькая проблемка....



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

Published at August 31, 2011 ·  1 min read

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


jQuery Ajax Table - небольшой плагин для jQuery

Published at August 30, 2011 ·  1 min read

То, о чём писал в твиттере, но не мог написать в блоге раньше. Была небольшая и, на первый взгляд, достаточно простая задача - показать на странице таблицу, с возможностью сортировки и автообновления. Ну ещё и поиск по ней. После некоторого времени, потраченного на поиск и попытки исправления существующих решений стало понятно, что написать с нуля будет быстрее и дешевле (тут имеется в виду также дальнейшая поддержка всего этого). Готовые реализации javasctipt-библиотек и плагинов к jQuery были или слишком уж навороченный для данной задачи или, мягко говоря, очень плохо справлялись с обновлением таблицы и последующей сортировкой....


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

Published at August 17, 2011 ·  2 min read

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


Agile и документация в проектах

Published at August 15, 2011 ·  2 min read

На последнем IT Talk в Харькове один из докладчиков поднял интересную тему. Он сказал что документация в проектах, которые разрабатываются по методологии Agile всё-таки нужна. Тема интересная и достойна отдельного неблоьшого холливара. Ведь все вокруг говорят, что один из достоинств Agile - это отсутствие документации на проекте. Но так ли это на самом деле? По моему мнению, врядли существует хоть один проект сложнее чем “hello world”, в котором полностью отсутствует документация....


Стартапы. Взгляд со стороны разработчика

Published at July 1, 2011 ·  4 min read

О стартапах пока не написал только ленивый. Говорят о них много, громко, красиво. Если раньше говорили только об успешных, то сейчас, кроме success stories все чаще слышно и об обратной стороны медали - провалах. Как маленьких, так и настоящих epic fail’ах. Если верить википедии, то стартап - это: Стартап или стартап-компания (от** англ. start-up — запускать) — компания с короткой историей операционной деятельности. Как правило, такие компании созданы недавно, находятся в стадии развития или исследования перспективных рынков....


JavaScript и константы

Published at June 9, 2011 ·  3 min read

Все знают, что JavaScript - динамический язык, что несет за собой некоторые особенности, например, отсутствие констант. Правильнее было бы сказать, что отсутствие констант - это проблема не самого JavaScript, а браузеров. Согласно спецификации ECMAScript 5th Edition, ECMA Script (для простоты понимания и удобства буду использовать термин JavaScript) у объекта Object должен быть метод freeze, который принимает объект и создает на его основе новый неизменяемый (inmutable) объект, у которого все свойства становятся read only и пропадает возможность удалить и/или изменять свойства объекта....


Модели в Django - простые вещи делаются просто

Published at June 7, 2011 ·  1 min read

Иногда я просто поражаюсь, как некоторые простые вещи приходится делать сложно. Опыт работы с C# в целом и ASP.NET в частности нередко мешают при использовании связки Python + Django. Все-таки скриптовый язык - отличается от строготипизированного не только синтаксисом. Тут нужно мыслить по-другому. Возьму для наглядности такой пример: есть какая-то абстрактная модель, которая хранит в себе данные о первых трех местах какого-либо соревнования и нужно быстро сделать минимальный интерфейс для ввода и отображения данных....


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 еще не закончили :(....


[Audio] Субъективные мысли вслух о JavaScript

Published at May 8, 2011 ·  1 min read

Выступать на публике с докладами и говорить в микрофон - совсем не то, что обсуждать что-то в курилке или за чашкой чая. Без подготовки сделать это, как показала практика, значительно сложнее. Я решил попрактиковаться в создании аудио-версии своего блога. Первый блин, как всегда, комом, но буду стараться и практиковаться дальне. Из первых впечатлений: Субъективные мысли вслух о JavaScript: Недостатки JavaScript (куда же без них?) Немного слов о RIA Попытки избавиться от JavaScript  Разработка под Android и iPhone JavaScript - самый низкоуровневый язык программирования для веб ...


ASP.NET и несколько форм на одной странице

Published at May 5, 2011 ·  3 min read

Рассказ о “странном” баге и о том, как влияет верстка работу всего приложения. При работе с ASP.NET Webforms мы постоянно сталкиваемся с формами. По умолчанию, это одна серверная форма , расположенная сразу же за тегом . Но это, можно сказать, классический пример - такую заготовку делает нам Visual Studio при создании другого проекта. На практике же всё может сильно отличаться.  Следует отметить, что на странице вы не можете создать более одной серверной формы (с атрибутом** runat=”server”**)....


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” (детали уточняются). Вторым докладчиком буду я....


Логирование ошибок в ASP.NET с помощью elmah

Published at February 25, 2011 ·  2 min read

Чем дольше пользуюсь NuGet, тем больше интересных вещей с его нахожу. Одной из таких библиотек является elmah. Простота установки, особенно с использованием NuGet, и широкие возможности настройки подойдут к практически любому проекту. Я сам для этого раньше предпочитал использовать Logging модуль из Microsoft Enterprice Library, но сейчас понял что есть более гибкие и современные решения. Elmah создан специально для того, чтобы логировать ошибки в ASP.NET приложениях. Среди его функций есть такие:...


[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”....


Интересная особенность конструкции foreach в языке C#

Published at February 9, 2011 ·  2 min read

При написании кода на языке C# достаточно часто приходится использовать конструкцию foreach. Ведь так на много удобнее проходить по коллекциям, по сравнению с использованием цикла for. Безусловно, у каждого метода есть свои плюсы и минусы и выбор всегда зависит от конкретной задачи и ситуации. Но на днях меня удивила одни интересная особенность конструкции foreach, а именно то, как это работает. Рассмотрим простой пример: У нас есть некая коллекция элементов и с помощью **foreach **мы выводим на консоль имена всех элементов....


Кэширование контента в процессе разработки средствами IIS

Published at January 31, 2011 ·  3 min read

Наверняка любой разработчик, который пишет для web сталкивался с проблемой кэширования контента. При этом проблема может делится на две части: кэширование динамического контента и кэширование статического контента. Эти проблемы связанные с оптимизацией времени загрузки сайта. Я же подойду к этой проблеме с другой стороны: проблемы с кэшированием при разработке. Ведь все мы сталкивались с тем, что при изменении всего-лишь одной строке в javascript или изменении класса в CSS приходится в очередной раз очищать кэш браузера....


[UDP] [Опрос] Несколько вопросов о тематике блога и RSS ленте

Published at January 28, 2011 ·  1 min read

[Update] Теперь пункт “Ссылка на сайт(блог)” в анкете является необязательным. [/Update] Всем привет. Особый привет моим постоянным читателям и тем, кто активно комментирует. Так уж сложилось, что последние 4 года я занимаюсь разработкой веб-приложений на платформе .NET о чем пишу в своём блоге. Последний год начал интересоваться Python’ом, более активно им интересуюсь последние полгода. Из-за этого начали появляться посты о Python и связанными с ним вещами. Догадываюсь, что некоторым может быть это не интересно, а мне создавать отдельный блог для этого не хочу, но и терять ....


jQuery из исходников

Published at January 27, 2011 ·  3 min read

jQuery - достаточно мощный и удобный javascript framework. Последняя версия 1.4.4 имеет размер 179KB для разработчиков и всего-лишь 26KB для использования в production. 26 килобайт кода не много, но в таком сжатом формате разобраться практически не возможно даже с помощью дебаггера. В неупакованный версии разобраться проще, в дебаггере всё выглядит хорошо, но всё-равно все тонкости работы и устройства jQuery проходят мимо нас. В 7180-ти строках javascript-кода даже с помощью средств IDE и не менее мощной комбинации Ctrl+F найти нужный кусок кода не так уж и просто....


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


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)