понедельник, 7 мая 2012 г.

Разработка и ремонт в квартире

Разработку можно сравнить с ремонтом в квартире. Изначально планируется одно. Когда работа подходит к завершению, понимаешь, что еще в нескольких местах стоит переделать, а потом и еще в нескольких... А потом понимаешь, что если бы ты начал делать ремонт сейчас, то делал бы все совершенно по другому. Только вопрос в том, что не каждый может набраться смелости и переделать ремонт с нуля. А зачастую, получается так, что уже нет ни времени, ни возможностей.

пятница, 4 мая 2012 г.

Книга Business of Software

Благодаря майским праздникам удалось найти немного времени и прочесть книгу Business of Software. Автор книги - разработчик, основатель SourceGear, блоггер. Книга написана на основании наиболее популярных эссе из блога. Читается легко, интерестно, живо и с юмором. Расскрываются и обсуждаются вопросы, которые встречает каждый разработчик, желающий начать свое дело: выбор идеи, реализация, финансы, найм новых сотрудников, маркетинг, построение работы внутри команды. В книге много примеров. Практически к каждой обсуждаемой теме приводятся параллели из других областей.

четверг, 3 мая 2012 г.

Установка Ubuntu 12.04: жесткий диск + сетевая консоль

Прошел почти год с публикации поста про установку Ubuntu с сетевой консоли. Несколько раз инсталляционные образы выручали, когда нужно было установить систему без монитора и клавиатуры. Но несколько дней назад понадобилось установить Ubuntu на компьютер, который планировалось использовать как небольшой сервер. Монитора и клавиатуры под рукой не оказалось, да и загрузка с USB Drive в BIOS выключена. Безвыходных ситуаций не бывает, поэтому и решение нашлось - установка Ubuntu 12.04 с жесткого диска.

четверг, 26 апреля 2012 г.

Небольшой рубеж

Это конечно не какое-то выдающееся событие, но все равно приятно

среда, 18 апреля 2012 г.

Изменения в rssfetch

Опубликовал новую версию rssfetch http://code.google.com/p/sources-ownport/source/browse/rssfetch - загрузчик RSS лент с использованием Universal Feed Parser и KVLite2, используемый для периодической проверки наличия новых постов для выбранных RSS лент и хранение их в базе данных для последующей обработки.

суббота, 31 марта 2012 г.

PySimpleFeed: компактное представление структуры RSS новостей

В прошлом посте приводился пример вывода агрегированной структуры rss постов для нескольких десятков тысяч постов. Даже на таком сравнительно небольшом наборе данных становится понятно, насколько может быть разнообразна и избыточна структура RSS/Atom данных. Небольшая библиотека PySimpleFeed позволяет привести структуру данных, полученных с помощью feedparser.feed() к плоскому виду, убрать избыточноть, сократить число необходимых для анализа полей с нескольких сотен до десятков. Пример агрегированной структуры из прошлого поста с использование PySimpleFeed выглядит следующим образом:

четверг, 29 марта 2012 г.

Простое представление словарей со сложной структурой

Словари со сложной внутренней структурой могут содержать различные типы данных от вложенных словарей до списков, содержащих опять же вложенные словари или другие, произвольные типы данных. Примером таких словарей является структура RSS ленты, возвращаемая библиотекой Universal Feed Parser по feedparser.parse(). Определение структуры с множественной вложеностью данных, а тем более сравнение структур между собой может быть достаточно сложной задачей. Для упрощения этих задач можно воспользоваться небольшой функцией, выполняющей преобразование вложенных структур к “плоскому” виду - словарю, содержащему в виде ключа информацию о вложенности данных, а в виде значения - сами данные.

воскресенье, 11 марта 2012 г.

rssfetch, новые возможности

Со времени публикации последнего поста “Загрузчик RSS лент (rssfetch)”, rssfetch обзавелся рядом дополнений и ноововведений:
- изменена структура помощи и работа с командной строкой
- добавлены функции логирования работы с возможностью вывода как на консоль, так и запись в файл
- добавлена возможность запуска как сервиса

пятница, 9 марта 2012 г.

Загрузчик RSS лент (rssfetch)

Данным постом начинается небольшая серия статей по созданию загрузчика RSS лент с использованием Universal Feed Parser и KVLite2. Основная задача: периодическая проверка наличия новых постов для выбранных RSS лент и хранение их в базе данных для последующей обработки.

Для начала работы необходимо создать новую базу данных в MySQL - rssfetch и пользователя, который будет работать с этой базой данных - rssfetch.
mysql> create database rssfetch;
Query OK, 1 row affected (0.03 sec)
mysql> grant all privileges on rssfetch.* to 'rssfetch'@'localhost' identified by '<ваш пароль>';
Query OK, 0 rows affected (0.10 sec)

воскресенье, 4 марта 2012 г.

Расширенный urlfetch

О способах получения данных из интернет уже упоминалось несколько раз. Предыдущие примеры позволяли на базе простых функций, компонент или процессов загружать тестовую информации из интернет-ресурсов. Некоторые из них, позволяли просто загружать данные, другие выполнять загрузку последовательно на основании списка, некоторые параллельно. За время использования предыдущих версий стало понятно, что только отправка HTTP GET и получения данных не всегда является достаточным, а некоторых случаях просто не эффективно. Необходим подход позволяющий более эффективно осуществлять запросы с серверам и обрабатывать полученные данные. Решение пришло неожиданно и как это всегда бывает - лежало перед носом. Universal Feed Parser - это отличный модуль, написанный на python, позволяющий загружать и обрабатывать RSS ленты различных форматов.