You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2018-08-21-examples-and-dependencies-ru.md 5.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. Title: Примеры и зависимости
  2. Date: 2018-08-21 00:00
  3. Category: News
  4. Slug: examples-and-dependencies
  5. Lang: ru
  6. ![Screenshot][screenshot]
  7. Эта статья описывает два новых кросс-платформенных примера OpenSceneGraph
  8. и изменение в работе с зависимостями.
  9. **Примеры клиента HTTP и выбора узла сцены**
  10. После окончания работы над [примером удалённой отладки][osgcpe-04] и
  11. [сообщения об этом][article-2018-june] мы с удивлением обнаружили, что
  12. безопасное соединение HTTPS между отлаживаемым приложением и брокером
  13. отладки работало лишь в веб-версии примера. Десктопная и мобильная версии
  14. работали лишь с помощью обычного соединения HTTP.
  15. Т.к. текущая схема отладки не имеет авторизации, отладка по обычному соединению
  16. HTTP не несёт никаких проблем. Однако, если мы хотим получить доступ к ресурсам,
  17. расположенным на популярных сайтах вроде GitHub и BitBucket, мы обязаны
  18. поддерживать HTTPS.
  19. Необходимость поддержки HTTPS на каждой платформе побудила нас создать
  20. [пример клиента HTTP][osgcpe-03]. Оказалось, что каждая платформа имеет
  21. собственные правила по работе с HTTPS:
  22. * веб (Emscripten) предоставляет Fetch API
  23. * десктоп может использовать Mongoose с OpenSSL
  24. * Android предоставляет HttpUrlConnection в языке Java
  25. * iOS предоставляет NSURLSession в языке Objective-C
  26. Необходимость поддержки разных языков на разных платформах привела к
  27. созданию так называемого шаблона "хозяин-гость":
  28. * гость (не привязан к платформе)
  29. * имеет сетевое представление
  30. * используется кросс-платформенным кодом на C++
  31. * хозяин (определённая платформа)
  32. * опрашивает гостя на наличие ожидающих выполнение запросов
  33. * обрабатывает их
  34. * сообщает результат гостю
  35. [Пример выбора узла сцены][osgcpe-05] оказался простым и не создал особых проблем.
  36. **Изменение в работе с зависимостями**
  37. Больше года нам приходилось жить со следующими [недостатками][osg-shortcomings]
  38. сборки OpenSceneGraph официальными средствами:
  39. * проблемы сборки под macOS ввиду использования определённых флагов сборки
  40. * обход механизмов проверки зависимостей для использования PNG на Android
  41. * принадлежность сборок iOS под симулятор и устройство к разным проектам Xcode
  42. * ожидания в 20-30 минут для сборки OpenSceneGraph
  43. Эти недостатки замедляли нас и усложняли разработку новых примеров. После того,
  44. как мы десятый раз столкнулись с указанными проблемами в этом месяце, мы решили
  45. исправить их раз и навсегда. Теперь мы собираем OpenSceneGraph как часть каждого
  46. примера за 2-3 минуты без какой-либо магии. Также мы использовали этот подход
  47. включения зависимости как части каждого примера для остальных библиотек вроде
  48. Mongoose и libpng-android.
  49. Теперь без этих препятствий мы можем разрабатывать быстрее. Это значительно
  50. облегчит создание следующей технической демонстрации Mahjong 2!
  51. На этом мы заканчиваем описание двух новых кросс-платформенных примеров
  52. OpenSceneGraph и изменения в работе с зависимостями.
  53. [screenshot]: {attach}/images/2018-08-21-examples-and-dependencies.png
  54. [article-2018-june]: {filename}/articles/2018-06-27-example-driven-development.md
  55. [osgcpe-03]: https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/03.HTTPClient
  56. [osgcpe-04]: https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/04.RemoteDebugging
  57. [osgcpe-05]: https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/05.NodeSelection
  58. [osg-shortcomings]: http://forum.openscenegraph.org/viewtopic.php?t=17443