Итак, тренинг по Maemo, проводящийся в рамках второй конференции по Maemo. День второй.
Обзор первого дня можно посмотреть здесь: http://habrahabr.ru/blogs/nokia/89046/.
Краткое содержание второго дня:
Второй день был короче чем первый часа на 3. Постараюсь описать беспристрастно, а свою оценку дать уже в заключении.
Доклад по сути обзорный и вводный. Были рассмотрены следующие темы:
Рассказывалось что собственно такое D-Bus, зачем он нужен и какой бывает. Также неоднократно упоминалось что он весь из себя низкоуровневый и напрямую юзать его не стоит (по мне дак слегка преувеличенно, ну да ладно).
Тема про D-Bus плавно перетекла в небольшой обзор высокоуровневой обертки над libdbus — LibOSSO.
По сути да, надстройка достаточно высокоуровневая, но все портят длинные, почти одинаковые именования макросов и методов (вообщем и не только в LibOSSO так). На одном примере строки даже не влезли на слайд :)
Последняя часть доклада была самой большой. Рассказывали про LibConIc — библиотеку для подключения к сети.
Может она и правда немало:
То есть, по сути есть все что нужно и ничего лишнего. Но данная библиотека непотокобезопасна, ее код должен выполняться в главном потоке.
В отличие от стандартных ошибок при использовании сокетов библиотека также постарается объяснить почему не получилось подключиться и может вызвать стандартный менеджер соединений. На фото результат работы на девайсе (сначала подключили вайфай, потом отключили).
Доклад более прикладной с двумя небольшими практическими заданиями. Были рассмотреные следующие темы:
За адресную книгу отвечают следующие компоненты:
Основная работа идет именно с libosso-abook. В логике Maemo контакт состоит из одного мастер-контакта (различные идентификационные данные типа ФИО, телефона, аватарки и прочего) и кучки ростер-контактов (VoIP/IM контакты). Также рассказали про основные интерфейсы, которые используются при работе с адресной книгой и про виджеты.
Интерфейсы:
Виджеты:
По адресной книге было первое практическое задание: показать OssoABookContactChooser с фильтрацией по сотовому оператору. Задание небольшое и несложное (если не учитывать длинные строки gtk), но почему то под него выделили очень много времени.
После кофе-брейка началась вторая часть доклада — GConf.
GConf это по сути одно большое хранилище настроек всех приложений. Сделан на клиент-серверной архитектуре (имхо оверхед для такой задачи, но с другой стороны есть плюс в подписке на изменение настроек).
GConf может хранить данные только следующих типов:
Хранение данных организовано в виде папок и все приложения Maemo хранят данные по пути /apps/maemo/YourApplicationNameHere/.
Для работы с GConf извне есть утилита gconftool-2, которая позволяет задавать/менять значения, читать значения и удалять значения.
По GConf'у также было несложное практическое задание. Нужно было дописать к уже готовому приложению возможность подписываться на изменение настроек.
Это пожалуй был самый интересный доклад дня. Рассказывалось про то как собирать пакеты для Maemo. Освещались темы:
Первая часть была действительно очень теоретической и вкратце рассказывала о том что такое apt и dpkg.
Про создание .deb пакетов было рассказано достаточно подробно, но на примере одиночных пакетов (тема о нескольких пакетах из одних исходников была рассмотрена, но вскользь). Также был рассмотрен пример .desktop файла (который по сути является инстанцией в меню Maemo).
Третья часть включала в себя как организацию исходников по директориям, так и рассказ про дополнительные файлы, такие как вышеуказанный .desktop и .service файл, отвечающий за регистрацию программы в D-Bus.
Практическое задание в докладе было создать свой пакет с любым приложением.
В целом мне понравился второй день тренинга, но все-таки было несколько моментов:
Денис Кормалев: tass.
Василий Сорокин: vass.
Обзор первого дня можно посмотреть здесь: http://habrahabr.ru/blogs/nokia/89046/.
Краткое содержание второго дня:
- Интеграция с платформой. Сергей Иванов
- Интеграция с платформой. AddressBook. GConf. Сергей Иванов
- Создание дистрибутива приложения. Дмитрий Маличенко
Второй день был короче чем первый часа на 3. Постараюсь описать беспристрастно, а свою оценку дать уже в заключении.
Интеграция с платформой. Сергей Иванов
Доклад по сути обзорный и вводный. Были рассмотрены следующие темы:
- D-Bus
- LibOSSO
- LibConIc
D-Bus
Рассказывалось что собственно такое D-Bus, зачем он нужен и какой бывает. Также неоднократно упоминалось что он весь из себя низкоуровневый и напрямую юзать его не стоит (по мне дак слегка преувеличенно, ну да ладно).
LibOSSO
Тема про D-Bus плавно перетекла в небольшой обзор высокоуровневой обертки над libdbus — LibOSSO.
По сути да, надстройка достаточно высокоуровневая, но все портят длинные, почти одинаковые именования макросов и методов (вообщем и не только в LibOSSO так). На одном примере строки даже не влезли на слайд :)
LibConIc
Последняя часть доклада была самой большой. Рассказывали про LibConIc — библиотеку для подключения к сети.
Может она и правда немало:
- запрос соединения;
- прослушивание событий о состоянии;
- получение статистики;
- получение настроек прокси;
- получение списка соединений.
То есть, по сути есть все что нужно и ничего лишнего. Но данная библиотека непотокобезопасна, ее код должен выполняться в главном потоке.
В отличие от стандартных ошибок при использовании сокетов библиотека также постарается объяснить почему не получилось подключиться и может вызвать стандартный менеджер соединений. На фото результат работы на девайсе (сначала подключили вайфай, потом отключили).
Интеграция с платформой. AddressBook. GConf. Сергей Иванов
Доклад более прикладной с двумя небольшими практическими заданиями. Были рассмотреные следующие темы:
- Работа с адресной книгой (как АПИ, так и графические спецвиджеты)
- GConf
Работа с адресной книгой
За адресную книгу отвечают следующие компоненты:
- Приложение Contacts
- Библиотека libosso-abook
- Хранилище Evolution Data Server (EDS)
Основная работа идет именно с libosso-abook. В логике Maemo контакт состоит из одного мастер-контакта (различные идентификационные данные типа ФИО, телефона, аватарки и прочего) и кучки ростер-контактов (VoIP/IM контакты). Также рассказали про основные интерфейсы, которые используются при работе с адресной книгой и про виджеты.
Интерфейсы:
- OssoABookAvatar — аватарка;
- OssoABookCaps — возможности контакта (можно ли написать e-mail, позвонить и т.д.);
- OssoABookPresence — статус контакта (доступен, отошел, не доступен,...);
- OssoABookContact — собственно сам контакт.
Виджеты:
- OssoABookTouchContactStarter — отображение информации о контакте и возможность позвонить/написать смс/… .
- OssoABookContactChooser — список контактов. Позволяет делать одиночный и множественный выбор контактов (на нужный количественный диапазон), делать фильтрацию по контактам (как на стандартных фильтрах, так и на кастомных).
По адресной книге было первое практическое задание: показать OssoABookContactChooser с фильтрацией по сотовому оператору. Задание небольшое и несложное (если не учитывать длинные строки gtk), но почему то под него выделили очень много времени.
GConf
После кофе-брейка началась вторая часть доклада — GConf.
GConf это по сути одно большое хранилище настроек всех приложений. Сделан на клиент-серверной архитектуре (имхо оверхед для такой задачи, но с другой стороны есть плюс в подписке на изменение настроек).
GConf может хранить данные только следующих типов:
- целое число;
- булево значение;
- строка;
- число с плавающей точкой (с небольшими ограничениями);
- перечислимый тип.
Хранение данных организовано в виде папок и все приложения Maemo хранят данные по пути /apps/maemo/YourApplicationNameHere/.
Для работы с GConf извне есть утилита gconftool-2, которая позволяет задавать/менять значения, читать значения и удалять значения.
По GConf'у также было несложное практическое задание. Нужно было дописать к уже готовому приложению возможность подписываться на изменение настроек.
Создание дистрибутива приложения. Дмитрий Маличенко
Это пожалуй был самый интересный доклад дня. Рассказывалось про то как собирать пакеты для Maemo. Освещались темы:
- Теория об утилитах apt и dpkg
- Создание .deb пакетов
- Основные policy создания пакетов для Maemo
Первая часть была действительно очень теоретической и вкратце рассказывала о том что такое apt и dpkg.
Про создание .deb пакетов было рассказано достаточно подробно, но на примере одиночных пакетов (тема о нескольких пакетах из одних исходников была рассмотрена, но вскользь). Также был рассмотрен пример .desktop файла (который по сути является инстанцией в меню Maemo).
Третья часть включала в себя как организацию исходников по директориям, так и рассказ про дополнительные файлы, такие как вышеуказанный .desktop и .service файл, отвечающий за регистрацию программы в D-Bus.
Практическое задание в докладе было создать свой пакет с любым приложением.
Заключение
В целом мне понравился второй день тренинга, но все-таки было несколько моментов:
- Сергей Иванов хорошо и живо рассказывал, но доклад почти полностью повторял текст на слайдах, хотелось бы больше речевого текста (возможно каких-то примеров из жизни или лирических отступлений);
- Дмитрий Маличенко рассказывал про интересную тему, но уж очень монотонный доклад, я слегка заснул;
- Во второй день были очень большие временные рамки для выполнения практических заданий, следовательно много времени просто сидели.
Авторы
Денис Кормалев: tass.
Василий Сорокин: vass.