www.samag.ru
Журнал «БИТ. Бизнес&Информационные технологии»      
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Интеграция Open Source-решений  

Open Source в облачной среде

Облачные решения становятся всё более популярными в мире. Компании стремятся использовать их для

 Читать далее...

Автоматизация  

Нейросеть вам в руки! Как использовать ИИ для автоматизации задач

Использование ИИ для автоматизации задач помогает компании получить конкурентное преимущество, поскольку объединение

 Читать далее...

Рынок труда  

Специалист по этическому ИИ, инженер по квантовым вычислениям или аналитик по метавселенной?

Новые тенденции в развитии ИТ могут привести к возникновению новых специальностей в

 Читать далее...

Книжная полка  

Учитесь убеждать и побеждать

Издательство «БХВ», как всегда, порадовало своих читателей хорошими книжными новинками. Кроме популярных

 Читать далее...

Сетевая инфраструктура  

Как удаленная работа меняет подход к сетевой инфраструктуре?

С увеличением числа сотрудников, работающих из дома, организации сталкиваются с необходимостью создания

 Читать далее...

Мониторинг  

Какой мониторинг нужен сегодня?

По мнению экспертов ГК InfoWatch, действия сотрудников – самая распространенная причина инцидентов

 Читать далее...

Книжная полка  

Руководство для тех, кто увлечен ИИ, программированием. И дизайном

Накануне лета издательство «БХВ» выпустило книжные новинки, от которых любителям чтения будет

 Читать далее...

Мобильные приложения  

Искусственный интеллект в мобильных приложениях: возможности и перспективы

Обзор современных применений ИИ в мобильных приложениях, анализ перспектив развития этой технологии,

 Читать далее...

ИТ-образование  

Как сделать ИТ-образование эффективным?

Эксперты ИТ-отрасли отвечают на вопросы «СА». Обсуждаем ключевые аспекты для улучшения образовательных

 Читать далее...

Work-life balance  

Как айтишнику найти баланс между работой и личной жизнью?

Обсуждаем инструменты для эффективного управления временем, снижения уровня стресса и достижения гармонии. На

 Читать далее...

Книжная полка  

Всё самое нужное – под одной обложкой

Отличительная черта книжных новинок, выпущенных недавно издательством «БХВ» – это их универсальность. Не просто

 Читать далее...

ИТ-инфраструктура  

Системы мониторинга ИТ-инфраструктуры-2025

Без мониторинга ИТ-инфраструктуры не обходится ни одна компания, хотя бы потому, что

 Читать далее...

Открытое ПО  

Безопасность Open Source: рискуем или контролируем?

Компания «Кросс технолоджис» изучила, как используется ПО с открытым кодом в компаниях

 Читать далее...

Работа с нейросетью  

Скажи, есть ли у тебя AI, и я скажу, кто ты

Недавно сервис по поиску работы SuperJob выяснил, что каждый второй россиянин уже

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 9835
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 9971
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 7423
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 4622
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 5449
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 5413
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 8140
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 4778
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 5028
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 9105
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 12536
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 14051
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 15801
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 10676
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 8698
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 6945
Комментарии: 4
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 6054
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 4971
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 4621
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 4849
Комментарии: 1
Рецензия на книгу «MongoDB в действии»

 Читать далее...

Друзья сайта  

 Строим персональный SyncML-сервис синхронизации

Архив номеров / 2008 / Выпуск №3 (64) / Строим персональный SyncML-сервис синхронизации

Рубрика: Администрирование /  Администрирование

МАКСИМ ИРГИЗНОВ

Строим персональный SyncML-сервис синхронизации

Контакты, задачи, календарь в мобильном телефоне, КПК или персональном компьютере – возможно ли их объединить в единую информационную среду с удобным доступом? Можно ли получить к ней оперативный доступ, находясь в поездке? Теперь на эти вопросы есть ответ.

Нам очень часто необходимо иметь единый центр хранения пользовательских данных (контакты, календарь, расписания задач, заметки), как на работе, так и дома. Как правило, эти данные необходимы на разных устройствах или рабочих местах. В таких случаях локальная синхронизация с помощью ПО производителя устройства становится очень неудобной.

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

В Интернете существуют различные сервисы (см. ссылки по теме) для синхронизации информации, но они, как правило, платные либо имеют ограничения, а доверять стороннему серверу приватную информацию часто желания нет.

