Files
ogs-site/ru/news/examples-and-dependencies.html

156 linhas
8.3 KiB
HTML
Original Anotar Histórico

Este arquivo contém caracteres Unicode ambíguos

Este arquivo contém caracteres Unicode que podem ser confundidos com outros caracteres. Se você acha que isso é intencional, pode ignorar esse aviso com segurança. Use o botão Escapar para revelá-los

<!DOCTYPE html>
<html>
<meta charset="utf-8">
<head>
<style>
#header
{
background: #2BA6E3;
padding: 0.7em;
text-align: left;
}
#header a
{
color: white;
text-decoration: none;
padding: 0.5em 1em 0.5em 1em;
}
.news_item
{
background: #FFFFFF;
width: 720px;
padding: 1em;
margin-top: 2em;
margin-bottom: 2em;
border: 1px solid #E0E0E0;
text-align: left;
}
.news_item_contents
{
color: #444;
line-height: 1.5em;
}
.news_item_date
{
margin-bottom: 2em;
color: #aaa;
}
body
{
background: #FAFAFA;
}
code, pre
{
font-family: monospace, serif;
font-size: 1em;
color: #7f0a0c;
}
figure
{
margin: 0px;
padding: 0px;
}
img
{
width: 720px;
}
html
{
font-family: sans-serif;
}
a
{
color: #3A91CB;
text-decoration: none;
}
#lang
{
float: right;
}
figcaption
{
color: #aaa;
}
table
{
border-collapse: collapse;
}
table, th, td
{
border: 1px solid #aaa;
padding: 0.5em;
margin-top: 0.5em;
margin-bottom: 0.5em;
}
</style>
</head>
<body>
<center>
<div id="header">
<a href="../../ru/news/index.html">Новости</a>
<a href="../../ru/page/games.html">Игры</a>
<a href="../../ru/page/about.html">О нас</a>
<div id="lang">
<a href="../../en/news/examples-and-dependencies.html">EN</a>
<a href="examples-and-dependencies.html">RU</a>
</div>
</div>
<h1>В новостях</h1>
<div class="news_item">
<h2 class="news_item_title">
<a href="examples-and-dependencies.html">Примеры и зависимости</a>
</h2>
<p class="news_item_date">
2018-08-21 00:00
</p>
<div class="news_item_contents">
<figure>
<img src="../../images/2018-08-21-examples-and-dependencies.png" alt="Облако" /><figcaption>Облако</figcaption>
</figure>
<p>Эта статья описывает два новых кросс-платформенных примера OpenSceneGraph и изменение в работе с зависимостями.</p>
<p><strong>Примеры клиента HTTP и выбора узла сцены</strong></p>
<p>После окончания работы над <a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/04.RemoteDebugging">примером удалённой отладки</a> и <a href="example-driven-development.html">сообщения об этом</a> мы с удивлением обнаружили, что безопасное соединение HTTPS между отлаживаемым приложением и брокером отладки работало лишь в веб-версии примера. Десктопная и мобильная версии работали лишь с помощью обычного соединения HTTP.</p>
<p>Т.к. текущая схема отладки не имеет авторизации, отладка по обычному соединению HTTP не несёт никаких проблем. Однако, если мы хотим получить доступ к ресурсам, расположенным на популярных сайтах вроде GitHub и BitBucket, мы обязаны поддерживать HTTPS.</p>
<p>Необходимость поддержки HTTPS на каждой платформе побудила нас создать <a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/03.HTTPClient">пример клиента HTTP</a>. Оказалось, что каждая платформа имеет собственные правила по работе с HTTPS:</p>
<ul>
<li>веб (Emscripten) предоставляет Fetch API</li>
<li>десктоп может использовать Mongoose с OpenSSL</li>
<li>Android предоставляет HttpUrlConnection в языке Java</li>
<li>iOS предоставляет NSURLSession в языке Objective-C</li>
</ul>
<p>Необходимость поддержки разных языков на разных платформах привела к созданию так называемого шаблона “хозяин-гость”:</p>
<ul>
<li>гость (не привязан к платформе)
<ul>
<li>имеет сетевое представление</li>
<li>используется кросс-платформенным кодом на C++</li>
</ul></li>
<li>хозяин (определённая платформа)
<ul>
<li>опрашивает гостя на наличие ожидающих выполнение запросов</li>
<li>обрабатывает их</li>
<li>сообщает результат гостю</li>
</ul></li>
</ul>
<p><a href="https://github.com/OGStudio/openscenegraph-cross-platform-examples/tree/master/05.NodeSelection">Пример выбора узла сцены</a> оказался простым и не создал особых проблем.</p>
<p><strong>Изменение в работе с зависимостями</strong></p>
<p>Больше года нам приходилось жить со следующими <a href="http://forum.openscenegraph.org/viewtopic.php?t=17443">недостатками</a> сборки OpenSceneGraph официальными средствами:</p>
<ul>
<li>проблемы сборки под macOS ввиду использования определённых флагов сборки</li>
<li>обход механизмов проверки зависимостей для использования PNG на Android</li>
<li>принадлежность сборок iOS под симулятор и устройство к разным проектам Xcode</li>
<li>ожидания в 20-30 минут для сборки OpenSceneGraph</li>
</ul>
<p>Эти недостатки замедляли нас и усложняли разработку новых примеров. После того, как мы десятый раз столкнулись с указанными проблемами в этом месяце, мы решили исправить их раз и навсегда. Теперь мы собираем OpenSceneGraph как часть каждого примера за 2-3 минуты без какой-либо магии. Также мы использовали этот подход включения зависимости как части каждого примера для остальных библиотек вроде Mongoose и libpng-android.</p>
<p>Теперь без этих препятствий мы можем разрабатывать быстрее. Это значительно облегчит создание следующей технической демонстрации Mahjong 2!</p>
<p>На этом мы заканчиваем описание двух новых кросс-платформенных примеров OpenSceneGraph и изменения в работе с зависимостями.</p>
</div>
</div>
</center>
</body>
</html>