Страницы

пятница, 27 марта 2009 г.

Текучка 9. Итоги за неделю работы.

Bluetooth + Funambol

На работе подняли вопрос о покупке сотрудникам мобильных телефонов для работы. А я вызвался исследовать возможность синхронизации списка контактов и заданий между нашим офисным планировщиком и телефонами. Когда-то основательно повозился, настраивая синхронизацию между Nokia N73 и Google-календарём[1]. Nokia N73 работает на Symbian-e, и синхронизация там построена на SyncML. Большинство порталов, для такой синхронизации построены на базе open-source сервера Funambol.

Скачал и установил на свой компьютер Funambol. Часа 3 провозился пытаясь настроить синхронизацию данных с мобильного телефона. Основная проблема в том, что компьютер может выходить в интернет через мобильный телефон подключенный через BlueTooth, а вот телефон подключенный через BlueTooth к компьютеру, через компьютер в сеть выходить отказывается. В интернете, вроде есть рецепты для N73, но они требуют установки в Symbian дополнительного софта, который придётся долго искать и настраивать. Это куда сложнее, чем, например, скачать аську на нокиа 5800, где всё просто - поставил и работает. =( Договорился с админом, в понедельник будем пробовать синхронизацию через WiFi. 


DEP

Коллега столкнулся с загадочной проблемой. У одного клиента, не работали формы созданные с помощью DreamVCL (это такие древние компоненты, включающие в себя дизайнер форм, и внутреннюю реализацию Pascal). При нажатии на кнопку выскакивал Access Violation. Известно, что аналогичная проблема встречалась ещё у двух клиентов (и не решилась). В офисе ошибку повторить не удалось. Коллега бился почти неделю, прежде чем пришёл за помощью. Пробовали отключать все возможные оптимизации, ошибка оставлась. Посоветовал ему попробовать подключить к проекту EurekaLog, чтобы точно определить место возникновения ошибки. Выяснилось что ошибка возникает при вызове события TButton.OnClick. При этом, до выполнения кода обработчика события, дело не доходит.
В результате, оказалось, что причиной для проявления проблемы была старательность системного администратора, включившего на проблемном компьютере DEP не только для сервисов Windows, а для всех программ. После того как наша софтина была добавлена в исключения, проблема пропала. Что интересно, что сначала мне пришла в голову мысль: "а может это DEP как-нибудь влияет", и только после того как выяснилось что это действительно DEP, я прочитал в Wiki описание DEP, и стало ясно почему так происходило. Вот так вот, в кои-то веки интуиция выручила. Теперь интересно, свободны ли другие "Form Designer-ы"(Greatis Form Designer, EControl Form Designer) от подобного бага.

Кстати, было бы очень интересно почитать обзор и сравнение функционала этих дизайнеров. Если кто-нибудь встречал сравнительный обзор, поделитесь пожалуйста ссылочкой. ;-)

Пост о DEP(+набор ссылок): http://alt0.livejournal.com/118310.html

 


UDF

Помимо этого, начальство подняло вопрос о переходе на Firebird 2.x, и выяснилось, что сдерживающим фактором здесь являются наши внутренние udf-ки. Сервер 2.1 под Windows просто падает при вызове некоторых функций. Udf-ки писались и компилировались лет 5 тому назад. Человек, который их писал, уже давно ушёл. На Си у нас никто не программирует и опыта особого не имеет(я лет 8 назад все лабораторки в универе писал на Borland C 3.1, потому что на моём факультете Паскаль на первом курсе не преподали). Переход на Firebird 2.x был отложен до лучших времён. И вот эти времена настали. Часть времени этой недели было потрачено на попытки собрать исходник на Си в dll-ку под Windows c помощью MinGW. Хвала Dimitry Sibiryakov и неизвестному человеку из RedSoft за помощь, dll-ка получилась. Сейчас думаю, о том, как бы организовать сборку 4-х версий для Windows/Linux/32bit/64bit на одной машине. Но судя по тому, что удалось найти в интернете о cross toolchain, это задачка не из тривиальных и быстрее и выгоднее будет собрать нужные версии под соответствующими ОСями.

[1] Для синхронизации планировщика в телефоне и календаря Гагл, я использую сервис ScheduleWorld. Этот сервис построен на базе Funambol, и умеет синхронизироваться с сервисами Google. Хотя совсем недавно, сервисы Google наконец-то обзавелись собственной поддержкой SyncML, но пока что это работает только для контактов.

2 комментария:

  1. Должен сообщить, что UDF для Firebird не обязательно писать на C.
    Это можно сделать на Delphi или FreePascal(для Linux и Free BSD)
    Это обычная dll, нужно только правильно указать
    соглашеня о вызовах (stdcall)
    и есть особенности выделения и освобождения памяти.
    Об этом можно прочитать на www.ibase.ru

    ОтветитьУдалить
  2. Да я знаю =) Я много материала перерыл, пока искал материал. В моём случае у меня уже были исходники написанные на Си, и после перекомпиляции они должны были работать точь-в-точь как раньше. Едва ли переписывание их на FreePascal было бы меньшим из этих зол.

    ОтветитьУдалить