В качестве рабочей станции я использую самую последнюю версию FreeBSD 7.0-STABLE, но замечу, что все описанное можно также проделать на любой другой UNIX-подобной системе с соответствующими поправками к разделу «Установка».

Этап 1. Перед установкой

Для работы с SyncML потребуется (подробное описание устанавливаемой библиотеки можно получить в файле pkg-descr) установка следующих библиотек и программ из коллекции «портов» FreeBSD:

  • /usr/ports/devel/cmake;
  • /usr/ports/textproc/wbxml2;
  • /usr/ports/devel/libsoup;
  • /usr/ports/comms/openobex (не обязательно, если не будете делать локальную синхронизацию по протоколу OBEX).

Устанавливаете их вашим любимым способом: «make install, portinstall, etc».

Для работы понадобятся следующие модули (текущий стабильный релиз):

Инструмент, с помощью которого мы будем производить синхронизацию: http://opensync.org/download/releases/0.36/msynctool-0.36.tar.bz2 (существует и GUI-версия этой утилиты – http://opensync.org/attachment/wiki/download/multisync-gui-0.91.0.tar.gz). Скачиваем их к себе в домашний каталог любимым download-инструментом.

Этап 2. Установка

Итак, сборка ПО из портов (рекомендую обновить их на текущую дату) закончена, приступим к самому главному.

Для простоты всю работу будем производить в домашней директории пользователя (во всех примерах это будет домашний каталог /home/xeon).

Внимание: для корректной сборки необходимо проверить, чтобы glib2 (/usr/ports/devel/glib20, при отсутствии устанавливается как зависимость libsoup) был собран с поддержкой posix thread, например, так:

# ldd /usr/local/lib/libgthread-2.0.so

    libthr.so.3 => /lib/libthr.so.3

Выделенная красным строка (как вариант там может быть libpthread.so.2) показывает наличие поддержки потоков (см. рис. 1).

Рисунок 1. Результат команды ldd, показывающий наличие (выделенная строка) поддержки потоков в glib

Внимание: наличие поддержки потоков является обязательным условием для продолжения сборки библиотек.

Первым делом распаковываем и устанавливаем пакет libsyncml:

# tar zxf libsyncml-0.4.6.bz2

# cd libsyncml-0.4.6

# mkdir build

# cd build

# cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DENABLE_OBEX=no ../

Используя свой любимый редактор, поправьте файл libsyncml-1.0.pc, добавив в конец строки «Cflags: -I${includedir}» следущее:

-I/usr/local/include

Сохраняем и устанавливаем библиотеку:

# make install

Далее – libopensync – основная библиотека, реализующая синхронизацию:

# tar zxf libopensync-0.36.tar.bz2

# cd libopensync-0.36

# mkdir build

# cd build

# cmake -DCMAKE_INSTALL_PREFIX=/usr/local ../

# make

# make install

 Коротко об устанавливаемых плагинах:

  • plugin-vformat – содержит основные функции по работе с различными форматами синхронизируемой информации.
  • plugin-syncml – предоставляет реализацию доступа к протоколу SyncML посредством простейших интерфейсов, таких как http, obex. Я буду использовать в работе простейший http-сервер, идущий в составе плагина и не требующий установки стороннего ПО.
  • plugin-file – обеспечивает синхронизацию данных, расположенных на файловой системе.

Приступим к сборке минимально необходимых плагинов, начнем с libopensync-plugin-file:

# tar zxf libopensync-plugin-file-0.36.tar.bz2

# cd libopensync-plugin-file-0.36

# mkdir build

# cd build

# cmake -DCMAKE_INSTALL_PREFIX=/usr/local ../

# make

# make install

Повторяем те же действия для плагинов libopensync-plugin-syncml и libopensync-plugin-vformat. При сборке vformat есть одна особенность: необходимо скопировать файл

/usr/local/include/iconv.h в каталог libopensync-plugin-vformat-0.36/src и поправить файл libopensync-plugin-vformat-0.36/src/vformat.c, в нем мы заменяем «#include » на «iconv.h» и устанавливаем плагин.

Аналогично собираем наш основной инструмент синхронизации msynctool, после сборки которого установку можно считать законченной и приступить к настройке.

Этап 3. Настройка

