{"id":284665,"date":"2017-04-09T13:20:02","date_gmt":"2017-04-09T09:20:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=284665"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=284665","title":{"rendered":"\u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 PureQML"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/7e0\/1f8\/1ea\/7e01f81ea88f473a8f07bcdeaaaa8a90.png\"\/><\/p>\n<h2>\u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435<\/h2>\n<p>  \u041d\u0435\u0434\u0430\u0432\u043d\u043e \u043c\u044b \u043e\u0442\u043a\u0440\u044b\u043b\u0438\u0441\u044c \u043c\u0438\u0440\u0443 (\u0441\u043e\u0432\u0435\u0440\u0448\u0438\u043b\u0438 coming out, \u0442\u0430\u043a \u0441\u043a\u0430\u0437\u0430\u0442\u044c) \u0438 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b\u0438 <a href=\"https:\/\/habrahabr.ru\/post\/325318\/\">\u0441\u0442\u0430\u0442\u044c\u044e<\/a> \u043f\u0440\u043e \u043d\u0430\u0448 \u0441\u043a\u0440\u043e\u043c\u043d\u044b\u0439 <a href=\"http:\/\/pureqml.com\/\">\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a<\/a> (\u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u043d\u0430 <a href=\"https:\/\/github.com\/pureqml\/qmlcore\">GitHub<\/a>). \u041f\u043e\u0441\u043b\u0435 \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u0432\u0448\u0438\u043c\u0438\u0441\u044f \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c\u0438 (\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0438\u043c \u0441\u043f\u0430\u0441\u0438\u0431\u043e!) \u043c\u044b \u043f\u0440\u0438\u0448\u043b\u0438 \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u0434\u043b\u044f \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u044f \u0442\u0435\u043c\u044b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043e\u0434\u043e\u0431\u0438\u0435 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430 \u043d\u0430 \u043a\u0430\u043a\u043e\u043c-\u043d\u0438\u0431\u0443\u0434\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435. \u041d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0435\u0441\u0442\u044c <a href=\"http:\/\/pureqml.com\/lessons\">\u0440\u0430\u0437\u0434\u0435\u043b \u0441 \u0443\u0440\u043e\u043a\u0430\u043c\u0438<\/a>, \u043d\u043e \u044d\u0442\u0438 \u0443\u0440\u043e\u043a\u0438 \u0441\u043a\u043e\u0440\u0435\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043d\u0435\u0436\u0435\u043b\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u0443 \u0432 \u0446\u0435\u043b\u043e\u043c. \u0412\u043e\u0442 \u043f\u043e\u0447\u0435\u043c\u0443 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0433\u0430\u0439\u0434. \u0414\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u0438, \u043f\u043e \u0448\u0430\u0433\u0430\u043c \u043e\u043f\u0438\u0448\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e, \u043d\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e, \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0438\u0437 \u0432\u0435\u0431\u0430 \u0432 SmartTV. \u0418 \u0434\u0430, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u044d\u0442\u043e\u0433\u043e \u0433\u0430\u0439\u0434\u0430 \u0443\u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432 <a href=\"https:\/\/us.lgappstv.com\/appspc\/main\/main\/main.lge\">LG Smart World<\/a> \u0434\u043b\u044f \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u043e\u0432 \u043d\u0430 \u0431\u0430\u0437\u0435 WebOS (\u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u044d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044e \u00abEarth Online\u00bb). \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0440\u043e\u0432\u043d\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u0436\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u043d\u044b\u0445 \u0438 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432.<\/p>\n<p>  <a name=\"habracut\"><\/a><\/p>\n<h2>\u0418\u0434\u0435\u044f<\/h2>\n<p>  \u0418\u0434\u0435\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0430: \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0432\u0438\u0434\u044b \u0417\u0435\u043c\u043b\u0438 \u0441 \u0431\u043e\u0440\u0442\u0430 \u041c\u041a\u0421 (\u0437\u0430 \u044d\u0442\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0434\u043e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u0438\u0442\u044c NASA, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e, \u043f\u0440\u043e\u0435\u043a\u0442 <a href=\"https:\/\/eol.jsc.nasa.gov\/ESRS\/HDEV\/\">High Definition Earth-Viewing System<\/a>). \u041f\u043e\u043c\u0438\u043c\u043e \u0432\u0438\u0434\u0435\u043e, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u041c\u041a\u0421 \u043d\u0430\u0434 \u0417\u0435\u043c\u043b\u0435\u0439. \u0414\u043b\u044f \u044d\u0442\u0438\u0445 \u0446\u0435\u043b\u0435\u0439 \u043c\u044b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u043c <a href=\"http:\/\/wheretheiss.at\/w\/developer\">Where the ISS at?<\/a>. \u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c!<\/p>\n<h2>\u041d\u0430\u0447\u0430\u043b\u043e<\/h2>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0430\u043f\u043a\u0443 \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430:<\/p>\n<pre><code class=\"bash\">$ mkdir earth-online $ cd earth-online <\/code><\/pre>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u043d\u0443\u0436\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c <a href=\"https:\/\/github.com\/pureqml\/qmlcore\">qmlcore<\/a> \u0432 \u043f\u0430\u043f\u043a\u0443 \u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c. \u041c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u0438 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0438\u043b\u0438 \u0441\u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e GIT:<\/p>\n<pre><code class=\"bash\">$ git clone git@github.com:pureqml\/qmlcore.git <\/code><\/pre>\n<p>  \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u043c\u0435\u043d\u044c\u0448\u0435 \u043f\u0438\u0441\u0430\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438, \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u043a\u0430\u0440\u043a\u0430\u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"bash\">$ qmlcore\/build --boilerplate<\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u043f\u0430\u043f\u043a\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0434\u0432\u0430 \u043d\u043e\u0432\u044b\u0445 \u0444\u0430\u0439\u043b\u0430:<\/p>\n<ul>\n<li><b>src\/app.qml<\/b> \u2014 PureQML \u043a\u043e\u0434 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f <\/li>\n<li><b>.manifest<\/b> \u2014 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/li>\n<\/ul>\n<p>  \u041f\u0430\u043f\u043a\u0430 <i>src<\/i> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f qml \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/p>\n<p>  \u0412 <i>app.qml<\/i>, \u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a\u043e\u0439 \u043a\u043e\u0434:<\/p>\n<pre><code>Item { \tanchors.fill: context; \/\/ \u0440\u0430\u0441\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u043c Item \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c \u0432\u0441\u0435\u0433\u043e \u043e\u043a\u043d\u0430 } <\/code><\/pre>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443:<\/p>\n<pre><code class=\"bash\">$ qmlcore\/build<\/code><\/pre>\n<p>  \u0438 \u0435\u0441\u043b\u0438 \u0432\u0441\u0435 \u043f\u0440\u043e\u0448\u043b\u043e \u0443\u0441\u043f\u0435\u0448\u043d\u043e, \u0442\u043e \u0432 \u043f\u0430\u043f\u043a\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043d\u043e\u0432\u0430\u044f \u043f\u0430\u043f\u043a\u0430 <i>build.web<\/i> \u0441 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438.<\/p>\n<pre><code class=\"bash\">$ ls build.web\/ flashlsChromeless.swf  index.html  modernizr-custom.js  qml.app.min.js <\/code><\/pre>\n<p>  \u041d\u0430 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u043e\u0442\u0432\u043b\u0435\u0447\u0435\u043c\u0441\u044f \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u0437\u0430 \u0444\u0430\u0439\u043b\u044b:<\/p>\n<ul>\n<li><b>index.html<\/b> \u2014 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0430\u044f html-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 <\/li>\n<li><b>qml.app.min.js<\/b> \u2014 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 js \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0432 index.html <\/li>\n<li><b>modernizr-custom.js<\/b> \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 <a href=\"https:\/\/modernizr.com\/\">modernizr<\/a> \u0444\u0430\u0439\u043b<\/li>\n<li><b>flashlsChromeless.swf<\/b> \u2014 \u0444\u0430\u0439\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u0432\u0438\u0434\u0435\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u043b\u0435\u0448\u0430 (\u0431\u0443\u044d), \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u043d \u043d\u0435 \u043d\u0443\u0436\u0435\u043d, \u043d\u043e \u043e\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u044b web \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b.<\/li>\n<\/ul>\n<p>  <\/p>\n<h2>Controls<\/h2>\n<p>  \u041f\u043e\u043c\u0438\u043c\u043e qmlcore, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0439 \u0438 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0435\u0441\u0442\u044c \u0435\u0449\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c <a href=\"https:\/\/github.com\/pureqml\/controls\">controls<\/a>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0430\u0439\u0434\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e. \u0414\u043b\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f \u0435\u0433\u043e \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 <i>src<\/i> \u043f\u0430\u043f\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438\u043b\u0438 \u0441\u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c:<\/p>\n<pre><code class=\"bash\">$ cd src $ git clone git@github.com:pureqml\/controls.git <\/code><\/pre>\n<p>  \u0414\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043a\u0430\u043a \u0440\u0430\u0437 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043e\u0434\u0438\u043d \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0438\u0437 controls, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0438\u0433\u0440\u0430\u0442\u044c live stream \u0432\u0438\u0434\u0435\u043e \u0441 youtube, \u043e\u043d \u0442\u0430\u043a \u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u2014 YouTube. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0435\u0433\u043e \u0432 <i>app.qml<\/i>:<\/p>\n<pre><code>Item { \tanchors.fill: context; \/\/ \u0440\u0430\u0441\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u043c Item \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c \u0432\u0441\u0435\u0433\u043e \u043e\u043a\u043d\u0430  \tYouTube { \t\tanchors.fill: parent; \t\tsource: &quot;https:\/\/www.youtube.com\/embed\/ddFvjfvPnqk?autoplay=1&controls=0&showinfo=0&quot;; \t} } <\/code><\/pre>\n<p>  \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435, \u0435\u0441\u043b\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u044c Index.html \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0432\u0438\u0434\u0435\u043e \u0441 \u041c\u041a\u0421:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/146\/e5b\/e11\/146e5be1191e45aeb602e2cfbf8a5896.png\"\/><\/p>\n<h2>\u041a\u0430\u0440\u0442\u0430<\/h2>\n<p>  \u0421 \u0432\u0438\u0434\u0435\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044e \u0441\u0442\u0430\u043d\u0446\u0438\u0438. \u0422\u0430\u043a \u043a\u0430\u043a \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0441\u0442\u0430\u043d\u0446\u0438\u0438 \u043d\u0430\u0434 \u0417\u0435\u043c\u043b\u0435\u0439, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0441 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u043e\u0439 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043b\u0430\u043d\u0435\u0442\u044b \u0438 \u0434\u0432\u0438\u0433\u0430\u0442\u044c \u0442\u043e\u0447\u043a\u0443 \u043f\u043e \u043d\u0435\u0439 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c (\u0445\u043e\u0442\u044f \u0432 controls \u0435\u0441\u0442\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 YandexMap \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u0430\u0440\u0442\u0430\u043c\u0438).<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/31d\/1a0\/7b3\/31d1a07b3bab42e6b0a8d604aaed59ea.png\"\/><\/p>\n<p>  \u041c\u044b \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0441 \u043a\u0430\u0440\u0442\u043e\u0439 \u0417\u0435\u043c\u043b\u0438. \u0427\u0442\u043e\u0431\u044b \u043d\u0430\u0448\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430, \u0438\u043b\u0438 \u043b\u044e\u0431\u044b\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u043f\u043e\u043f\u0430\u043b\u0438 \u0432 \u0441\u0431\u043e\u0440\u043a\u0443, \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u0430\u043f\u043a\u0443 \u0432 \u043a\u043e\u0440\u043d\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u2014 <i>dist<\/i>:<\/p>\n<pre><code class=\"bash\">$ mkdir dist<\/code><\/pre>\n<p>  \u0412\u0441\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u044d\u0442\u043e\u0439 \u043f\u0430\u043f\u043a\u0438 \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u0432 <i>build.web<\/i>. \u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432 <i>dist<\/i> \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0441 \u043a\u0430\u0440\u0442\u043e\u0439:<\/p>\n<pre><code class=\"bash\">$ mkdir dist\/res $ cp &lt;path-to-map-image&gt; dist\/res <\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u0442\u0435 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u0435\u0439\u0447\u0430\u0441, \u0442\u043e \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u043a\u0430\u043a \u0432 <i>build.web<\/i> \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043f\u0430\u043f\u043a\u0430 <i>res<\/i> \u0441 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u043e\u0439:<\/p>\n<pre><code class=\"bash\">$ ls build.web\/res\/ map.png <\/code><\/pre>\n<p>  \u041b\u043e\u0433\u0438\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u0430\u0440\u0442\u0430 \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0435, \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043d\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u043d\u0435\u0435 <i>IssMap.qml<\/i> \u0432 <i>src<\/i> \u0438 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434:<\/p>\n<pre><code>Item { \tanchors.fill: context;\t\/\/ \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u0440\u0430\u0441\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0432\u0435\u0441\u044c \u044d\u043a\u0440\u0430\u043d  \t\/\/ \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0441 \u043a\u0430\u0440\u0442\u043e\u0439 \tImage { \t\tanchors.fill: parent;\t\/\/ \u0440\u0430\u0441\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u043c \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f \t\tsource: &quot;res\/map.png&quot;;\t\/\/ \u043f\u0443\u0442\u044c \u043a \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0435 \t\tfillMode: Image.Stretch;\t\/\/ \u0442\u0438\u043f \u0437\u0430\u043b\u0438\u0432\u043a\u0438, Stretch \u0440\u0430\u0441\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442 \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c Image  \t\t\/\/ \u0442\u043e\u0447\u043a\u0430 \u0434\u043b\u044f \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0441\u0442\u0430\u043d\u0446\u0438\u0438 \t\tRectangle { \t\t\tid: station;\t\t\/\/ id, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0435 \t\t\twidth: 30; \t\t\theight: width;\t\t\/\/ \u0432\u044b\u0441\u043e\u0442\u0430 \u0440\u0430\u0432\u043d\u0430 \u0448\u0438\u0440\u0438\u043d\u0435 \t\t\tradius: width \/ 2;\t\/\/ \u0440\u0430\u0434\u0438\u0443\u0441, \u0447\u0442\u043e\u0431\u044b \u0441\u043a\u0440\u0443\u0433\u043b\u0438\u0442\u044c \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a \u0434\u043e \u043a\u0440\u0443\u0433\u0430 \t\t\tvisible: false;\t\t\/\/ \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0442\u043e\u0447\u043a\u0443 \u043d\u0435 \u0432\u0438\u0434\u043d\u043e \t\t\tcolor: &quot;red&quot;; \t\t} \t}  \t\/\/ \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0442\u043e\u0447\u043a\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0434\u043e\u043b\u0433\u043e\u0442\u0435 long \u0438 \u0448\u0438\u0440\u043e\u0442\u0435 lat \tsetPos(long, lat): { \t\t\/\/ \u0434\u0435\u043b\u0430\u0435\u043c \u0442\u043e\u0447\u043a\u0443 \u0432\u0438\u0434\u0438\u043c\u043e\u0439 \t\tstation.visible = true  \t\t\/\/ \u0432\u0441\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0437 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \t\t\/\/ \u0448\u0438\u0440\u043e\u0442\u044b, \u0434\u043e\u043b\u0433\u043e\u0442\u044b \u0432 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043a\u0430\u0440\u0442\u044b \t\tstation.x = (long + 180) * this.width \/ 360 - (this.width \/ 28.4) \t\tstation.y = (90 - lat) * this.height \/ 180 + (this.height \/ 19.45) \t} } <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0441\u0442\u0430\u043d\u0446\u0438\u0438 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u043e\u0447\u043a\u0443 \u0432 \u043d\u0443\u0436\u043d\u0443\u044e \u043f\u043e\u0437\u0438\u0446\u0438\u044e. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f <a href=\"http:\/\/wheretheiss.at\/w\/developer\">API<\/a>, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u043e\u0441\u044c \u0432\u044b\u0448\u0435.<\/p>\n<p>  \u0414\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f HTTP \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 controls \u0435\u0441\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 Request, \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043d\u0430 \u0435\u0433\u043e \u0431\u0430\u0437\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b \u0434\u043b\u044f \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0432 \u0444\u0430\u0439\u043b\u0435 <i>IssRequest.qml<\/i> \u0432 \u043f\u0430\u043f\u043a\u0435 <i>src<\/i>:<\/p>\n<pre><code>Request { \t\/\/ \u043c\u0435\u0442\u043e\u0434 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \t\/\/ callback - \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \tcall(callback): { \t\tthis.ajax({ \t\t\turl: &quot;https:\/\/api.wheretheiss.at\/v1\/satellites\/25544&quot;, \t\t\tdone: callback, \t\t\twithCredentials: true \t\t}) \t} } <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u0441\u043b\u043e\u0436\u0438\u0442\u044c \u0432\u0441\u0435 \u0432 \u043e\u0434\u043d\u043e \u043c\u0435\u0441\u0442\u043e \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0435 \u0442\u0435\u043a\u0441\u0442 \u0441 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c \u0441\u0442\u0430\u043d\u0446\u0438\u0438. \u041d\u0430\u0437\u043e\u0432\u0435\u043c \u044d\u0442\u043e\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b <a href=\"https:\/\/en.wikipedia.org\/wiki\/On-screen_display\">OSD<\/a> \u0438 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0444\u0430\u0439\u043b <i>Osd.qml<\/i> \u0441 \u043a\u043e\u0434\u043e\u043c:<\/p>\n<pre><code>\/\/ WebItem - \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 Item \/\/ \u043d\u043e \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c hover \u0438 click \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0443 \u043c\u044b\u0448\u0438 WebItem { \tproperty bool active: false;\t\/\/ \u043e\u0431\u044a\u044f\u0432\u0438\u043c bool \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e - \u0444\u043b\u0430\u0433 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f OSD \tanchors.fill: parent; \topacity: active ? 1.0 : 0.0;\t\/\/ \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0444\u043b\u0430\u0433\u0430 active  \t\/\/ \u0438\u043d\u0441\u0442\u0430\u043d\u0446\u0438\u0438\u0440\u0443\u0435\u043c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \tIssRequest { id: request; }  \t\/\/ \u0438\u043d\u0441\u0442\u0430\u043d\u0446\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u0448\u0443 \u043a\u0430\u0440\u0442\u0443 \u0438\u0437 IssMap.qml \tIssMap { id: map; }  \t\/\/ \u0442\u0435\u043a\u0441\u0442 \u043e \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0417\u0435\u043c\u043b\u0438 (\u043d\u0430 \u0442\u0435\u043c\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0438\u043b\u0438 \u043e\u0441\u0432\u0435\u0449\u0435\u043d\u043d\u043e\u0439) \t\/\/ \u043f\u0440\u0438\u0436\u0438\u043c\u0430\u0435\u043c \u043a \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e \tText { \t\tid: visibilityText; \t\tanchors.right: parent.right; \t\tanchors.bottom: parent.bottom; \t\tanchors.margins: 10; \t\tfont.pixelSize: 24; \t\tcolor: &quot;#fff&quot;; \t\ttext: &quot;Earth visibility: -&quot;; \t}  \t\/\/ \u0442\u0435\u043a\u0441\u0442 \u0441 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438: \u0434\u043e\u043b\u0433\u043e\u0442\u043e\u0439 \u0438 \u0448\u0438\u0440\u043e\u0442\u043e\u0439 \t\/\/ \u0442\u0435\u043a\u0441\u0442 \u043f\u0440\u0438\u0436\u0438\u043c\u0430\u0435\u043c \u043a \u043b\u0435\u0432\u043e\u043c\u0443 \u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e \tText { \t\tid: positionText; \t\tanchors.left: parent.left; \t\tanchors.bottom: parent.bottom; \t\tanchors.margins: 10; \t\tfont.pixelSize: 24; \t\tcolor: &quot;#fff&quot;; \t\ttext: &quot;Lon: -&lt;br&gt;Lat: -&quot;;\t\/\/ \u0432 \u0442\u0435\u043a\u0441\u0442 \u043c\u043e\u0436\u043d\u043e \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c html \u0442\u0435\u0433\u0438 \t}  \t\/\/ \u0442\u0430\u0439\u043c\u0435\u0440 \u0434\u043b\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \tTimer { \t\trunning: parent.active;\t\/\/ \u0442\u0430\u0439\u043c\u0435\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u043a\u0430 \u0430\u043a\u0442\u0438\u0432\u0435\u043d OSD \t\ttriggeredOnStart: true;\t\/\/ \u0442\u0430\u0439\u043c\u0435\u0440 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \t\tinterval: 10000;\t\/\/ \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f 10 \u0441\u0435\u043a\u0443\u043d\u0434 \t\trepeat: true;\t\t\/\/ \u0442\u0430\u0439\u043c\u0435\u0440 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442\u0441\u044f  \t\t\/\/ \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f, \u0437\u043e\u0432\u0435\u043c \u043c\u0435\u0442\u043e\u0434 updatePositionRequest \t\tonTriggered: { this.parent.updatePositionRequest() } \t}  \t\/\/ \u0434\u0435\u043b\u0430\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0441\u043f\u0435\u0445\u0430 \u043f\u0430\u0440\u0441\u0438\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \t\/\/ \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c \u0435\u0433\u043e \u0432 doUpdatePosition \tupdatePositionRequest: { \t\tvar self = this \t\trequest.call(function(res) { \t\t\tvar data = JSON.parse(res.target.response) \t\t\tif (data) \t\t\t\tself.doUpdatePosition(data) \t\t\telse \t\t\t\tlog(&quot;Request error&quot;) \t\t}) \t}  \t\/\/ \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \tdoUpdatePosition(data): { \t\tvar long = parseFloat(data.longitude) \/\/ \u0434\u043e\u043b\u0433\u043e\u0442\u0430 \t\tvar lat = parseFloat(data.latitude) \/\/ \u0448\u0438\u0440\u043e\u0442\u0430 \t\t\/\/ \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0442\u0435\u043a\u0441\u0442 \u0441 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438 \u0441\u0442\u0430\u043d\u0446\u0438\u0438 \t\tpositionText.text = &quot;Lon: &quot; + Number((long).toFixed(1)) + &quot;&lt;br&gt;Lat: &quot; + Number((lat).toFixed(1)) \t\t\/\/ \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0442\u0435\u043a\u0441\u0442 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 data.visibility \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 'eclipsed' \u0438\u043b\u0438 'daylight' \t\tvisibilityText.text = &quot;Earth visibility: &quot; + data.visibility  \t\tmap.setPos(long, lat) \/\/ \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0441\u0442\u0430\u043d\u0446\u0438\u0438 \u043a\u0430\u0440\u0442\u0435 \t}  \t\/\/ \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u043c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e \u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438 \t\/\/ \u0432\u0440\u0435\u043c\u044f \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 300 \u043c\u0441 \tBehavior on opacity { Animation { duration: 300; } } } <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c OSD \u0432 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043f\u043e\u0432\u0435\u0440\u0445 \u0432\u0438\u0434\u0435\u043e \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0435\u0433\u043e, \u0441\u043a\u0430\u0436\u0435\u043c, \u043f\u043e \u043a\u043b\u0438\u043a\u0443 \u043c\u044b\u0448\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0438 \u0442\u0430\u043a\u0436\u0435 (\u043f\u043e \u043a\u043b\u0438\u043a\u0443) \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0442\u044c. \u0422\u0435\u043f\u0435\u0440\u044c <i>app.qml<\/i> \u043f\u0440\u0438\u043c\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u0438\u0434:<\/p>\n<pre><code>Item { \tanchors.fill: context;  \tYoutube { \t\tanchors.fill: parent; \t\tsource: &quot;https:\/\/www.youtube.com\/embed\/ddFvjfvPnqk?autoplay=1&controls=0&showinfo=0&quot;; \t}  \tOsd { \t\t\/\/ \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043a\u043b\u0438\u043a\u0430 \u043c\u044b\u0448\u0438 \t\t\/\/ \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u0444\u043b\u0430\u0433 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f OSD \u043f\u043e \u043a\u043b\u0438\u043a\u0443 \t\tonClicked: { this.active = !this.active } \t} } <\/code><\/pre>\n<p>  \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442, \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 <i>build.web\/index.html<\/i>, \u043a\u043b\u0438\u043a\u0430\u0435\u043c \u043f\u043e \u044d\u043a\u0440\u0430\u043d\u0443 \u0438 OSD \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0435\u0439 \u043f\u043e \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438!<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/ea2\/7a4\/75b\/ea27a475b3be471a8d3d21fac007d647.png\"\/><\/p>\n<h2>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u0448\u0442\u0440\u0438\u0445\u0438<\/h2>\n<p>  \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0432\u043d\u0435\u0441\u0442\u0438 \u0435\u0449\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435: \u0431\u044b\u043b\u043e \u0431\u044b \u0437\u0434\u043e\u0440\u043e\u0432\u043e, \u0435\u0441\u043b\u0438 \u0431\u044b \u0442\u0435\u043a\u0441\u0442 \u0441 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438 \u0431\u044b\u043b \u0432\u044b\u0440\u043e\u0432\u043d\u0435\u043d:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/fc2\/db3\/b04\/fc2db3b04a8540709193e81c2b890e9a.png\" \/><\/div>\n<p>  \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u043d\u0438\u0431\u0443\u0434\u044c <a href=\"https:\/\/en.wikipedia.org\/wiki\/Monospaced_font\">monospace<\/a> \u0448\u0440\u0438\u0444\u0442.<\/p>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0448\u0440\u0438\u0444\u0442, \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0439 <i>index.html<\/i> \u0444\u0430\u0439\u043b. \u041f\u043e\u043c\u043d\u0438\u0442\u0435, \u043a\u0430\u043a \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u043f\u0430\u043f\u043a\u0443 <i>dist<\/i>, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0432 <i>build.web<\/i> \u043f\u043e\u0441\u043b\u0435 \u0441\u0431\u043e\u0440\u043a\u0438? \u0412\u0430\u0436\u043d\u044b\u043c \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u043e\u0442 \u0444\u0430\u043a\u0442, \u0447\u0442\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0441\u043b\u0435 \u0441\u0431\u043e\u0440\u043a\u0438, \u0438 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c <i>index.html<\/i>. \u0417\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 <i>index.html<\/i>:<\/p>\n<pre><code class=\"bash\">$ cp build.web\/index.html dist<\/code><\/pre>\n<p>  \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043b\u0438\u043d\u043a \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 <a href=\"https:\/\/fonts.google.com\/specimen\/Space+Mono\">\u0448\u0440\u0438\u0444\u0442<\/a>. \u041f\u043e\u0441\u043b\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u0440\u0430\u0432\u043e\u043a <i>dist\/index.html<\/i> \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0432\u043e\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code>&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; \t&lt;title&gt;&lt;\/title&gt; \t&lt;meta charset=&quot;utf-8&quot;&gt; \t&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1, maximum-scale=1&quot;&gt; \t&lt;link href=&quot;https:\/\/fonts.googleapis.com\/css?family=Space+Mono&quot; rel=&quot;stylesheet&quot; type='text\/css'&gt; \t&lt;script src=&quot;modernizr-custom.js&quot;&gt;&lt;\/script&gt; &lt;\/head&gt; &lt;body style=&quot;font-family: \u2019Space Mono\u2019&quot;&gt; \t&lt;script src=&quot;qml.app.min.js&quot;&gt;&lt;\/script&gt; &lt;\/body&gt; &lt;\/html&gt; <\/code><\/pre>\n<p>  \u0422\u0435\u043a\u0441\u0442 \u0441 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c\u0438 \u043f\u0440\u0438\u043c\u0435\u0442 \u0432\u043e\u0442 \u0442\u0430\u043a\u043e\u0439 \u0432\u0438\u0434:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/5d6\/fba\/6a7\/5d6fba6a7b98476b9ae8ededa6d27c25.png\" \/><\/div>\n<p>  <\/p>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>  \u041a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u044d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430, \u043d\u043e \u0434\u0430\u0435\u0442 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u043d\u0435\u043f\u0440\u0438\u043d\u0443\u0436\u0434\u0435\u043d\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c single page \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 QML, \u043a\u043e\u0434 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 SmartTV \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b.<\/p>\n<h2>\u0421\u0441\u044b\u043b\u043a\u0438<\/h2>\n<p>  <\/p>\n<ul>\n<li> <a href=\"https:\/\/eol.jsc.nasa.gov\/ESRS\/HDEV\/\">High Definition Earth-Viewing System<\/a> \u2014 \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438 \u0441 \u041c\u041a\u0421 <\/li>\n<li> <a href=\"http:\/\/wheretheiss.at\/w\/developer\">Where the ISS at?<\/a> \u2014 \u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 API \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442 \u0441\u0442\u0430\u043d\u0446\u0438\u0438 <\/li>\n<li> <a href=\"https:\/\/github.com\/pureqml\/earth-online\">earth-online<\/a> \u2014 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0433\u0430\u0439\u0434\u0430 <\/li>\n<li> <a href=\"http:\/\/pureqml.com\">PureQML<\/a> \u2014 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 PureQML <\/li>\n<\/ul>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habrahabr.ru\/post\/326006\/\"> https:\/\/habrahabr.ru\/post\/326006\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/7e0\/1f8\/1ea\/7e01f81ea88f473a8f07bcdeaaaa8a90.png\"\/><\/p>\n<h2>\u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435<\/h2>\n<p>  \u041d\u0435\u0434\u0430\u0432\u043d\u043e \u043c\u044b \u043e\u0442\u043a\u0440\u044b\u043b\u0438\u0441\u044c \u043c\u0438\u0440\u0443 (\u0441\u043e\u0432\u0435\u0440\u0448\u0438\u043b\u0438 coming out, \u0442\u0430\u043a \u0441\u043a\u0430\u0437\u0430\u0442\u044c) \u0438 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b\u0438 <a href=\"https:\/\/habrahabr.ru\/post\/325318\/\">\u0441\u0442\u0430\u0442\u044c\u044e<\/a> \u043f\u0440\u043e \u043d\u0430\u0448 \u0441\u043a\u0440\u043e\u043c\u043d\u044b\u0439 <a href=\"http:\/\/pureqml.com\/\">\u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a<\/a> (\u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u043d\u0430 <a href=\"https:\/\/github.com\/pureqml\/qmlcore\">GitHub<\/a>). \u041f\u043e\u0441\u043b\u0435 \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u0432\u0448\u0438\u043c\u0438\u0441\u044f \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c\u0438 (\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0438\u043c \u0441\u043f\u0430\u0441\u0438\u0431\u043e!) \u043c\u044b \u043f\u0440\u0438\u0448\u043b\u0438 \u043a \u0432\u044b\u0432\u043e\u0434\u0443, \u0447\u0442\u043e \u0434\u043b\u044f \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u044f \u0442\u0435\u043c\u044b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043e\u0434\u043e\u0431\u0438\u0435 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b\u0430 \u043d\u0430 \u043a\u0430\u043a\u043e\u043c-\u043d\u0438\u0431\u0443\u0434\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435. \u041d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0435\u0441\u0442\u044c <a href=\"http:\/\/pureqml.com\/lessons\">\u0440\u0430\u0437\u0434\u0435\u043b \u0441 \u0443\u0440\u043e\u043a\u0430\u043c\u0438<\/a>, \u043d\u043e \u044d\u0442\u0438 \u0443\u0440\u043e\u043a\u0438 \u0441\u043a\u043e\u0440\u0435\u0435 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043d\u0435\u0436\u0435\u043b\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u0443 \u0432 \u0446\u0435\u043b\u043e\u043c. \u0412\u043e\u0442 \u043f\u043e\u0447\u0435\u043c\u0443 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0433\u0430\u0439\u0434. \u0414\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u0438, \u043f\u043e \u0448\u0430\u0433\u0430\u043c \u043e\u043f\u0438\u0448\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e, \u043d\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e, \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0438\u0437 \u0432\u0435\u0431\u0430 \u0432 SmartTV. \u0418 \u0434\u0430, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u044d\u0442\u043e\u0433\u043e \u0433\u0430\u0439\u0434\u0430 \u0443\u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432 <a href=\"https:\/\/us.lgappstv.com\/appspc\/main\/main\/main.lge\">LG Smart World<\/a> \u0434\u043b\u044f \u0442\u0435\u043b\u0435\u0432\u0438\u0437\u043e\u0440\u043e\u0432 \u043d\u0430 \u0431\u0430\u0437\u0435 WebOS (\u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u044d\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044e \u00abEarth Online\u00bb). \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0440\u043e\u0432\u043d\u043e \u0442\u0430\u043a\u043e\u0433\u043e \u0436\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u043d\u044b\u0445 \u0438 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-284665","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/284665","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=284665"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/284665\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=284665"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=284665"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=284665"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}