{"id":97620,"date":"2020-10-19T20:42:40","date_gmt":"2020-10-19T18:42:40","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/kak-my-vnedrili-sonarqube-i-osoznali-ego-bolshoj-potenczial"},"modified":"2020-10-19T20:42:40","modified_gmt":"2020-10-19T18:42:40","slug":"kak-my-vnedrili-sonarqube-i-osoznali-ego-bolshoj-potenczial","status":"publish","type":"post","link":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/kak-my-vnedrili-sonarqube-i-osoznali-ego-bolshoj-potenczial","title":{"rendered":"C\u00f3mo implementamos SonarQube y realizamos su gran potencial","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"C\u00f3mo implementamos SonarQube y realizamos su gran potencial\" src=\"\/wp-content\/uploads\/2020\/10\/81a4b69ed09d156ec71603b4bf32d587.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Queremos compartir nuestra experiencia en la implementaci\u00f3n de la plataforma para el an\u00e1lisis continuo y la medici\u00f3n de la calidad del c\u00f3digo SonarQube en los procesos existentes de desarrollo del sistema DPO (complemento del sistema de contabilidad de dep\u00f3sito y compensaci\u00f3n \"Alameda\") del Dep\u00f3sito Nacional de Valores. <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>El Dep\u00f3sito Nacional de Valores (grupo de empresas \"Bolsa de Mosc\u00fa\") es una de las compa\u00f1\u00edas clave de la infraestructura financiera, que almacena y contabiliza valores de emisores rusos y extranjeros por un monto superior a 50 billones de rublos. El creciente volumen de operaciones realizadas por el sistema, as\u00ed como la continua expansi\u00f3n de la funcionalidad, requieren mantener una alta calidad del c\u00f3digo fuente de los sistemas. Una de las herramientas para alcanzar este objetivo es el analizador est\u00e1tico SonarQube. En este art\u00edculo describiremos la exitosa experiencia de integraci\u00f3n fluida del analizador est\u00e1tico SonarQube en los procesos de desarrollo de nuestro departamento. <\/p>\n<p><\/p>\n<h3 id=\"kratko-ob-otdele\">Resumen del departamento<\/h3>\n<p><\/p>\n<p>Nuestra competencia incluye los siguientes m\u00f3dulos: pagos a clientes de NRD, flujo de documentos electr\u00f3nicos (EDO), procesamiento de mensajes del dep\u00f3sito de comercio (registro de transacciones extraburs\u00e1tiles), canales de interacci\u00f3n electr\u00f3nica entre clientes y NRD y mucho m\u00e1s. En general, se trata de un gran volumen de trabajo en el aspecto t\u00e9cnico de la operaci\u00f3n. Trabajamos sobre la base de solicitudes. Las solicitudes de los operadores son procesadas por analistas: recopilan los requisitos del cliente y nos presentan su visi\u00f3n de c\u00f3mo debe implementarse en el programa. Luego, el esquema est\u00e1ndar: desarrollo de c\u00f3digo - pruebas - explotaci\u00f3n experimental - entrega de c\u00f3digo al entorno productivo al cliente directo. <\/p>\n<p><\/p>\n<h3 id=\"pochemu-imenno-sonarqube\">\u00bfPor qu\u00e9 SonarQube?<\/h3>\n<p><\/p>\n<p>Esta es la primera experiencia de nuestro departamento en la implementaci\u00f3n de una plataforma para el control de calidad de c\u00f3digo; anteriormente lo hac\u00edamos manualmente, solo realiz\u00e1bamos revisiones de c\u00f3digo. Sin embargo, el volumen creciente de trabajo requiere la automatizaci\u00f3n de este proceso. Adem\u00e1s, en el equipo hay empleados inexpertos que no est\u00e1n completamente familiarizados con los procedimientos internos de desarrollo y tienden a cometer m\u00e1s errores. Se decidi\u00f3 implementar un analizador est\u00e1tico para el control de calidad del c\u00f3digo. Dado que SonarQube ya hab\u00eda sido utilizado en algunos sistemas de NRD, no hubo mucho que elegir. Anteriormente, colegas de otros departamentos hab\u00edan analizado con su ayuda el c\u00f3digo de microservicios en el sistema 'Alameda' (sistema propio de contabilidad y compensaci\u00f3n de NRD), en CFT (sistema de informaci\u00f3n para llevar contabilidad, balance, preparaci\u00f3n de informes obligatorios e internos), entre otros sistemas. Para los experimentos, decidimos comenzar con la versi\u00f3n gratuita de SonarQube. As\u00ed que pasemos a nuestro caso.<\/p>\n<p><\/p>\n<h2 id=\"process-vnedreniya\">Proceso de implementaci\u00f3n<\/h2>\n<p><\/p>\n<p><strong>Tenemos<\/strong>:<\/p>\n<p><\/p>\n<ul>\n<li>compilaci\u00f3n autom\u00e1tica del sistema en TeamCity;<\/li>\n<li>se ha configurado el proceso de subida de c\u00f3digo a trav\u00e9s de MergeRequest desde la rama feature a la rama master en GitLab (proceso de desarrollo seg\u00fan GitHub Flow);<\/li>\n<li>SonarQube, configurado para el an\u00e1lisis de c\u00f3digo del sistema DPO seg\u00fan un cronograma.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Nuestro objetivo<\/strong>: implementar an\u00e1lisis autom\u00e1tico de c\u00f3digo en los procesos CI\/CD del DPO.<\/p>\n<p><\/p>\n<p><strong>Necesitamos configurar<\/strong>: el proceso de verificaci\u00f3n autom\u00e1tica del c\u00f3digo mediante el analizador est\u00e1tico en cada MergeRequest hacia la rama principal.<\/p>\n<p><\/p>\n<p>Es decir, el objetivo es el siguiente: tan pronto como el desarrollador sube cambios a la rama feature, se inicia una verificaci\u00f3n autom\u00e1tica para detectar nuevos errores en el c\u00f3digo. Si no hay errores, se permite aceptar los cambios; de lo contrario, ser\u00e1 necesario corregir los errores. Ya en la etapa inicial, pudimos identificar una cierta cantidad de errores en el c\u00f3digo. El sistema tiene configuraciones muy flexibles: se puede ajustar de tal manera que funcione seg\u00fan las tareas espec\u00edficas de los desarrolladores, para cada sistema y estilo de programaci\u00f3n. <\/p>\n<p><\/p>\n<h3 id=\"nastroyka-qualitygate-v-sonarqube\">Configuraci\u00f3n de QualityGate en SonarQube<\/h3>\n<p><\/p>\n<p>El an\u00e1lisis de QualityGate es algo que hemos le\u00eddo en las profundidades de Internet. Inicialmente, utilizamos otro enfoque, m\u00e1s complicado y, de alguna manera, no del todo correcto. Primero, ejecutamos el escaneo a trav\u00e9s de SonarQube dos veces: escaneamos la rama de caracter\u00edsticas y la rama en la que \u00edbamos a combinar la rama de caracter\u00edsticas, y luego compar\u00e1bamos la cantidad de errores. Este m\u00e9todo no era estable y no siempre daba resultados precisos. Luego, descubrimos que en lugar de hacer un escaneo doble con SonarQube, se pod\u00eda establecer un l\u00edmite en la cantidad de errores permitidos (QualityGate) y analizar solo la rama que se est\u00e1 integrando y comparando.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"C\u00f3mo implementamos SonarQube y realizamos su gran potencial\" src=\"\/wp-content\/uploads\/2020\/10\/1d1def0ca40039b0c61315d3b3833a33.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hasta ahora, utilizamos una verificaci\u00f3n de c\u00f3digo bastante primitiva. Cabe destacar que SonarQube no es compatible con algunos lenguajes de programaci\u00f3n, incluido Delphi. Actualmente, para nuestro sistema solo analizamos c\u00f3digo PLSql.<\/p>\n<p><\/p>\n<p>Funciona as\u00ed:<\/p>\n<p><\/p>\n<ul>\n<li>Para nuestro proyecto, solo analizamos c\u00f3digo PL\/SQL.<\/li>\n<li>QualityGate en SonarQube est\u00e1 configurado de manera que la cantidad de errores no aumenta con cada commit. <\/li>\n<li>La cantidad de errores en la primera ejecuci\u00f3n fue de 229. Si el n\u00famero de errores al hacer un commit aumenta, no se permite el merge. <\/li>\n<li>A continuaci\u00f3n, si los errores son corregidos, se podr\u00e1 reconfigurar QualityGate. <\/li>\n<li>Tambi\u00e9n se pueden agregar nuevos \u00edtems para el an\u00e1lisis, como la cobertura de c\u00f3digo con pruebas, etc.<\/li>\n<\/ul>\n<p><\/p>\n<p>Esquema de trabajo:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"C\u00f3mo implementamos SonarQube y realizamos su gran potencial\" src=\"\/wp-content\/uploads\/2020\/10\/f904169fa87e9cfb75016c1fae4104f1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>En los comentarios de la ejecuci\u00f3n del script se puede ver que la cantidad de errores en la rama de caracter\u00edsticas no ha aumentado. Esto significa que todo est\u00e1 bien.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"C\u00f3mo implementamos SonarQube y realizamos su gran potencial\" src=\"\/wp-content\/uploads\/2020\/10\/004edf78aa787a2a8f6d376f64049a92.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>La bot\u00f3n de Merge se vuelve accesible.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"C\u00f3mo implementamos SonarQube y realizamos su gran potencial\" src=\"\/wp-content\/uploads\/2020\/10\/7870448b9c13242f8e81f44bfd91d503.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>En los comentarios de la ejecuci\u00f3n del script se puede ver que la cantidad de errores en la rama de caracter\u00edsticas ha superado el l\u00edmite permitido. Esto significa que todo est\u00e1 MAL.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"C\u00f3mo implementamos SonarQube y realizamos su gran potencial\" src=\"\/wp-content\/uploads\/2020\/10\/b18eb07b5d46ee4cf0b71b28dfec92cc.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>El bot\u00f3n de Merge est\u00e1 en rojo. Actualmente, no hay ninguna prohibici\u00f3n para realizar cambios en el c\u00f3digo err\u00f3neo, pero esto queda a criterio del desarrollador responsable. En el futuro, se puede prohibir tales commits en la rama principal.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"C\u00f3mo implementamos SonarQube y realizamos su gran potencial\" src=\"\/wp-content\/uploads\/2020\/10\/353f896326bca76c25d72396386cbb13.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3 id=\"samostoyatelnaya-rabota-nad-oshibkami\">Trabajo aut\u00f3nomo en los errores<\/h3>\n<p><\/p>\n<p>A continuaci\u00f3n, es necesario verificar todos los errores detectados por el sistema, porque SonarQube analiza seg\u00fan sus estrictos est\u00e1ndares. Lo que considera un error, en realidad, puede no serlo en nuestro c\u00f3digo. Por lo tanto, es necesario revisar y marcar si realmente es un error, o si no es necesario corregirlo en nuestras condiciones. De esta manera, reducimos la cantidad de errores. Con el tiempo, el sistema aprender\u00e1 a entender estas sutilezas. <\/p>\n<p><\/p>\n<h2 id=\"k-chemu-my-prishli\">A lo que hemos llegado<\/h2>\n<p><\/p>\n<p>Nuestro objetivo era entender si ten\u00eda sentido traducir la verificaci\u00f3n de c\u00f3digo a la automatizaci\u00f3n en nuestro caso. Y los resultados cumplieron con las expectativas. SonarQube nos permite trabajar con los lenguajes que necesitamos, realiza un an\u00e1lisis bastante preciso y tiene el potencial de aprender de las sugerencias de los desarrolladores. En general, estamos satisfechos con nuestra primera experiencia utilizando SonarQube y planeamos seguir desarroll\u00e1ndonos en esta direcci\u00f3n. Esperamos que en el futuro podamos ahorrar m\u00e1s tiempo y esfuerzo en la verificaci\u00f3n de c\u00f3digo y mejorar su calidad, eliminando el factor humano. Es posible que en el proceso descubramos deficiencias de la plataforma o, por el contrario, reafirmemos que es una gran herramienta con un gran potencial. <\/p>\n<p><\/p>\n<p>En este art\u00edculo de revisi\u00f3n, compartimos nuestra experiencia con el analizador est\u00e1tico SonarQube. Si tienes preguntas, no dudes en dejarlas en los comentarios. Si te interesa el tema, en una nueva publicaci\u00f3n describiremos m\u00e1s a fondo c\u00f3mo configurarlo adecuadamente y escribir c\u00f3digo para realizar dicha verificaci\u00f3n. <\/p>\n<p><\/p>\n<p>Autor del texto: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/atanya\/\" class=\"user_link\">atanya<\/a><\/noindex><\/p>\n<p>Fuente: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nsd\/blog\/523732\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043e\u043f\u044b\u0442\u043e\u043c \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0434\u043b\u044f \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0438 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u043e\u0434\u0430 SonarQube \u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0414\u041f\u041e (\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u0434\u0435\u043f\u043e\u0437\u0438\u0442\u0430\u0440\u043d\u043e-\u043a\u043b\u0438\u0440\u0438\u043d\u0433\u043e\u0432\u043e\u0433\u043e \u0443\u0447\u0435\u0442\u0430 \u00ab\u0410\u043b\u0430\u043c\u0435\u0434\u0430\u00bb) \u041d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0447\u0435\u0442\u043d\u043e\u0433\u043e \u0434\u0435\u043f\u043e\u0437\u0438\u0442\u0430\u0440\u0438\u044f. \u041d\u0430\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0441\u0447\u0435\u0442\u043d\u044b\u0439 \u0434\u0435\u043f\u043e\u0437\u0438\u0442\u0430\u0440\u0438\u0439 (\u0433\u0440\u0443\u043f\u043f\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 \u00ab\u041c\u043e\u0441\u043a\u043e\u0432\u0441\u043a\u0430\u044f \u0431\u0438\u0440\u0436\u0430\u00bb) \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u0445\u0440\u0430\u043d\u0438\u0442 \u0438 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u0446\u0435\u043d\u043d\u044b\u0435 \u0431\u0443\u043c\u0430\u0433\u0438 \u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0445 \u0438 \u0438\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u043d\u044b\u0445 \u044d\u043c\u0438\u0442\u0435\u043d\u0442\u043e\u0432 \u043d\u0430 \u0441\u0443\u043c\u043c\u0443 \u0431\u043e\u043b\u0435\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":97621,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-97620","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/kak-my-vnedrili-sonarqube-i-osoznali-ego-bolshoj-potenczial\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u0430\u043a \u043c\u044b \u0432\u043d\u0435\u0434\u0440\u0438\u043b\u0438 SonarQube \u0438 \u043e\u0441\u043e\u0437\u043d\u0430\u043b\u0438 \u0435\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/kak-my-vnedrili-sonarqube-i-osoznali-ego-bolshoj-potenczial\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-10-19T18:42:40+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-10-19T18:42:40+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47C\u00f3mo implementamos SonarQube y reconocimos su gran potencial | ProHoster","description":"Queremos compartir.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/kak-my-vnedrili-sonarqube-i-osoznali-ego-bolshoj-potenczial","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u0430\u043a \u043c\u044b \u0432\u043d\u0435\u0434\u0440\u0438\u043b\u0438 SonarQube \u0438 \u043e\u0441\u043e\u0437\u043d\u0430\u043b\u0438 \u0435\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b | ProHoster","og:description":"\u041c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f.","og:url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/kak-my-vnedrili-sonarqube-i-osoznali-ego-bolshoj-potenczial","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-10-19T18:42:40+00:00","article:modified_time":"2020-10-19T18:42:40+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"97620","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 10:16:26","updated":"2022-09-28 13:56:02","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/97620","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=97620"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/97620\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/97621"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=97620"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=97620"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=97620"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}