{"id":1230,"date":"2022-05-12T12:09:19","date_gmt":"2022-05-12T10:09:19","guid":{"rendered":"http:\/\/www.joanillo.org\/?p=1230"},"modified":"2022-05-12T12:44:13","modified_gmt":"2022-05-12T10:44:13","slug":"simular-el-posicionament-gps-problemes-en-el-desplegament-al-nuvol-ovh","status":"publish","type":"post","link":"https:\/\/www.joanillo.org\/?p=1230","title":{"rendered":"Simular el posicionament GPS (problemes en el desplegament al n\u00favol, OVH)"},"content":{"rendered":"<p><iframe width=\"400\" height=\"300\" src=\"\/\/www.youtube.com\/embed\/oP91cIbiITc?feature=player_detailpage\" frameborder=\"0\" allowfullscreen=\"\" class=\"aligncenter size-medium wp-image-1665\"><\/iframe>Tenim una <b>REST API<\/b> amb <b>MongoDB<\/b>. Tenim un front-end per generar posicions i gravar-les a la bd. I tenim un altre front-end per visualitzar les posicions i veure com van evolucionant.<\/p>\n<p>La part de generar les posicions i enviar-les al servidor de moment no \u00e9s una aplicaci\u00f3 m\u00f2bil, sin\u00f3 que \u00e9s una p\u00e0gina web. <b>Openlayers<\/b> t\u00e9 la possibilitat de fer <em>geolocation<\/em>, i per tant tenim una precisi\u00f3 molt bona (uns 15 m). No cal per tant una aplicaci\u00f3 m\u00f2bil. Ara b\u00e9, s&#8217;ha de fer amb https.<\/p>\n<p>(ref): https:\/\/stackoverflow.com\/questions\/39366758\/geolocation-without-ssl-connection:<\/p>\n<p><code>Warning by Chrome : getCurrentPosition() and watchPosition() no longer work on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS.<\/code><\/p>\n<p>Fins aqu\u00ed cap problema quan es desenvolupa localment (localhost). Per\u00f2 el problema est\u00e0 quan es desplega al servidor, en aquest cas un VPS a OVH. Per tant, la part de generar les posicions GPS ha d&#8217;anar al servidor OVH on hi ha instal\u00b7lat el certificat SSL. Ara b\u00e9, no es poden generar certificats per al domini <em>ovh.net<\/em> (es denega perqu\u00e8 s&#8217;han passat de la quota, l\u00f2gic). Aix\u00ed doncs, primer m&#8217;he hagut de registrar a <em>noip.com<\/em> i ara tinc el domini <em>jquintana.ddns.net<\/em>.<\/p>\n<p>Posar el MongoDB al servidor no ha tingut cap problema. El problema est\u00e0 en la API REST, feta amb <b>Express<\/b>. La API REST s&#8217;ha hagut de fer segura (<em>https<\/em>), doncs no podia ser que crid\u00e9ssim a la API des de <em>https<\/em>, i que aquest servidor respongu\u00e9s amb <em>http<\/em>. Aquest ha sigut el problema principal.<\/p>\n<p>Finalment la part del front-end de visualitzar les posicions no ha tingut especial problema. Les crides a la API <em>http:\/\/localhost:3000<\/em> s&#8217;han de canviar a les crides a la API https:\/\/jquintana.ddns.net:8080.<\/p>\n<p>En resum, tu pots tenir una aplicaci\u00f3 funcionant amb <em>localhost<\/em> sense especials problemes, i quan la vols desplegar al n\u00favol comencen els problemes de <em>CORS<\/em>, seguretat, protocols que no t&#8217;havies plantejat.<\/p>\n<p>Ara l&#8217;\u00faltim pas \u00e9s tenir un codi que funcioni igual de b\u00e9 a localhost i al n\u00favol, que aix\u00f2 en principi no ser\u00e0 problema. I la reflexi\u00f3 \u00e9s que quan desenvolupes un projecte, no s&#8217;ha d&#8217;esperar al final de tot a desplegar-lo a la infraestructura del n\u00favol. S&#8217;ha de fer ja en les primeres fases: \u00e9s el desplegament continu. Encara que l&#8217;aplicaci\u00f3 no tingui moltes funcionalitats, ja s&#8217;ha pogut afrontar tots els problemes de seguretat i infraestructura al provar de desplegar-ho en l&#8217;entorn real en les primeres fases. I aix\u00ed ens estalviem problemes al final del projecte.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tenim una REST API amb MongoDB. Tenim un front-end per generar posicions i gravar-les a la bd. I tenim un altre front-end per visualitzar les posicions i veure com van evolucionant. La part de generar les posicions i enviar-les al servidor de moment no \u00e9s una aplicaci\u00f3 m\u00f2bil, sin\u00f3 que \u00e9s una p\u00e0gina web. Openlayers [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[46,16,12,44,36,534],"tags":[],"_links":{"self":[{"href":"https:\/\/www.joanillo.org\/index.php?rest_route=\/wp\/v2\/posts\/1230"}],"collection":[{"href":"https:\/\/www.joanillo.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.joanillo.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.joanillo.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.joanillo.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1230"}],"version-history":[{"count":3,"href":"https:\/\/www.joanillo.org\/index.php?rest_route=\/wp\/v2\/posts\/1230\/revisions"}],"predecessor-version":[{"id":1240,"href":"https:\/\/www.joanillo.org\/index.php?rest_route=\/wp\/v2\/posts\/1230\/revisions\/1240"}],"wp:attachment":[{"href":"https:\/\/www.joanillo.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1230"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.joanillo.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1230"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.joanillo.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1230"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}