Этот топик повествует об использовании Radix Tree на практическом примере. Radix Tree или дерево остатков — это структура данных, формируемая по принципу хранение значений в листовом узле. Промежуточные узлы представляют собой элемент конечного значения. Это может быть бит для чисел, символ для строк или цифра для номера, как в примере ниже. Приведенный алгоритм сжатия с использованием Radix Tree используется в реальной embeded системе, для хранения параметров телефонного файрвола.
Читать полностью »
Архив за 31 марта 2012 - 3
Структура Radix Tree для сжатия данных
2012-03-31 в 15:45, admin, рубрики: c++, radix tree, Алгоритмы, исходники, сжатие данных, структуры данных, метки: radix tree, Алгоритмы, исходники, сжатие данных, структуры данныхMySQLi раскладываем все по полочкам
2012-03-31 в 14:44, admin, рубрики: mysqli, php, метки: mysqli, PHP
Для кого это статья? Первоочередной целью написания статьи было именно «разложить все по полочкам» для тех, кто уже работал с mysqli, но не вникал глубоко, а быстренько написал свои обертки и забыл про оригинальный синтаксис. Я постарался разъяснить нюансы, с которым столкнулся сам, при переносе данных из большой и очень старой БД, спроектированной человеком, не знающим про нормализации, в новую, с сильно изменившейся структурой.
Можно ли читать эту статью людям, которые все еще используют старое расширение mysql и только думающие об перехода на PDO или MySqli? Думаю даже нужно.
Интеграция JIRA 4.1 с Active Directory
2012-03-31 в 14:22, admin, рубрики: active directory, jira, spnego, tomcat, windows, системное администрирование, метки: active directory, jira, spnego, tomcatВстала задача интеграции JIRA 4.1 с Active Directory со следующими условиями:
- Синхронизация пользователей и групп (версия 4.1 не поддерживает синхронизацию)
- Прозрачная аутентификация (в качестве логинов в JIRA используются почтовые адреса)
- Заполнение свойства пользователей (номер телефона)
- Пользователи, которых нет в AD, должны быть помечены
И вот как я её решил:
Читать полностью »
Асинхронный конечный автомат: идеология и технология
2012-03-31 в 14:05, admin, рубрики: dos, FSM, Алгоритмы, асинхронная модель, драйвера, конечные автоматы, очередь сообщений, Проектирование и рефакторинг, сетевые протоколы, метки: dos, FSM, асинхронная модель, драйвера, конечные автоматы, очередь сообщений, сетевые протоколыВступление
Хорошо, когда твои подчиненные никогда не болеют, не умирают, всегда присутствуют на работе и выполняют твои распоряжения без предварительных приготовлений: «Вызвали — встань». Таковы, например, веб-сервисы, соблюдающие модель REST (которая, если отбросить специальную HTTP-терминологию, сводится к тому, что интерфейс сервиса фактически является интерфейсом контейнера данных).
В реальной жизни у подчиненных бывают насморк и декретный отпуск, у сетевых соединений — таймауты, у авиарейсов — погода, а у автомобильных двигателей в мороз — необходимое время холостого прогрева.
Асинхронный конечный автомат — это удобная абстракция верхнего уровня для управления сущностями с богатым и не всегда предсказуемым внутренним миром. Такой сущностью может быть аппаратное устройство, сессия сетевого протокола или просто параллельно запущенный процесс, код которого вы не контролируете.
Описываемая ниже архитектура асинхронного конечного автомата решает ряд стандартных проблем, возникающих при «лобовой» интеграции подсистем с учетом их внутреннего состояния. Самая заметная из таких проблем — это недостаточная разнесенность (я бы даже сказал — недостаточная «гальваническая развязка») сущностей сигнала и перехода между состояниями, из-за чего автомат становится неустойчивым к DoS-атакам. Есть и другие, менее очевидные — например, «недостаточно атомарная» замена узла подсистемы или используемого ей ресурса.
Анатомия (объектная декомпозиция)
Модель конечного автомата включает следующие базовые сущности:
- Состояние — это режим функционирования управляемой системы, отличный от других по предоставляемым возможностям. Таким образом, снапшоты кешей и буферов, варианты циклов «от забора и до обеда» и другие акциденции управляемой системы в понятие «состояния» не входят. В норме состояний должны быть считанные единицы; если счет пошел на второй десяток — скорее всего, управляемую систему следует раздробить или иерархизировать.
- Условие — это логическое значение (true или false) на одном из «входов» системы. Суперпозиция состояний всех входов автомата однозначно определяет целевое состояние автомата. Таким образом, любой входной сигнал, значимый для состояния автомата, в конечном счете сводится к установке значения одного или нескольких условий.
- Реакция — это отклик автомата на отличие текущего состояния от целевого. Принципиально различных видов реакции мы насчитали два с половиной: прямой переход между состояниями, маршрут и стоп-маршрут («кирпич»). Прямой переход может быть и пустой операцией (NOP) — например, в случае, если изменение входов вызвано уведомлением о завершении асинхронной операции.
Пусть утро станет добрым или Sleep as Android
2012-03-31 в 14:04, admin, рубрики: android, gtd, будильник, будильник для Android, Софт, фазы сна, метки: будильник, будильник для Android, фазы сна Утро добрым не бывает, но аудитория хабрахабра знает, что сон можно обхитрить, и проснуться полным сил для нового дня. Выделю три группы высыпающихся людей, кто-то просто много спит, другие правильно готовятся ко сну, третьи пользуются хитрыми будильниками. С недавних пор, я переехал из разряда не высыпающихся в группы пользователей будильников с фазами сна. На переезд было затрачено минимум усилий, потребовалась лишь бесплатная программа для моего android смартфона.
Читать полностью »
Три с половиной программы для резервного копирования
2012-03-31 в 13:34, admin, рубрики: бэкап, Софт, метки: бэкап В этом году у жителей интернета и прочих владельцев ПК появился новый праздник – Всемирный День Бэкапа.
Основал этот праздник один из пользователей сайта reddit. Его идею быстро подхватили пользователи и некоторые крупные компании, в том числе WD. Официальный сайт праздника – worldbackupday.com, на нем рассказывается о всевозможных способах резервного копирования информации.
Если отбросить в сторону совсем олдскульные методы типа копирования на CD и DVD-диски, то самыми распространенными являются бэкап вручную, бэкап с помощью ПО, идущего в комплекте с внешними накопителями, и специальное автономное ПО для резервного копирования. В моих закромах нашлось три внешних жестких диска от разных производителей, и именно их софт для бэкапа я и решил сравнить.
Читать полностью »
Обзор навигационной программы Прогород для Android
2012-03-31 в 13:31, admin, рубрики: android, gps, навигация, пробки, Прогород, метки: android, навигация, пробки, Прогород Я являюсь довольно активным пользователем устройств на базе Android, и инфоповодом для этого обзора послужила новость о выходе навигатора на базе этой операционной системы, Prestigio GeoVision GV5500AND. Я решил подыскать более функциональную, нежели предустановленный сервис от Google, навигационную программу, которой было бы удобно пользоваться и на планшете, и на телефоне.
Собственно, речь сегодня пойдёт не о нём (не о Prestigio GeoVision GV5500AND), а о навигационной программе «Прогород», которая имеет версии для большинства популярных мобильных ОС – она устанавливается на спутниковые навигаторы под управлением Windows CE, имеет версии под iOS и Bada, ну и под Android, само собой. (Есть еще и версия для Windows Mobile, однако новые устройства на этой ОС давно не выпускаются.)
Читать полностью »
Чего мне хотелось бы от будущих версий руби, и как я справляюсь сейчас
2012-03-31 в 12:40, admin, рубрики: ruby, ruby 2.0, workaround, Песочница, Программирование, метки: ruby, ruby 2.0, workaround Добрый день.
Я около года работаю с Ruby и хотел бы написать о некоторых вещах, которых лично мне там часто не хватает, и которые я хотел бы видеть встроенными в язык. Пожалуй лишь пара из этих пунктов являются действительно серьезными недоработками, с остальными можно легко справиться подручными средствами.
Вроде бы недоработки и мелочь, но они ощутимо осложняют работу — приходится писать собственные библиотеки вспомогательных методов, которые и в гем не выделишь — уж больно маленькие, и без них некомфортно. А порой открываешь чужой код — и видишь там точно такие же вспомогательные функции как у тебя. Это как мне думается знак, что стандартная библиотека языка недоработана. Что же, будем надеяться, кто-нибудь из разработчиков прочтет текст и закоммитит патч. ;-)
Итак, начнем по порядку:
- Перегрузка метода разными списками аргументов, как в C++
- Отобразить хэш и получить из него другой хэш, а не массив
- Преобразовать экземпляр класса в экземпляр его же собственного подкласса
- Разные рюшечки
Мониторим Memcache с помощью Zabbix
2012-03-31 в 12:34, admin, рубрики: linux, memcache, zabbix, системное администрирование, метки: memcache, zabbixВсем привет.
По просьбам желающих (Мониторим Nginx c помощью ZTC и Zabbix) сделал мини статью по подключению memcache к Zabbix. Здесь все гораздо проще, нежели с ZTC шаблонами.
Для начала проверим, что memcache у нас жив и правильно отдает нужные нам значения:
Читать полностью »
Отчет о Первой Хабравстрече в Алматы
2012-03-31 в 12:08, admin, рубрики: android, iOS, WP7, алматы, аншлаг, мобильные приложения, Презентации, хабравстреча, метки: android, iOS, wp7, алматы, аншлаг, мобильные приложения, хабравстречаВсем привет, наконец то добрался до своего ноута и можно написать отчет по нашему мероприятию. Хабравстреча в Алматы проходила впервые и собрала больше 50 человек!!!
Всем кому интересно посмотреть как это проходило просим под кат. (ОСТОРОЖНО ТРАФИК)
Читать полностью »