Заходим под пользователем, под каким будет работать наша синхронизация. Проверяем, все ли у нас установилось корректно, результат должен быть как минимум такой:

$  msynctool --listplugins

Available plugins:

syncml-http-server

syncml-http-client

file-sync               

Результат работы команды представлен на рис. 2.

Просмотр установленных плагинов

Рисунок 2. Просмотр установленных плагинов

По команде «msynctool --listformats» мы получим список форматов, там должны присутствовать: vcard21(30), vevent20(10), vnote11, vtodo20.

Все в порядке, можно продолжать.

Создаем группу для синхронизации и подключаем к ней наши плагины:

$ msynctool --addgroup mysync

$ msynctool --addmember  mysync syncml-http-server

$ msynctool --addmember  mysync file-sync

Проконтролировать результат работы данных команд можно так:

$ msynctool --showgroup mysync

Groupname: mysync

Member 1: syncml-http-server

        No Configuration found: Member has not been configured

Member 2: file-sync

        No Configuration found: Member has not been configured

Результат работы команды говорит нам о том, что мы не сконфигурировали членов созданной группы. Сконфигурировать каждого члена созданной нами группы очень просто с помощью такой команды:

$ msynctool --configure mysync 1

Откроется ваш редактор по умолчанию с конфигурацией (с комментариями по каждому из параметров) в формате XML.

Для члена syncml-http-server нам достаточно указать URL, на котором будет работать сервер, и port в соответствующих местах конфигурационного файла

<url>10.20.30.40</url>

<port>1234</port>

Замечание: не забудем открыть указанный в конфигурации порт (протокол TCP) на своем брандмауэре. Допустимо использовать 80-й порт в конфигурации, если это не вызывает конфликта с установленным веб-сервером.

Также в конфиге следует проверить (имена баз чувствительны к регистру символов) описания баз данных, к которым будет подключаться клиент. Для телефонов Sony Ericsson часть конфигурации выглядит так:

<!-- Contact database -->

  <database>

     <name>Contacts</name>

     <objtype>contact</objtype>

     <objformat>vcard21</objformat>

  </database>

 <!-- Calendar database -->

  <database>

     <name>Calendar</name>

     <objtype>event</objtype>

     <objformat>vevent20</objformat>

  </database>

  <!-- Note database -->

  <database>

     <name>Notes</name>

     <objtype>note</objtype>

     <objformat>vnote11</objformat>

  </database>

  <!-- Tasks database -->

  <database>

     <name>Tasks</name>

     <objtype>todo</objtype>

     <objformat>vtodo20</objformat>

  </database>


Замечание: выяснить необходимые версии форматов можно, отправив через Bluetooth-соединение, например, контакт, и в полученном файле посмотреть на строчку VERSION. При работе с базой допускается версия выше, чем есть в синхронизируемом устройстве.

Внимание: после запуска сервиса и его отладки вы должны установить username и password в члене syncml-http-server созданной группы в целях повышения безопасности!

Таким же образом конфигурируем второго мембера, в его конфигурации в данном блоке прописываем реальный путь:

<directory>

    <path>/home/xeon/.opensync</path>

    <objtype>data</objtype>

  </directory>

Проверяем результат нашей конфигурации:

$ msynctool --discover mysync                              
Discovered Objtypes:                                       
        contact                                            
                Format: vcard21                            
                                 conversion config: (null) 
        event                                              
                Format: vevent20                           
                                 conversion config: (null) 
        note                                               
                Format: vnote11                            
                                 conversion config: (null) 
Discovered Objtypes:                                       
        contact                                            
                Format: vcard21                            
                                 conversion config: (null) 

Вот, собственно, и все.

Этап 4. Синхронизация

Вот мы и готовы запустить команду «msynctool --sync mysync» и подключиться клиентом к нашему серверу.

Отдельные устройства могут потребовать иной формат команды:

msynctool --sync mysync  --slow-sync contact

где contact – тип (посмотреть типы можно через команду --discover) синхронизируемого объекта (см. рис. 3).

Успешный запуск и ожидание подключения клиента

