Архив за 31 марта 2012 - 3

Структура Radix Tree для сжатия данныхЭтот топик повествует об использовании Radix Tree на практическом примере. Radix Tree или дерево остатков — это структура данных, формируемая по принципу хранение значений в листовом узле. Промежуточные узлы представляют собой элемент конечного значения. Это может быть бит для чисел, символ для строк или цифра для номера, как в примере ниже. Приведенный алгоритм сжатия с использованием Radix Tree используется в реальной embeded системе, для хранения параметров телефонного файрвола.
Читать полностью »

MySQLi раскладываем все по полочкам
Для кого это статья? Первоочередной целью написания статьи было именно «разложить все по полочкам» для тех, кто уже работал с mysqli, но не вникал глубоко, а быстренько написал свои обертки и забыл про оригинальный синтаксис. Я постарался разъяснить нюансы, с которым столкнулся сам, при переносе данных из большой и очень старой БД, спроектированной человеком, не знающим про нормализации, в новую, с сильно изменившейся структурой.

Можно ли читать эту статью людям, которые все еще используют старое расширение mysql и только думающие об перехода на PDO или MySqli? Думаю даже нужно.

Читать полностью »

Встала задача интеграции JIRA 4.1 с Active Directory со следующими условиями:

  1. Синхронизация пользователей и групп (версия 4.1 не поддерживает синхронизацию)
  2. Прозрачная аутентификация (в качестве логинов в JIRA используются почтовые адреса)
  3. Заполнение свойства пользователей (номер телефона)
  4. Пользователи, которых нет в AD, должны быть помечены

И вот как я её решил:
Читать полностью »

Вступление

Хорошо, когда твои подчиненные никогда не болеют, не умирают, всегда присутствуют на работе и выполняют твои распоряжения без предварительных приготовлений: «Вызвали — встань». Таковы, например, веб-сервисы, соблюдающие модель REST (которая, если отбросить специальную HTTP-терминологию, сводится к тому, что интерфейс сервиса фактически является интерфейсом контейнера данных).

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

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

Описываемая ниже архитектура асинхронного конечного автомата решает ряд стандартных проблем, возникающих при «лобовой» интеграции подсистем с учетом их внутреннего состояния. Самая заметная из таких проблем — это недостаточная разнесенность (я бы даже сказал — недостаточная «гальваническая развязка») сущностей сигнала и перехода между состояниями, из-за чего автомат становится неустойчивым к DoS-атакам. Есть и другие, менее очевидные — например, «недостаточно атомарная» замена узла подсистемы или используемого ей ресурса.

Анатомия (объектная декомпозиция)

Модель конечного автомата включает следующие базовые сущности:

  1. Состояние — это режим функционирования управляемой системы, отличный от других по предоставляемым возможностям. Таким образом, снапшоты кешей и буферов, варианты циклов «от забора и до обеда» и другие акциденции управляемой системы в понятие «состояния» не входят. В норме состояний должны быть считанные единицы; если счет пошел на второй десяток — скорее всего, управляемую систему следует раздробить или иерархизировать.
  2. Условие — это логическое значение (true или false) на одном из «входов» системы. Суперпозиция состояний всех входов автомата однозначно определяет целевое состояние автомата. Таким образом, любой входной сигнал, значимый для состояния автомата, в конечном счете сводится к установке значения одного или нескольких условий.
  3. Реакция — это отклик автомата на отличие текущего состояния от целевого. Принципиально различных видов реакции мы насчитали два с половиной: прямой переход между состояниями, маршрут и стоп-маршрут («кирпич»). Прямой переход может быть и пустой операцией (NOP) — например, в случае, если изменение входов вызвано уведомлением о завершении асинхронной операции.

Читать полностью »

Утро добрым не бывает, но аудитория хабрахабра знает, что сон можно обхитрить, и проснуться полным сил для нового дня. Выделю три группы высыпающихся людей, кто-то просто много спит, другие правильно готовятся ко сну, третьи пользуются хитрыми будильниками. С недавних пор, я переехал из разряда не высыпающихся в группы пользователей будильников с фазами сна. На переезд было затрачено минимум усилий, потребовалась лишь бесплатная программа для моего android смартфона.
Пусть утро станет добрым или Sleep as Android
Читать полностью »

В этом году у жителей интернета и прочих владельцев ПК появился новый праздник – Всемирный День Бэкапа.
Основал этот праздник один из пользователей сайта reddit. Его идею быстро подхватили пользователи и некоторые крупные компании, в том числе WD. Официальный сайт праздника – worldbackupday.com, на нем рассказывается о всевозможных способах резервного копирования информации.
Если отбросить в сторону совсем олдскульные методы типа копирования на CD и DVD-диски, то самыми распространенными являются бэкап вручную, бэкап с помощью ПО, идущего в комплекте с внешними накопителями, и специальное автономное ПО для резервного копирования. В моих закромах нашлось три внешних жестких диска от разных производителей, и именно их софт для бэкапа я и решил сравнить.
Читать полностью »

Я являюсь довольно активным пользователем устройств на базе Android, и инфоповодом для этого обзора послужила новость о выходе навигатора на базе этой операционной системы, Prestigio GeoVision GV5500AND. Я решил подыскать более функциональную, нежели предустановленный сервис от Google, навигационную программу, которой было бы удобно пользоваться и на планшете, и на телефоне.
image
Собственно, речь сегодня пойдёт не о нём (не о Prestigio GeoVision GV5500AND), а о навигационной программе «Прогород», которая имеет версии для большинства популярных мобильных ОС – она устанавливается на спутниковые навигаторы под управлением Windows CE, имеет версии под iOS и Bada, ну и под Android, само собой. (Есть еще и версия для Windows Mobile, однако новые устройства на этой ОС давно не выпускаются.)
Читать полностью »

Добрый день.
Я около года работаю с Ruby и хотел бы написать о некоторых вещах, которых лично мне там часто не хватает, и которые я хотел бы видеть встроенными в язык. Пожалуй лишь пара из этих пунктов являются действительно серьезными недоработками, с остальными можно легко справиться подручными средствами.
Вроде бы недоработки и мелочь, но они ощутимо осложняют работу — приходится писать собственные библиотеки вспомогательных методов, которые и в гем не выделишь — уж больно маленькие, и без них некомфортно. А порой открываешь чужой код — и видишь там точно такие же вспомогательные функции как у тебя. Это как мне думается знак, что стандартная библиотека языка недоработана. Что же, будем надеяться, кто-нибудь из разработчиков прочтет текст и закоммитит патч. ;-)
Итак, начнем по порядку:

  • Перегрузка метода разными списками аргументов, как в C++
  • Отобразить хэш и получить из него другой хэш, а не массив
  • Преобразовать экземпляр класса в экземпляр его же собственного подкласса
  • Разные рюшечки

Читать полностью »

Всем привет.

По просьбам желающих (Мониторим Nginx c помощью ZTC и Zabbix) сделал мини статью по подключению memcache к Zabbix. Здесь все гораздо проще, нежели с ZTC шаблонами.

Для начала проверим, что memcache у нас жив и правильно отдает нужные нам значения:
Читать полностью »

Всем привет, наконец то добрался до своего ноута и можно написать отчет по нашему мероприятию. Хабравстреча в Алматы проходила впервые и собрала больше 50 человек!!!

Отчет о Первой Хабравстрече в Алматы

Всем кому интересно посмотреть как это проходило просим под кат. (ОСТОРОЖНО ТРАФИК)
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js