Archive 2011

OpenStack + RHEL + iptables = buffer overflow detected

Published at December 30, 2011 ·  4 min read

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


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

Published at December 27, 2011 ·  2 min read

Как правило, адаптация сайтов под мобильные устройства заключается в выполнении одного или нескольких пунктов из следующего списка: - подключения специальной версии CSS; - подключения нужных JavaScript’ов; - создание мобильных шаблонов (templates) с версткой (html). Сразу оговорюсь, что вопрос мобильной верстки сейчас затрагивать не буду. Исходя из этого списка, шаблоны, которые предназначенные для мобильных устройст будут выглядеть, примерно, так: {% if request.mobile %} Mobile {% else %} Not mobile...


Объекты в 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 - False a1 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

Качественного кода нельзя добиться в случае: - нет code review; - code review проводит один и только один человек; - нету guidelines; - проверка кода не происходит на Continius Integration сервере; - хотя бы один из членов команды не заинтересован в качественном коде; - время на уменьшение технического долга не закладывается при планировании следующей итерации. ...


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


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

Published at October 27, 2011 ·  3 min read

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


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

Published at October 26, 2011 ·  4 min read

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


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

Published at October 25, 2011 ·  2 min read

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


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

Published at October 13, 2011 ·  3 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, встретились первые неожиданности. Неожиданность номер раз: Не совсем, конечно, неожиданность, а, скорее, первая меленькая проблемка....


День программиста: больше, чаще, веселее!

Published at September 13, 2011 ·  1 min read

День программиста, 256-й день в году на этот раз выпал на 13-е сентября. Хотя, если верить википедии, день программиста можно также праздновать и 10 декабря и 22 апреля, а так же в 404-й день в году, т.е. 4-е апреля (http://ru.wikipedia.org/wiki/День_программиста). Хотя, 404-й - это все-таки больше праздник веб-разработчиков, дизайнером верстальщиков и всех причастных к сайтостроению. Странно еще что не отмечают 200-й день - должен быть какой-то позитивный праздник.  P.S. Всех с прошедшим в пятницу днем QA....


Когда нужно использовать 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 ·  2 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

Выступать на публике с докладами и говорить в микрофон - совсем не то, что обсуждать что-то в курилке или за чашкой чая. Без подготовки сделать это, как показала практика, значительно сложнее. Я решил попрактиковаться в создании аудио-версии своего блога. Первый блин, как всегда, комом, но буду стараться и практиковаться дальне. Из первых впечатлений: - аааа! это мой голос так звучит? - блин, как я могу так разговаривать? - USB гарнитура Logitech H360 под Mac OS работает отвратительно....


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


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


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

Published at January 3, 2011 ·  3 min read

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




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)