Как стать автором
Обновить

Тренинг по Maemo. День 2

Время на прочтение4 мин
Количество просмотров706
Итак, тренинг по Maemo, проводящийся в рамках второй конференции по Maemo. День второй.
Обзор первого дня можно посмотреть здесь: http://habrahabr.ru/blogs/nokia/89046/.
Краткое содержание второго дня:
  1. Интеграция с платформой. Сергей Иванов
  2. Интеграция с платформой. AddressBook. GConf. Сергей Иванов
  3. Создание дистрибутива приложения. Дмитрий Маличенко


Второй день был короче чем первый часа на 3. Постараюсь описать беспристрастно, а свою оценку дать уже в заключении.

Интеграция с платформой. Сергей Иванов


Доклад по сути обзорный и вводный. Были рассмотрены следующие темы:
  1. D-Bus
  2. LibOSSO
  3. LibConIc

D-Bus


Рассказывалось что собственно такое D-Bus, зачем он нужен и какой бывает. Также неоднократно упоминалось что он весь из себя низкоуровневый и напрямую юзать его не стоит (по мне дак слегка преувеличенно, ну да ладно).

LibOSSO


Тема про D-Bus плавно перетекла в небольшой обзор высокоуровневой обертки над libdbus — LibOSSO.
Тренинг по Maemo, день 2
По сути да, надстройка достаточно высокоуровневая, но все портят длинные, почти одинаковые именования макросов и методов (вообщем и не только в LibOSSO так). На одном примере строки даже не влезли на слайд :)

LibConIc


Последняя часть доклада была самой большой. Рассказывали про LibConIc — библиотеку для подключения к сети.
Может она и правда немало:
  • запрос соединения;
  • прослушивание событий о состоянии;
  • получение статистики;
  • получение настроек прокси;
  • получение списка соединений.

То есть, по сути есть все что нужно и ничего лишнего. Но данная библиотека непотокобезопасна, ее код должен выполняться в главном потоке.
В отличие от стандартных ошибок при использовании сокетов библиотека также постарается объяснить почему не получилось подключиться и может вызвать стандартный менеджер соединений. На фото результат работы на девайсе (сначала подключили вайфай, потом отключили).
Тренинг по Maemo, день 2

Интеграция с платформой. AddressBook. GConf. Сергей Иванов


Доклад более прикладной с двумя небольшими практическими заданиями. Были рассмотреные следующие темы:
  1. Работа с адресной книгой (как АПИ, так и графические спецвиджеты)
  2. GConf

Работа с адресной книгой


За адресную книгу отвечают следующие компоненты:
  • Приложение Contacts
  • Библиотека libosso-abook
  • Хранилище Evolution Data Server (EDS)

Тренинг по Maemo, день 2
Основная работа идет именно с libosso-abook. В логике Maemo контакт состоит из одного мастер-контакта (различные идентификационные данные типа ФИО, телефона, аватарки и прочего) и кучки ростер-контактов (VoIP/IM контакты). Также рассказали про основные интерфейсы, которые используются при работе с адресной книгой и про виджеты.
Интерфейсы:
  • OssoABookAvatar — аватарка;
  • OssoABookCaps — возможности контакта (можно ли написать e-mail, позвонить и т.д.);
  • OssoABookPresence — статус контакта (доступен, отошел, не доступен,...);
  • OssoABookContact — собственно сам контакт.

Виджеты:
  • OssoABookTouchContactStarter — отображение информации о контакте и возможность позвонить/написать смс/… .
  • OssoABookContactChooser — список контактов. Позволяет делать одиночный и множественный выбор контактов (на нужный количественный диапазон), делать фильтрацию по контактам (как на стандартных фильтрах, так и на кастомных).

По адресной книге было первое практическое задание: показать OssoABookContactChooser с фильтрацией по сотовому оператору. Задание небольшое и несложное (если не учитывать длинные строки gtk), но почему то под него выделили очень много времени.
Тренинг по Maemo, день 2

GConf


После кофе-брейка началась вторая часть доклада — GConf.
GConf это по сути одно большое хранилище настроек всех приложений. Сделан на клиент-серверной архитектуре (имхо оверхед для такой задачи, но с другой стороны есть плюс в подписке на изменение настроек).
GConf может хранить данные только следующих типов:
  • целое число;
  • булево значение;
  • строка;
  • число с плавающей точкой (с небольшими ограничениями);
  • перечислимый тип.

Тренинг по Maemo, день 2
Хранение данных организовано в виде папок и все приложения Maemo хранят данные по пути /apps/maemo/YourApplicationNameHere/.
Для работы с GConf извне есть утилита gconftool-2, которая позволяет задавать/менять значения, читать значения и удалять значения.
По GConf'у также было несложное практическое задание. Нужно было дописать к уже готовому приложению возможность подписываться на изменение настроек.
Тренинг по Maemo, день 2

Создание дистрибутива приложения. Дмитрий Маличенко


Это пожалуй был самый интересный доклад дня. Рассказывалось про то как собирать пакеты для Maemo. Освещались темы:
  1. Теория об утилитах apt и dpkg
  2. Создание .deb пакетов
  3. Основные policy создания пакетов для Maemo

Первая часть была действительно очень теоретической и вкратце рассказывала о том что такое apt и dpkg.
Про создание .deb пакетов было рассказано достаточно подробно, но на примере одиночных пакетов (тема о нескольких пакетах из одних исходников была рассмотрена, но вскользь). Также был рассмотрен пример .desktop файла (который по сути является инстанцией в меню Maemo).
Третья часть включала в себя как организацию исходников по директориям, так и рассказ про дополнительные файлы, такие как вышеуказанный .desktop и .service файл, отвечающий за регистрацию программы в D-Bus.
Практическое задание в докладе было создать свой пакет с любым приложением.
Тренинг по Maemo, день 2

Заключение


В целом мне понравился второй день тренинга, но все-таки было несколько моментов:
  • Сергей Иванов хорошо и живо рассказывал, но доклад почти полностью повторял текст на слайдах, хотелось бы больше речевого текста (возможно каких-то примеров из жизни или лирических отступлений);
  • Дмитрий Маличенко рассказывал про интересную тему, но уж очень монотонный доклад, я слегка заснул;
  • Во второй день были очень большие временные рамки для выполнения практических заданий, следовательно много времени просто сидели.

Авторы


Денис Кормалев: tass.
Василий Сорокин: vass.
Теги:
Хабы:
+6
Комментарии3

Публикации