На Хабре уже писали о том, как устроен Mail.Ru Агент. На данный момент официальной документации к протоколу в открытом доступе нет, поэтому приходится исследовать устройство опытным путем. В этой статье я рассмотрю отправление форматированных текстовых сообщений и создание и отправление сообщений в конференцию.
Читать полностью »
Рубрика «Программирование» - 798
Подробнее о протоколе Mail.Ru Агент
2015-03-17 в 12:51, admin, рубрики: mail.ru агент, mmp, python, Программирование, метки: mmpПостроение диаграмм и графов в Doxygen
2015-03-17 в 12:18, admin, рубрики: C, C#, c++, doxygen, графы, диаграммы, документация, документация кода, Программирование 
Данная статья продолжает цикл статей о системе документации Doxygen (статья о самой системе, статья об оформлении документации). На этот раз статья посвящена построению различных диаграмм и графов в Doxygen. В ней мы рассмотрим основные их виды, различные способы их настройки и оформления, а также приведём ряд примеров и советов по их использованию.
Читать полностью »
Драйвер устройства и с чем его едят
2015-03-17 в 10:46, admin, рубрики: IT-стандарты, Блог компании DriverPack Solution, Драйвер, определение, Программирование, разработка, создание, схематика, Терминология IT, устройство, метки: драйверЧто такое «драйвер»

Как уважаемый хабрапользователь наверняка знает, «драйвер устройства» — это компьютерная программа управляющая строго определенным типом устройства, подключенным к или входящим в состав любого настольного или переносного компьютера.
Основная задача любого драйвера – это предоставление софтового интерфейса для управления устройством, с помощью которого операционная система и другие компьютерные программы получают доступ к функциям данного устройства, «не зная» как конкретно оно используется и работает.
Обычно драйвер общается с устройством через шину или коммуникационную подсистему, к которой подключено непосредственное устройство. Когда программа вызывает «рутину» (очередность операций) драйвера – он направляет команды на само устройство. Как только устройство выполнило рутину, данные посылаются обратно в драйвер и уже оттуда в ОС.
Читать полностью »
Вычислите окружность круга
2015-03-17 в 10:41, admin, рубрики: c++, Блог компании ABBYY, Компиляторы, Программирование
«Пожалуйста, напишите на C++ функцию, которая получает диаметр круга как float и возвращает длину окружности как float».
Звучит как задание на первой неделе курса по C++. Но это только на первый взгляд. Сложности возникают уже на первых этапах решения задачи. Предлагаю рассмотреть несколько подходов.
Студент: Как вам такой вариант?
#include <math.h>
float CalcCircumference1(float d)
{
return d * M_PI;
}
Преподаватель: Да, этот код может нормально откомпилироваться. А может и нет. Читать полностью »
Будущее C: ООП
2015-03-17 в 7:43, admin, рубрики: C, c++, будущее рядом, ооп, Программирование, разрыв шаблона, метки: разрыв шаблонаИнтернет обошла стороной одна интересная новость: стало известно о том, что, вероятно, в следующий стандарт языка программирования C будут добавлены средства ООП, а именно — классы. При этом судить о том, будет ли это реализовано — ещё рано, так как данный документ не был окончательно принят и не добавлялся в черновой вариант следующего стандарта. Предложение реализовать это поступило ещё в далёком 1995 году неким Robert Jervis, но было принято на WG14 только сейчас.
Попробуем поделить шкуру неубитого медведя и посмотрим, чем это грозит и что это нам даст.
Читать полностью »
Модульная архитектура в JavaScript
2015-03-17 в 6:51, admin, рубрики: architecture, jasmine, javascript, oop patterns, ооп, ПрограммированиеПрочитав книгу «Паттерны для масштабируемых JavaScript-приложений», решил реализовать данную структуру на практике.
Подробности описания модульной структуры изложены по вышеуказанной ссылке, но если вы еще не знакомы с этим материалом, то вкратце: масштабируемые JavaScript-приложения строятся на трёх китах, а точнее — на трёх паттернах: Медиатор, Фасад, Модуль.
Основные критерии в реализации:
Читать полностью »
Открытые курсы Android Study Jams теперь и в Москве
2015-03-17 в 6:12, admin, рубрики: android, Google Play, Блог компании Google, Программирование, разработка, Разработка под androidМобильная индустрия растет с невероятной скоростью. Растет и количество заказов на разработку приложений и игр. На рынке остро не хватает молодых, талантливых и амбициозных мобильных разработчиков. В этом году у каждого из вас есть шанс стать одним из них, приняв участие в Study Jams — бесплатных курсах обучения разработке мобильных приложений на платформе Android, которые пройдут в Москве на базе коворкинг-центра «Свободное плавание» с 7 апреля по 14 мая.
Lock-free структуры данных. Concurrent maps: деревья
2015-03-17 в 5:55, admin, рубрики: c++, libcds, lock-free, map, tree, Алгоритмы, параллельное программирование, Программирование
Это последняя, на сегодняшний день, статья из цикла про внутреннее устройство конкурентных ассоциативных контейнеров. В предыдущих статьях рассматривались hash map, был построен алгоритм lock-free ordered list и контейнеры на его основе. За бортом остался один важный тип структур данных — деревья. Пришло время немного рассказать и о них.
Исследования, посвященные алгоритмам конкурентных деревьев, не требующих внешней синхронизации доступа к ним, начались довольно давно — в 70-х годах прошлого века, — и были инициированы развитием СУБД, поэтому касались в основном оптимизации страничных деревьев (B-tree и его модификации).
Развитие lock-free подхода в начале 2000-х не прошло мимо алгоритмов деревьев, но лишь недавно, в 2010-х годах, появилось множество действительно интересных работ по конкурентным деревьям. Алгоритмы деревьев довольно сложны, поэтому исследователям потребовалось время — порядка 10 лет — на их lock-free/non-blocking адаптацию. В данной статье мы рассмотрим самый простой случай — обычное бинарное дерево, даже не самобалансирующееся.
Читать полностью »
Pebble: приложения в фоне на примере «всплывающих» уведомлений
2015-03-16 в 17:45, admin, рубрики: Pebble, pebble watch, tutorial, Программирование, метки: pebble
Для большого количества приложений разработчики отдельно отмечают в особенностях возможность отображения на экране состояние устройства, а точнее — состояние аккумулятора и статус bluetooth-соединения со смартфоном.
Но не всегда значки батарейки и bluetooth органично вписываются в оформление приложения, да и имеет ли смысл занимать пространство информацией, которая требуется пару раз в сутки?
Ниже, как смотреть информацию о заряде и уведомление о потере соединения без дополнительных усилий и не прекращая работы (условно) любимого ватчфейса. А заодно о том, как работают в Pebble фоновые приложения.
Читать полностью »
Устройство и работа портов ввода-вывода микроконтроллеров AVR. Часть 1
2015-03-16 в 14:22, admin, рубрики: микроконтроллеры avr, подключение кнопки к avr, подключение светодиода к avr, Программирование, программирование avr, программирование микроконтроллеров, метки: программированиеРобота портов ввода/вывода
Изучив данный материал, в котором все очень детально и подробно описано с большим количеством примеров, вы сможете легко овладеть и программировать порты ввода/вывода микроконтроллеров AVR.
- Робота портов ввода/вывода
- Подключение светодиода к линии порта ввода/вывода
- Подключение транзистора к линии порта ввода/вывода
- Подключение кнопки к линии порта ввода/вывода
Пример будем расматривать на микроконтроллере ATMega8.
Программу писать будем в Atmel Studio 6.0.
Емулировать схему будем в Proteus 7 Professional.
С внешним миром микроконтроллер общается через порты ввода вывода. Схема порта ввода вывода указана в даташите:

Но новичку разобраться довольно со схемой довольно сложно. Поэтому схему упростим:

Pxn – имя ножки порта микроконтроллера, где x буква порта (A, B, C или D), n номер разряда порта (7… 0).
Cpin — паразитная емкость порта.
VCC — напряжение питания.
Rpu — отключаемый нагрузочный верхний резистор (pull-up).
PORTxn — бит n регистра PORTx.
PINxn — бит n регистра PINx.
DDRxn — бит n регистра DDRx.
Читать полностью »