Рисунок 3. Успешный запуск и ожидание подключения клиента

 Возьмем для синхронизации современную модель телефона Sony Ericsson (на других телефонах настройки аналогичны). В нем необходимо произвести следующие настройки: «Меню > Параметры > Связь > Синхронизация». Там выбрать:

  • Новая учетная запись – тип SyncML;
  • Имя – произвольное.

 На вкладке «Общие» указать:

  • Адрес сервера – http://10.20.30.40:1234/.
  • Имя пароль – пока не заполняем.

На вкладке «Приложения» ставим галочки напротив «Контакты» и «Календарь».

На вкладке «Параметры приложения» выбираем «Контакты», вписываем:

  • Имя баз данных – contacts;
  • Логин пароль – пустые.

 Также для «Календаря»:

  • Имя баз данных – calendar;
  • Задания – tasks;
  • Заметки – notes.

Удобные имена для названия баз (к сожалению, только в латинице) вы можете сконфигурировать в члене syncml-http-server, сохраняем учетную запись и пробуем. Если все заработало успешно, поздравляю!

На рабочей станции под управлением *nix синхронизацию можно проводить, например, с почтовым клиентом Evolution2. Для этого скачиваем и устанавливаем по приведенной в разделе «Установка» схеме плагин libopensync-plugin-evolution2:

$ msynctool --addmember mysync  evo2-sync
$ msynctool --configure mysync  3

В файле конфигурации прописываем пути:

<config>

  <address_path>file:///home/xeon/.evolution/addressbook/local/system</address_path>

  <calendar_path>file:///home/xeon/.evolution/calendar/local/system</calendar_path>

  <tasks_path>file:///home/xeon/.evolution/tasks/local/system</tasks_path>

 </config>

Таким же образом устанавливаются и настраиваются плагины для синхронизации с Motorola phones, KDE PIM, Palm, Google Calendar, а также по протоколу irmc.

Популярные телефоны с этой технологией:

  •  Nokia 3250, 6233, N70;
  •  Sony Ericsson K790i, K750i, Z750i.

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

Замечания

Для выполнения операции резервного копирования достаточно сделать копию каталога /home/xeon/.opensync/ любым удобным способом, например:

tar -jcf opensync.tbz .opensync/

В рассмотренном способе синхронизация выполняется посредством протокола http, что позволяет очень легко перехватить и подсмотреть ваши данные. Решить проблему можно, перейдя на защищенные https-соединения, которые будут осуществляться, например, с ssl-прокси-сервером.

Используемые в статье программы и примеры можно взять за основу для построения собственного публичного сервиса синхронизации контактной информации.

Удачи!

  1. http://www.syncml.org – спецификации по SyncML.
  2. http://www.opensync.org/wiki/SetupGuide – руководство по установке.
  3. http://ru.wikipedia.org/wiki/SyncML – информация об SyncML.
  4. http://www.funambol.com – инструменты синхронизации для различных платформ.
  5. http://nazarov.com/wp/2007/10/24/107 – большой список сервисов для синхронизации SyncML.
  6. http://www.egroupware.org – сервер групповой работы с поддержкой SyncML.

Комментарии
 
  20.05.2008 - 06:21 |  Nib

Извините за дилетантство, задаю вопрос не покопавшись сам...Можно ли как нибудь сделать локальную синхронизацию, т.е. доступную только в локальной сети? Если да, куда копать?

  21.05.2008 - 04:15 |  Xeon

Это очень сильно зависит от телефона и его клиента синхронизации.
В телефонах Sony Ericsson K790i, K750i, Z750i. можно такое сделать. За это отвечает настройка "разреш. местн. подключ.", тогда когда телефон подключен через bluetooth(профиль PAN) или шнурок будет доступна локальная сеть и соответствующий сервис.

  09.12.2008 - 03:44 |  raVen

как собрать /usr/ports/devel/glib20 с posix thread? пробовал добавлять в CONFIGURE_ARGS "--enable-threads --with-threads=posix", но не помогает. всё равно "ldd /usr/local/lib/libgthread-2.0.so" не показывает "libthr.so.3 => /lib/libthr.so.3".

  10.12.2008 - 08:50 |  raVen

в семёрке нормально собирается и запускается

  10.12.2008 - 08:50 |  raVen

только нифига не работает:

(process:90463): GLib-GObject-CRITICAL **: g_type_instance_get_private: assertion `instance != NULL && instance->g_class != NULL' failed
Segmentation fault: 11

это при попытке прицепится телефоном для синхронизации.

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru