{"id":128,"date":"2022-09-13T18:00:12","date_gmt":"2022-09-13T17:00:12","guid":{"rendered":"https:\/\/cristian-perez.com\/?p=128"},"modified":"2022-09-13T18:01:49","modified_gmt":"2022-09-13T17:01:49","slug":"avanzando","status":"publish","type":"post","link":"https:\/\/cristian-perez.com\/en\/avanzando\/","title":{"rendered":"Going forward"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/cristian-perez.com\/wp-content\/uploads\/2022\/09\/imagen-3.png\" alt=\"\" class=\"wp-image-135\" width=\"349\" height=\"349\" srcset=\"https:\/\/cristian-perez.com\/wp-content\/uploads\/2022\/09\/imagen-3.png 1000w, https:\/\/cristian-perez.com\/wp-content\/uploads\/2022\/09\/imagen-3-300x300.png 300w, https:\/\/cristian-perez.com\/wp-content\/uploads\/2022\/09\/imagen-3-150x150.png 150w, https:\/\/cristian-perez.com\/wp-content\/uploads\/2022\/09\/imagen-3-768x768.png 768w\" sizes=\"auto, (max-width: 349px) 100vw, 349px\" \/><figcaption>Seguimos estudiando<\/figcaption><\/figure>\n<\/div>\n\n\n<p>La entrada de hoy ser\u00e1 para publicar que sigo avanzando en mis estudios de programaci\u00f3n. El \u00faltimo modulo que he acabado me permite comunicarme con el <em>SO <\/em>mediante <strong>Python <\/strong>y ejecutar scripts de control con <em>BASH <\/em>(GNU\/Linux)<\/p>\n\n\n\n<p>Ha sido un modulo bastante complicado, ya que he tocado aspectos como:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Instalaci\u00f3n de <strong>Python <\/strong>en los distintos <em>SO<\/em>.<\/li><li>Manejo de archivos locales y remotos con <strong>Python<\/strong>.<\/li><li>Expresiones regulares (un tema bastante complejo).<\/li><li>Manejo de datos (<em>CSV<\/em>) y procesos.<\/li><li>T\u00e9cnicas de test unitarios para los programas creados.<\/li><li><em>BASH scripting<\/em>.<\/li><\/ul>\n\n\n\n<p>Y c\u00f3mo no, hubo un proyecto final, que me cost\u00f3 bastante. El cual detallar\u00e9 m\u00e1s adelante.<\/p>\n\n\n\n<p>Viniendo de un curso b\u00e1sico de <strong>Python <\/strong>reforzado por otras clases complementarias. Este m\u00f3dulo en concreto, pis\u00f3 el acelerador en cuesti\u00f3n de c\u00f3digo. Hab\u00eda que tener los conceptos muy claros en especial de la creaci\u00f3n de las funciones. Al igual que usar par\u00e1metros.<\/p>\n\n\n\n<p>Si fallaba todo esto, uno se puede sentir sobrepasado y confuso. <\/p>\n\n\n\n<p>Afortunadamente, en este curso impartido por <a href=\"https:\/\/es.coursera.org\/professional-certificates\/google-it-automation\" target=\"_blank\" rel=\"noreferrer noopener\">Google<\/a>. Es bastante ameno y te animan constantemente a repasar, investigar por tu cuenta y volver a revisar los temas anteriores si te hace falta. Lo cual, tuve que hacer unas cuantas veces para poder asentar conocimientos.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"682\" src=\"https:\/\/cristian-perez.com\/wp-content\/uploads\/2022\/09\/imagen-4-1024x682.png\" alt=\"\" class=\"wp-image-136\" srcset=\"https:\/\/cristian-perez.com\/wp-content\/uploads\/2022\/09\/imagen-4-1024x682.png 1024w, https:\/\/cristian-perez.com\/wp-content\/uploads\/2022\/09\/imagen-4-300x200.png 300w, https:\/\/cristian-perez.com\/wp-content\/uploads\/2022\/09\/imagen-4-768x512.png 768w, https:\/\/cristian-perez.com\/wp-content\/uploads\/2022\/09\/imagen-4-1536x1024.png 1536w, https:\/\/cristian-perez.com\/wp-content\/uploads\/2022\/09\/imagen-4.png 2000w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>En todos los m\u00f3dulos, en el final, hay un proyecto el cual se aplica todo lo aprendido. En este caso, crear un script para encontrar errores espec\u00edficos en los archivos de registro, planificar e investigar como resolver el problema y por \u00faltimo, implementar su soluci\u00f3n.<\/p>\n\n\n\n<p>Esto lo haremos con:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Usar expresiones regulares para analizar archivos.<\/li><li>A\u00f1adir y modificar valores de un diccionario.<\/li><li>Escribir en un archivo con formato <em>CSV<\/em>.<\/li><li>Mover los archivos al directorio apropiado para usar un conversor <em>CSV -&gt; HTML<\/em><\/li><\/ul>\n\n\n\n<p>Antes de empezar quisiera aclarar que el laboratorio de Google proporciona un archivo que hace la conversi\u00f3n de <em>CSV <\/em>a <em>HTML<\/em>, dej\u00e1ndonos a nosotros la tarea de operar con el archivo en b\u00fasqueda de la informaci\u00f3n requierida. Tratar\u00e9 sobre ese archivo cuando tenga m\u00e1s dominado <a href=\"https:\/\/pandas.pydata.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">Pandas <\/a>y\/u otra librer\u00eda que trabaje con tablas.<\/p>\n\n\n\n<p>As\u00ed que m\u00e1s o menos lo resolv\u00ed as\u00ed:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/usr\/bin\/env python3\nimport re\nimport sys\nimport operator\nimport csv\n# Estas importaciones nos permitir\u00e1 manejarnos con las expresiones regulares, archivos CSV, comandos de sistema, trabajar con diccionarios\n\nusers={}\nerrors={}\n# Creamos dos diccionarios vac\u00edos que rellenaremos con los archivos gracias a iterarlos.\n\nvarFile = open (\"syslog.log\") #Abrimos el archivo a trabajar con el\n\nfor line in varFile: # Iteramos sobre el.\n    line = line.strip() # Separamos los valores\n    usrname = (re.search(r\"\\((.*)\\)\",line)).group(1) # Y buscamos coincidencias\n    msg = (re.search(r\"(ERROR|INFO)\",line)).group(1) # Lo mismo, pero con las palabras \"error\" o \"info\"\n    if (usrname not in users): # Si no aparece coincidencia en el diccionario \"users\" no sumeramos errores pero si, n de usuarios\n        user_count = {'INFO': 0, 'ERROR': 0}\n        users[usrname] = user_count\n        users[usrname][msg]+=1\n\n    if msg==\"ERROR\": # Al rev\u00e9s en que el anterior, aqu\u00ed si contaremos errores.\n        err=(re.search(r\"ERROR (.*) \",line)).group(1)\n        if (err not in errors):\n            errors[err]=0\n        errors[err]+=1\nvarFile.close()\n\n\nusers2=[]\nerrors2=[]\n# Creamos 2 listas.\nfor key in sorted(users.keys()): \n    users2.append([key,users[key][\"INFO\"],users[key][\"ERROR\"]]) # Itereamos por el diccionario \"users\" y a\u00f1adimos aquellos con ERROR e INFO\n\nfor key, value in sorted(errors.items(), key=lambda item: item[1],reverse=True):\n    errors2.append([key, value]) # Aqu\u00ed a\u00f1adiremos solo los errores\n\n# Insertamos los valores en las listas.\nusers2.insert(0,[\"Username\",\"INFO\",\"ERROR\"])\nerrors2.insert(0,[\"Error\",\"Count\"])\n\n# Creamos dos archivos csv\nfile_errors=open(\"error_message.csv\",\"w\")\nfile_users=open(\"user_statistics.csv\",\"w\")\n\n# Escribimos en los archivos CSV con columnas.\nwriter1=csv.writer(file_erros)\nwriter2=csv.writer(file_users)\nwriter1.writerows(errors2)\nwriter2.writerows(users2)\n\n# Y cerramos archivos.\nfile_errors.close()\nfile_users.close()<\/pre>\n\n\n\n<p>Una vez hemos hecho el <em>script<\/em>, nos queda guardarlo en la ruta donde se guarden los archivos de <em>logs<\/em>, darle persmisos de ejecuci\u00f3n a traves de \u00ab<em>chmod +x .\/converter.py<\/em>\u00ab<\/p>\n\n\n\n<p>Al ejecutarlo se nos generar\u00e1 dos archivos \u00ab<em>file_users.csv<\/em>\u00bb y \u00ab<em>file_errors.csv<\/em>\u00bb los cuales ser\u00e1n los par\u00e1metros de nuestro ejecutable conversor <strong>csv_to_html.py<\/strong> Lo cual quedar\u00eda as\u00ed.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">user@user-$:.\/csv_to_html.py file_errors.csv \/var\/www\/html\/file_errors.html\n\n# Lo mismo para los usuarios\n\nuser@user-$:.\/csv_to_html.py file_users.csv \/var\/www\/html\/file_users.html<\/pre>\n\n\n\n<p>Lo cual, cuando visualizamos los dos archivos <em>HTML<\/em>, veremos estas p\u00e1ginas:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"344\" height=\"354\" src=\"https:\/\/cristian-perez.com\/wp-content\/uploads\/2022\/09\/imagen.png\" alt=\"\" class=\"wp-image-132\" srcset=\"https:\/\/cristian-perez.com\/wp-content\/uploads\/2022\/09\/imagen.png 344w, https:\/\/cristian-perez.com\/wp-content\/uploads\/2022\/09\/imagen-292x300.png 292w\" sizes=\"auto, (max-width: 344px) 100vw, 344px\" \/><figcaption>Una tabla con los errores filtrados con nuestro <em>script<\/em><\/figcaption><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"341\" height=\"369\" src=\"https:\/\/cristian-perez.com\/wp-content\/uploads\/2022\/09\/imagen-1.png\" alt=\"\" class=\"wp-image-133\" srcset=\"https:\/\/cristian-perez.com\/wp-content\/uploads\/2022\/09\/imagen-1.png 341w, https:\/\/cristian-perez.com\/wp-content\/uploads\/2022\/09\/imagen-1-277x300.png 277w\" sizes=\"auto, (max-width: 341px) 100vw, 341px\" \/><figcaption>Una tabla con nuestras estad\u00edsticas de los usuarios, si generaron error y\/o informes<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Con esta informaci\u00f3n hemos aprendido, como detectar errores, manejar la informaci\u00f3n de los usuarios, generar informes web con la informaci\u00f3n extra\u00edda de archivos de registro tipo <em>log<\/em>.<\/p>\n\n\n\n<p>Una tarea bastante dura, ya que requeri\u00f3 que repasara las lecciones, consutara la documetanci\u00f3n asociada a las librer\u00edas importadas y fuera haciendo peque\u00f1as pruebas de c\u00f3digo, comprobando que este fuera funcional. <\/p>\n\n\n\n<p>Tarea dura, pero satisfactoria y aunque me llev\u00f3 bastante tiempo. Dio sus frutos. <\/p>\n\n\n\n<p>Toca seguir, ahora me zambullir\u00e9 en las metodolog\u00edas <strong><a href=\"https:\/\/git-scm.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Git <\/a><\/strong>y control de revisiones de c\u00f3digo. Y mientras ir\u00e9 publicando m\u00e1s art\u00edculos sobre ciberseguridad, pero cada vez m\u00e1s enfocados hacia el sector de la industria.<\/p>\n\n\n\n<p>Un saludo, nos vemos.<\/p>","protected":false},"excerpt":{"rendered":"<p>Finishing the current module, I want to share how hard it was, and how satisfying it was to solve it.<\/p>","protected":false},"author":1,"featured_media":134,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[21],"tags":[48,45,47,46],"class_list":["post-128","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-estudios","tag-aprender","tag-bash","tag-coding","tag-scrpting"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Avanzando - Cristian Perez<\/title>\n<meta name=\"description\" content=\"Cristian Perez Avanzando Estudios\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cristian-perez.com\/en\/avanzando\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Avanzando - Cristian Perez\" \/>\n<meta property=\"og:description\" content=\"Cristian Perez Avanzando Estudios\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cristian-perez.com\/en\/avanzando\/\" \/>\n<meta property=\"og:site_name\" content=\"Cristian Perez\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-13T17:00:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-13T17:01:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cristian-perez.com\/wp-content\/uploads\/2022\/09\/imagen-2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"275\" \/>\n\t<meta property=\"og:image:height\" content=\"183\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Cristian P\u00e9rez\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Cristian P\u00e9rez\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/cristian-perez.com\/avanzando\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/cristian-perez.com\/avanzando\/\"},\"author\":{\"name\":\"Cristian P\u00e9rez\",\"@id\":\"https:\/\/cristian-perez.com\/#\/schema\/person\/7d97cc065f256a22ec12e1879176b989\"},\"headline\":\"Avanzando\",\"datePublished\":\"2022-09-13T17:00:12+00:00\",\"dateModified\":\"2022-09-13T17:01:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cristian-perez.com\/avanzando\/\"},\"wordCount\":594,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/cristian-perez.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/cristian-perez.com\/avanzando\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/cristian-perez.com\/wp-content\/uploads\/2022\/09\/imagen-2.png\",\"keywords\":[\"aprender\",\"bash\",\"coding\",\"scrpting\"],\"articleSection\":[\"Estudios\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/cristian-perez.com\/avanzando\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cristian-perez.com\/avanzando\/\",\"url\":\"https:\/\/cristian-perez.com\/avanzando\/\",\"name\":\"Avanzando - Cristian Perez\",\"isPartOf\":{\"@id\":\"https:\/\/cristian-perez.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cristian-perez.com\/avanzando\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cristian-perez.com\/avanzando\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/cristian-perez.com\/wp-content\/uploads\/2022\/09\/imagen-2.png\",\"datePublished\":\"2022-09-13T17:00:12+00:00\",\"dateModified\":\"2022-09-13T17:01:49+00:00\",\"description\":\"Cristian Perez Avanzando Estudios\",\"breadcrumb\":{\"@id\":\"https:\/\/cristian-perez.com\/avanzando\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cristian-perez.com\/avanzando\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/cristian-perez.com\/avanzando\/#primaryimage\",\"url\":\"https:\/\/cristian-perez.com\/wp-content\/uploads\/2022\/09\/imagen-2.png\",\"contentUrl\":\"https:\/\/cristian-perez.com\/wp-content\/uploads\/2022\/09\/imagen-2.png\",\"width\":275,\"height\":183},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cristian-perez.com\/avanzando\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/cristian-perez.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Avanzando\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cristian-perez.com\/#website\",\"url\":\"https:\/\/cristian-perez.com\/\",\"name\":\"Cristian Perez\",\"description\":\"Aprendiendo y securizando\",\"publisher\":{\"@id\":\"https:\/\/cristian-perez.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cristian-perez.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/cristian-perez.com\/#organization\",\"name\":\"Cristian Perez\",\"url\":\"https:\/\/cristian-perez.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/cristian-perez.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/cristian-perez.com\/wp-content\/uploads\/2023\/03\/cropped-yo002.png\",\"contentUrl\":\"https:\/\/cristian-perez.com\/wp-content\/uploads\/2023\/03\/cropped-yo002.png\",\"width\":612,\"height\":612,\"caption\":\"Cristian Perez\"},\"image\":{\"@id\":\"https:\/\/cristian-perez.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/cristian-perez.com\/#\/schema\/person\/7d97cc065f256a22ec12e1879176b989\",\"name\":\"Cristian P\u00e9rez\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/cristian-perez.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5d3dde543a7853c4f2e561df53831076d96d972e0111acaf01818332912a2c60?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5d3dde543a7853c4f2e561df53831076d96d972e0111acaf01818332912a2c60?s=96&d=mm&r=g\",\"caption\":\"Cristian P\u00e9rez\"},\"sameAs\":[\"http:\/\/cristian-perez.com\"],\"url\":\"https:\/\/cristian-perez.com\/en\/author\/chrisprez\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Avanzando - Cristian Perez","description":"Cristian Perez Avanzando Estudios","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cristian-perez.com\/en\/avanzando\/","og_locale":"en_GB","og_type":"article","og_title":"Avanzando - Cristian Perez","og_description":"Cristian Perez Avanzando Estudios","og_url":"https:\/\/cristian-perez.com\/en\/avanzando\/","og_site_name":"Cristian Perez","article_published_time":"2022-09-13T17:00:12+00:00","article_modified_time":"2022-09-13T17:01:49+00:00","og_image":[{"width":275,"height":183,"url":"https:\/\/cristian-perez.com\/wp-content\/uploads\/2022\/09\/imagen-2.png","type":"image\/png"}],"author":"Cristian P\u00e9rez","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Cristian P\u00e9rez","Estimated reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/cristian-perez.com\/avanzando\/#article","isPartOf":{"@id":"https:\/\/cristian-perez.com\/avanzando\/"},"author":{"name":"Cristian P\u00e9rez","@id":"https:\/\/cristian-perez.com\/#\/schema\/person\/7d97cc065f256a22ec12e1879176b989"},"headline":"Avanzando","datePublished":"2022-09-13T17:00:12+00:00","dateModified":"2022-09-13T17:01:49+00:00","mainEntityOfPage":{"@id":"https:\/\/cristian-perez.com\/avanzando\/"},"wordCount":594,"commentCount":0,"publisher":{"@id":"https:\/\/cristian-perez.com\/#organization"},"image":{"@id":"https:\/\/cristian-perez.com\/avanzando\/#primaryimage"},"thumbnailUrl":"https:\/\/cristian-perez.com\/wp-content\/uploads\/2022\/09\/imagen-2.png","keywords":["aprender","bash","coding","scrpting"],"articleSection":["Estudios"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/cristian-perez.com\/avanzando\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/cristian-perez.com\/avanzando\/","url":"https:\/\/cristian-perez.com\/avanzando\/","name":"Avanzando - Cristian Perez","isPartOf":{"@id":"https:\/\/cristian-perez.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cristian-perez.com\/avanzando\/#primaryimage"},"image":{"@id":"https:\/\/cristian-perez.com\/avanzando\/#primaryimage"},"thumbnailUrl":"https:\/\/cristian-perez.com\/wp-content\/uploads\/2022\/09\/imagen-2.png","datePublished":"2022-09-13T17:00:12+00:00","dateModified":"2022-09-13T17:01:49+00:00","description":"Cristian Perez Avanzando Estudios","breadcrumb":{"@id":"https:\/\/cristian-perez.com\/avanzando\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cristian-perez.com\/avanzando\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/cristian-perez.com\/avanzando\/#primaryimage","url":"https:\/\/cristian-perez.com\/wp-content\/uploads\/2022\/09\/imagen-2.png","contentUrl":"https:\/\/cristian-perez.com\/wp-content\/uploads\/2022\/09\/imagen-2.png","width":275,"height":183},{"@type":"BreadcrumbList","@id":"https:\/\/cristian-perez.com\/avanzando\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/cristian-perez.com\/"},{"@type":"ListItem","position":2,"name":"Avanzando"}]},{"@type":"WebSite","@id":"https:\/\/cristian-perez.com\/#website","url":"https:\/\/cristian-perez.com\/","name":"Cristian Perez","description":"Aprendiendo y securizando","publisher":{"@id":"https:\/\/cristian-perez.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cristian-perez.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/cristian-perez.com\/#organization","name":"Cristian Perez","url":"https:\/\/cristian-perez.com\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/cristian-perez.com\/#\/schema\/logo\/image\/","url":"https:\/\/cristian-perez.com\/wp-content\/uploads\/2023\/03\/cropped-yo002.png","contentUrl":"https:\/\/cristian-perez.com\/wp-content\/uploads\/2023\/03\/cropped-yo002.png","width":612,"height":612,"caption":"Cristian Perez"},"image":{"@id":"https:\/\/cristian-perez.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/cristian-perez.com\/#\/schema\/person\/7d97cc065f256a22ec12e1879176b989","name":"Cristian P\u00e9rez","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/cristian-perez.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5d3dde543a7853c4f2e561df53831076d96d972e0111acaf01818332912a2c60?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5d3dde543a7853c4f2e561df53831076d96d972e0111acaf01818332912a2c60?s=96&d=mm&r=g","caption":"Cristian P\u00e9rez"},"sameAs":["http:\/\/cristian-perez.com"],"url":"https:\/\/cristian-perez.com\/en\/author\/chrisprez\/"}]}},"_links":{"self":[{"href":"https:\/\/cristian-perez.com\/en\/wp-json\/wp\/v2\/posts\/128","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cristian-perez.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cristian-perez.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cristian-perez.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cristian-perez.com\/en\/wp-json\/wp\/v2\/comments?post=128"}],"version-history":[{"count":5,"href":"https:\/\/cristian-perez.com\/en\/wp-json\/wp\/v2\/posts\/128\/revisions"}],"predecessor-version":[{"id":138,"href":"https:\/\/cristian-perez.com\/en\/wp-json\/wp\/v2\/posts\/128\/revisions\/138"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cristian-perez.com\/en\/wp-json\/wp\/v2\/media\/134"}],"wp:attachment":[{"href":"https:\/\/cristian-perez.com\/en\/wp-json\/wp\/v2\/media?parent=128"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cristian-perez.com\/en\/wp-json\/wp\/v2\/categories?post=128"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cristian-perez.com\/en\/wp-json\/wp\/v2\/tags?post=128"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}