About | Blog | xapy

Gentoo tip: Ускорение numpy в 25 раз

Наткнулся на статью Is your NumPy using the right ATLAS?. Далее — творческий перевод с адаптацией к Gentoo Linux.

 continue reading

FluidDB: вступление

Одна из важнейших задач, в условиях сегодняшнего количества и структурированности данных — возможность рационально хранить и обрабатывать их. Для этого человечество последние пять десятилетий усердно работает, придумывая разнообразные СУБД, отличающиеся способом хранения данных, организации доступа и обработки, интерфейсом взаимодействия и вообще, часто — специализацией под конкретные тип, структуру данных. Начиная с первых навигационных СУБД, соответствующих хранению данных на ленточных носителях, которые позже развились в табличные и реляционные структуры, и не заканчивая набирающими обороты сегодня т.н. key-value хранилищами, на протяжении всей эволюции хранилищ можно проследить некоторые направления её развития: сначала структуры и алгоритмы были сильно скованы возможностями железа, и разработчикам СУБД нередко приходилось идти на компромиссы между скоростью работы и гибкостью использования продукта. С ростом вычислительной мощи компьютерных систем, с усовершенствованием устройств хранения данных мы получили возможность неимоверно усложнять реализацию СУБД, например внедряя триггеры, хранимые процедуры, используя объектно-ориентированные реляционные СУБД, что, со временем, привело нас к ситуации, которую мы имеем. В чём-то она схожа с трендами в языках программирования. Как выразился Tim Berners-Lee о принципе наименьших возможностей (Principle of Least Power):

Computer Science in the 1960s to 80s spent a lot of effort making languages which were as powerful as possible. Nowadays we have to appreciate the reasons for picking not the most powerful solution but the least powerful. The reason for this is that the less powerful the language, the more you can do with the data stored in that language. If you write it in a simple declarative from, anyone can write a program to analyze it in many ways. … If, for example, a web page with weather data has RDF describing that data, a user can retrieve it as a table, perhaps average it, plot it, deduce things from it in combination with other information. At the other end of the scale is the weather information portrayed by the cunning Java applet. While this might allow a very cool user interface, it cannot be analyzed at all. … This the only way to find out what a Java applet means is to set it running in front of a person.

То есть на сегодняшний день для абсолютного большинства решений как в ЯП, так и в системах хранения данных, гибкость достигается за счёт простоты. Тут можно вспомнить о ставших особо популярными в последние годы скриптовых языках, распространении json, как формата передачи данных, популяризации key-value store.

Сегодня я хочу рассказать об одном инновационном подходе к хранению данных, который раннее нигде не встречал — FluidDB, разработки отличных ребят из Fluidinfo.

 continue reading

ICFPC-09 отчёт

Я давно ничего не писал в блог, но сейчас появился отличный повод! Речь идёт о недавно завершившемся мероприятии под названием ICFPC (ICFP contest, или соревнование приуроченное ко всемирной конференции ICFP).

 continue reading

Использование коллективного интеллекта для построения рекомендаций

Докладывал сегодня на XI Международной научно-технической конференции САИТ-2009 по сабжевой теме. Понравилось. Впервые. Такое себе экстрим-развлечение :)

Слайды от доклада остались тут (можно смотреть), или тут архивом (можно качать).

Couchdb — первые шаги

Последний год то тут, то там появляются посты/новости о couchdb — одной из многих реализаций нереляционных, или документо-ориентированных СУБД. Основной идеей, и главным отличием от традиционных, реляционных, систем является отсутствие строго определённой структуры данных, хранимых в базе. В этом посте попробую рассмотреть идею нереляционных БД в общем, и пример использования couchdb совместно с питоном для хранения некоторых данных.

 continue reading

ropevim: vim, на шаг ближе к IDE

У всех пользователей vim, пишущих python-код в этом редакторе, рано или поздно возникает потребность в функциональности, знакомой по “большим” IDE. Многие в поиске решений останавливаются на встроенных возможностях вроде дополнения ключевых слов, встретившихся в открытом файле, встроенный go-to-defintion и другие, применение которых ограничивается их универсальностью. В этом посте рассмотрим инструмент, заточенный под работу с python-кодом, предназначенный для рефакторинга кода, и, одновременно, предоставляющий возможности более “умного” автодополнения, перехода в определению идентификатора и др.

Далее идёт собственная интерпретация довольно лаконичной документации, выполненная в виде небольшого howto.

 continue reading

Приручение py-rrdtool

Как говорится в одной древней мудрости: можно вечно наблюдать три вещи: как горит огонь, как течёт вода и как рисует графики rrdtool. Этот пост как раз о последнем. И так, что же такое rrdtool? rddtool — замечательная утилита, которая позволяет управлять данными, хранимыми в формать rrd (round-robin database). Данный формат примечателен тем, что изначально предназначен для хранения периодичной информации, причём так, что размер самой БД получается фиксированным (довольно небольшим) независимо от количества данных. При этом сохраняется возможность получать отчёты за продолжительные отрезки времени с произвольной точностью. Наибольшее распространение данная система нашла в системах мониторинга, где, как говорится, лучше один раз увидеть картинку, чем 7 раз прочитать логи. В конце статьи Вы сможете получить нечто, похожее на

пример

 continue reading

xapy — ещё один chat-бот

Когда-то, в начале своего изучения языка Python, для большей наглядности пытался реалиpовать полученные навыки, портируя простейшего irc-бота с php. Со временем код развивался и вырос в так же небольшого, но уже мультипротокольного бота, с системой плагинов, которого тут и представляю. Основными идеями являются: простота использования/расширения, мультипротокольность, абстракция плагинов: пиши однажды, используй везде. На данный момент успешно работает в IRC, XMPP (Jabber) сетях, доступно пару десятков функциональных плагинов, благодаря которым можно внести в работу всю мощь и гибкость языка Python, на котором и написано ядро приложения. На этом первое знакомство завершу, остаётся линк на страничку: xapy + hg репозиторий

Первые впечатления о E-ten Glofiish X800

Пока я нахожусь в ожидании usb-кабеля для своего ipaq-a (для продолжения исследования Angstrom linux), решил обновить себе моб. телефон. Так как это происходит довольно редко, решил сразу брать железку, которой бы хватило на ближайшие несколько лет, потому выбор пал на сабжевый коммуникатор, обладающий всеми распространёнными функциями, которые сегодня можно найти в гаджетах такого плана: кроме, уже банальных, bluetooth, wifi, разработчики также одарили его gps-приёмником, gsm-модулем третьего поколения (тот самый распиаренный 3G) и другими вкусностями, вроде камеры, 640х480 экрана и пр. Далее — о первых шагах работы с новой машинкой + скриншот + пару фото.

 continue reading

Angstrom Linux + iPAQ h5450

Очередная попытка подружить мой кпк HP iPAQ 5450 с ОС Linux. Последняя попытка установки дстрибутива Familiar Linux хоть и увенчалась успехом, была отменена в виду его сырости по отношению к моей железке. На сей раз, встретив в сети The Ångström дистр решил попробовать взгромоздить его.

 continue reading