{"id":57410,"date":"2024-11-01T09:48:16","date_gmt":"2024-11-01T14:48:16","guid":{"rendered":"https:\/\/niixer.com\/?p=57410"},"modified":"2024-11-01T09:48:17","modified_gmt":"2024-11-01T14:48:17","slug":"analizando-codigo-con-codeium-una-ia-para-desarrolladores","status":"publish","type":"post","link":"https:\/\/niixer.com\/index.php\/2024\/11\/01\/analizando-codigo-con-codeium-una-ia-para-desarrolladores\/","title":{"rendered":"Analizando c\u00f3digo con Codeium. Una IA para desarrolladores\u00a0"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introducci\u00f3n:&nbsp;<\/h2>\n\n\n\n<p>Antes de trabajar con esta herramienta <a href=\"https:\/\/codeium.com\/\">Codeium<\/a>, es importante conocer un poco m\u00e1s sobre ella y as\u00ed poder tener claro sus limitaciones, sus pros y contras despu\u00e9s de todo no existe algo perfecto, y puede llegar a suceder que la funcionalidad que estabas esperando al momento de usarlo no est\u00e9 disponible o que directamente no exista.\u00a0<\/p>\n\n\n\n<p><a href=\"https:\/\/codeium.com\/\">Codeium<\/a> es una herramienta de inteligencia artificial creada para ayudar a los desarrolladores en la programaci\u00f3n. Proporciona autocompletado de c\u00f3digo, sugerencias y asistencia en tiempo real mientras se escribe, lo que puede mejorar la productividad y facilitar la escritura de c\u00f3digo. Funciona con m\u00faltiples lenguajes de programaci\u00f3n y puede integrarse con varios entornos de desarrollo, lo que la convierte en un recurso \u00fatil para programadores de todos los niveles. Por esto es que en foros de internet a esta herramienta se le conoce como el GitHub-Copilot gratuito.\u00a0<\/p>\n\n\n\n<p><a href=\"https:\/\/codeium.com\/\">Codeium <\/a>ofrece un modelo freemium, lo que significa que tiene una versi\u00f3n gratuita con funcionalidades b\u00e1sicas, pero tambi\u00e9n opciones de pago que desbloquean caracter\u00edsticas adicionales o capacidades avanzadas. Este modelo freemiun es el que usaremos m\u00e1s adelante.\u00a0<\/p>\n\n\n\n<p>En cuanto a los modelos de IA que utiliza, <a href=\"https:\/\/codeium.com\/\">Codeium <\/a>se basa en modelos de Deep-Learning\u00a0 que han sido entrenados en grandes cantidades de datos de c\u00f3digo para proporcionar sugerencias relevantes y precisas. Pero desafortunada mente, los detalles espec\u00edficos sobre los modelos utilizados pueden variar dependiendo de donde mires y no siempre est\u00e1n p\u00fablicamente disponibles.\u00a0<\/p>\n\n\n\n<p><a href=\"https:\/\/codeium.com\/\">Codeium <\/a>soporta una amplia gama de lenguajes de programaci\u00f3n y entornos de desarrollo, entre estos podemos ver que soporta JavaScript, TypeScript, Java, Kotlin, Go, Rust, <a href=\"https:\/\/www.python.org\/\">Python <\/a>y muchos m\u00e1s. En cuato a los entornos de desarrollo podemos ver que tiene compatibilidad con:\u00a0<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><a href=\"https:\/\/code.visualstudio.com\/\">VScode<\/a><\/strong>: Todas las verciones\u00a0<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/www.jetbrains.com\/ides\/\">JetBrains IDEs<\/a><\/strong>: Versi\u00f3n 2022.3+\u00a0<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/visualstudio.microsoft.com\/\">Visual Studio<\/a><\/strong>: 17.5.5+\u00a0<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/neovim.io\/\">NeoVim<\/a><\/strong>: Versi\u00f3n 0.6+\u00a0<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/www.vim.org\/\">Vim<\/a><\/strong>: 9.0.0185+\u00a0<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/www.gnu.org\/software\/emacs\/\">Emacs<\/a><\/strong>: Todas las visiones complementadas con lbxml\u00a0<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/developer.apple.com\/xcode\/\">Xcode<\/a><\/strong>: Todas las visiones\u00a0<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/www.sublimetext.com\/\">Sublime Text<\/a><\/strong>: Versi\u00f3n 3+\u00a0<\/li>\n\n\n\n<li><strong><a href=\"https:\/\/eclipseide.org\/\">Eclipse<\/a><\/strong>: Versi\u00f3n 4.25+ (2022-09+)\u00a0<\/li>\n<\/ul>\n\n\n\n<p>Esto hace que sea una herramienta muy vers\u00e1til para muchos proyectos.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Codeium: Alternativa GRATIS a Github Copilot \ud83e\udd16 #ia #programaci\u00f3n\" width=\"800\" height=\"450\" src=\"https:\/\/www.youtube.com\/embed\/5LF-Pwmfo5U?start=650&#038;feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><figcaption class=\"wp-element-caption\">Web Reactiva by Dani. (2023, 27 septiembre). <em>Codeium: Alternativa GRATIS a Github Copilot \ud83e\udd16 #ia #programaci\u00f3n<\/em> [V\u00eddeo]. YouTube. https:\/\/www.youtube.com\/watch?v=5LF-Pwmfo5U<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Tutorial<\/h2>\n\n\n\n<p>Lo que haremos ser\u00e1 usar esta herramienta para pedirle que no explique a detalle el funcionamiento de un c\u00f3digo, m\u00e1s espec\u00edficamente de un Tetris hecho en <a href=\"https:\/\/www.python.org\/\">Python<\/a>. Este lo he sacado de un repositorio p\u00fablico en GitHub al final del articulo podr\u00e1n encontrar el enlace que los llevar\u00e1 al repositorio.\u00a0<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Requisitos previos:&nbsp;&nbsp;<\/h3>\n\n\n\n<p>Antes de empezar debemos te asegurarnos de cumplir con los siguientes requisitos especialmente los de conocimiento del lenguaje de programaci\u00f3n, pues este articulo no pretende ense\u00f1arte a programar, solo es una gu\u00eda de c\u00f3mo puedes llegar a usar la herramienta <a href=\"https:\/\/codeium.com\/\">Codeium<\/a>.\u00a0<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Conocimientos Previos<\/strong>:&nbsp;\n<ul class=\"wp-block-list\">\n<li>Conocimiento b\u00e1sico del lenguaje <a href=\"https:\/\/www.python.org\/\">Python<\/a>: Es fundamental para poder seguir la gu\u00eda.\u00a0<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Herramientas y Entornos de Desarrollo<\/strong>:\n<ul class=\"wp-block-list\">\n<li>\u00a0Tener instalado el IDE <a href=\"https:\/\/code.visualstudio.com\/\">VScode <\/a>(Visual Studio Code): Este es el entorno en el que se trabajar\u00e1.\u00a0<\/li>\n\n\n\n<li>Extensiones necesarias para <a href=\"https:\/\/code.visualstudio.com\/\">VScode<\/a>:\u00a0\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.python.org\/\">Python\u00a0<\/a><\/li>\n\n\n\n<li>Pylance&nbsp;<\/li>\n\n\n\n<li>Python Debugger&nbsp;<\/li>\n\n\n\n<li><a href=\"https:\/\/codeium.com\/\">Codeium\u00a0<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Instalaci\u00f3n de <\/strong><a href=\"https:\/\/www.python.org\/\"><strong>Python<\/strong>\u00a0<\/a>\n<ul class=\"wp-block-list\">\n<li>Tener instalado <a href=\"https:\/\/www.python.org\/\">Python<\/a>: Nosotros usaremos la versi\u00f3n 3.10.11.\u00a0<\/li>\n\n\n\n<li>Dependencias o paquetes necesarios:&nbsp;\n<ul class=\"wp-block-list\">\n<li>Pip&nbsp;<\/li>\n\n\n\n<li>Pygame&nbsp;<\/li>\n\n\n\n<li>Random&nbsp;<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li> <strong>Cuentas y Accesos<\/strong>:\n<ul class=\"wp-block-list\">\n<li>Tener cuenta de <a href=\"https:\/\/www.google.com\/\">Google<\/a>: Necesaria para crear la cuenta de <a href=\"https:\/\/codeium.com\/\">Codeium\u00a0<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Paso 1:&nbsp;<\/h3>\n\n\n\n<p>Cuenta de <a href=\"https:\/\/codeium.com\/\">Codeium<\/a>.\u00a0<\/p>\n\n\n\n<p>Hacer este paso es fundamental para poder usar <a href=\"https:\/\/codeium.com\/\">Codeium<\/a>. Para ello no dirigimos a la siguiente direcci\u00f3n web:\u00a0\u00a0<a href=\"https:\/\/codeium.com\/account\/login\" target=\"_blank\" rel=\"noreferrer noopener\"><em>https:\/\/codeium.com\/account\/login<\/em><\/a>\u00a0Aqu\u00ed podremos crear una cuenta usando cualquier correo electr\u00f3nico o ingresar directamente con <a href=\"https:\/\/www.google.com\/\">Google<\/a>.\u00a0<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2024\/11\/Captura-de-pantalla-38-1024x576.png\" alt=\"\" class=\"wp-image-57604\" style=\"aspect-ratio:16\/9;object-fit:cover\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2024\/11\/Captura-de-pantalla-38-1024x576.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2024\/11\/Captura-de-pantalla-38-300x169.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2024\/11\/Captura-de-pantalla-38-768x432.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2024\/11\/Captura-de-pantalla-38-1536x864.png 1536w, https:\/\/niixer.com\/wp-content\/uploads\/2024\/11\/Captura-de-pantalla-38.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Paso2:&nbsp;<\/h3>\n\n\n\n<p>Ahora nos dirigiremos a nuestro entorno de desarrollo <a href=\"https:\/\/code.visualstudio.com\/\">VScode<\/a>, all\u00ed instalaremos la extensi\u00f3n <a href=\"https:\/\/codeium.com\/\">Codeium<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2024\/11\/Captura-de-pantalla-37-1024x576.png\" alt=\"\" class=\"wp-image-57605\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2024\/11\/Captura-de-pantalla-37-1024x576.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2024\/11\/Captura-de-pantalla-37-300x169.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2024\/11\/Captura-de-pantalla-37-768x432.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2024\/11\/Captura-de-pantalla-37-1536x864.png 1536w, https:\/\/niixer.com\/wp-content\/uploads\/2024\/11\/Captura-de-pantalla-37.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Una vez instalada notaremos una notificaci\u00f3n que no pide autenticaci\u00f3n. Para ello deberemos ingresar al siguiente enlace\u00a0\u00a0<a href=\"https:\/\/codeium.com\/show-auth-token\" target=\"_blank\" rel=\"noreferrer noopener\"><em>https:\/\/codeium.com\/show-auth-token<\/em><\/a>\u00a0e iniciar sesi\u00f3n con nuestra cuenta ya creada.\u00a0<\/p>\n\n\n\n<p>All\u00ed podremos ver que hay un token el cual es nuestra llave de autenticaci\u00f3n por lo que no deberemos compartirlo con nadie. Copiaremos ese token y lo pegaremos en la l\u00ednea de comandos del <a href=\"https:\/\/code.visualstudio.com\/\">VScode <\/a>junto con el siguiente comando:\u00a0<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Codeium: Provide Authentication Token&nbsp;<\/code><\/pre>\n\n\n\n<p>Pulsamos enter y luego pegamos nuestro token.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c<\/code><\/pre>\n\n\n\n<p class=\"has-text-align-center has-small-font-size\">Este token fue extra\u00eddo de la p\u00e1gina principal de JWT como un ejemplo de lo que usted deber\u00eda ver en pantalla.\u00a0<\/p>\n\n\n\n<p>Una vez hallamos hecho este paso podremos usar la IA. Esta herramienta tiene caracter\u00edsticas muy \u00fatiles para el d\u00eda a d\u00eda como: autocompletado inteligente, sugerencias, correcci\u00f3n de errores y la que usaremos aqu\u00ed, an\u00e1lisis y explicaci\u00f3n del c\u00f3digo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Paso 3:&nbsp;<\/h3>\n\n\n\n<p>Para que la IA nos pueda explicar un c\u00f3digo es importante tenerlo, para ello usaremos el siguiente c\u00f3digo:&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import pygame\nimport random\n\ncolors = &#91;\n    (0, 0, 0),\n    (120, 37, 179),\n    (100, 179, 179),\n    (80, 34, 22),\n    (80, 134, 22),\n    (180, 34, 22),\n    (180, 34, 122),\n]\n\n\nclass Figure:\n    x = 0\n    y = 0\n\n    figures = &#91;\n        &#91;&#91;1, 5, 9, 13], &#91;4, 5, 6, 7]],\n        &#91;&#91;4, 5, 9, 10], &#91;2, 6, 5, 9]],\n        &#91;&#91;6, 7, 9, 10], &#91;1, 5, 6, 10]],\n        &#91;&#91;1, 2, 5, 9], &#91;0, 4, 5, 6], &#91;1, 5, 9, 8], &#91;4, 5, 6, 10]],\n        &#91;&#91;1, 2, 6, 10], &#91;5, 6, 7, 9], &#91;2, 6, 10, 11], &#91;3, 5, 6, 7]],\n        &#91;&#91;1, 4, 5, 6], &#91;1, 4, 5, 9], &#91;4, 5, 6, 9], &#91;1, 5, 6, 9]],\n        &#91;&#91;1, 2, 5, 6]],\n    ]\n\n    def __init__(self, x, y):\n        self.x = x\n        self.y = y\n        self.type = random.randint(0, len(self.figures) - 1)\n        self.color = random.randint(1, len(colors) - 1)\n        self.rotation = 0\n\n    def image(self):\n        return self.figures&#91;self.type]&#91;self.rotation]\n\n    def rotate(self):\n        self.rotation = (self.rotation + 1) % len(self.figures&#91;self.type])\n\n\nclass Tetris:\n    def __init__(self, height, width):\n        self.level = 2\n        self.score = 0\n        self.state = \"start\"\n        self.field = &#91;]\n        self.height = 0\n        self.width = 0\n        self.x = 100\n        self.y = 60\n        self.zoom = 20\n        self.figure = None\n    \n        self.height = height\n        self.width = width\n        self.field = &#91;]\n        self.score = 0\n        self.state = \"start\"\n        for i in range(height):\n            new_line = &#91;]\n            for j in range(width):\n                new_line.append(0)\n            self.field.append(new_line)\n\n    def new_figure(self):\n        self.figure = Figure(3, 0)\n\n    def intersects(self):\n        intersection = False\n        for i in range(4):\n            for j in range(4):\n                if i * 4 + j in self.figure.image():\n                    if i + self.figure.y &gt; self.height - 1 or \\\n                            j + self.figure.x &gt; self.width - 1 or \\\n                            j + self.figure.x &lt; 0 or \\\n                            self.field&#91;i + self.figure.y]&#91;j + self.figure.x] &gt; 0:\n                        intersection = True\n        return intersection\n\n    def break_lines(self):\n        lines = 0\n        for i in range(1, self.height):\n            zeros = 0\n            for j in range(self.width):\n                if self.field&#91;i]&#91;j] == 0:\n                    zeros += 1\n            if zeros == 0:\n                lines += 1\n                for i1 in range(i, 1, -1):\n                    for j in range(self.width):\n                        self.field&#91;i1]&#91;j] = self.field&#91;i1 - 1]&#91;j]\n        self.score += lines ** 2\n\n    def go_space(self):\n        while not self.intersects():\n            self.figure.y += 1\n        self.figure.y -= 1\n        self.freeze()\n\n    def go_down(self):\n        self.figure.y += 1\n        if self.intersects():\n            self.figure.y -= 1\n            self.freeze()\n\n    def freeze(self):\n        for i in range(4):\n            for j in range(4):\n                if i * 4 + j in self.figure.image():\n                    self.field&#91;i + self.figure.y]&#91;j + self.figure.x] = self.figure.color\n        self.break_lines()\n        self.new_figure()\n        if self.intersects():\n            self.state = \"gameover\"\n\n    def go_side(self, dx):\n        old_x = self.figure.x\n        self.figure.x += dx\n        if self.intersects():\n            self.figure.x = old_x\n\n    def rotate(self):\n        old_rotation = self.figure.rotation\n        self.figure.rotate()\n        if self.intersects():\n            self.figure.rotation = old_rotation\n\n\n# Initialize the game engine\npygame.init()\n\n# Define some colors\nBLACK = (0, 0, 0)\nWHITE = (255, 255, 255)\nGRAY = (128, 128, 128)\n\nsize = (400, 500)\nscreen = pygame.display.set_mode(size)\n\npygame.display.set_caption(\"Tetris\")\n\n# Loop until the user clicks the close button.\ndone = False\nclock = pygame.time.Clock()\nfps = 25\ngame = Tetris(20, 10)\ncounter = 0\n\npressing_down = False\n\nwhile not done:\n    if game.figure is None:\n        game.new_figure()\n    counter += 1\n    if counter &gt; 100000:\n        counter = 0\n\n    if counter % (fps \/\/ game.level \/\/ 2) == 0 or pressing_down:\n        if game.state == \"start\":\n            game.go_down()\n\n    for event in pygame.event.get():\n        if event.type == pygame.QUIT:\n            done = True\n        if event.type == pygame.KEYDOWN:\n            if event.key == pygame.K_UP:\n                game.rotate()\n            if event.key == pygame.K_DOWN:\n                pressing_down = True\n            if event.key == pygame.K_LEFT:\n                game.go_side(-1)\n            if event.key == pygame.K_RIGHT:\n                game.go_side(1)\n            if event.key == pygame.K_SPACE:\n                game.go_space()\n            if event.key == pygame.K_ESCAPE:\n                game.__init__(20, 10)\n\n    if event.type == pygame.KEYUP:\n            if event.key == pygame.K_DOWN:\n                pressing_down = False\n\n    screen.fill(WHITE)\n\n    for i in range(game.height):\n        for j in range(game.width):\n            pygame.draw.rect(screen, GRAY, &#91;game.x + game.zoom * j, game.y + game.zoom * i, game.zoom, game.zoom], 1)\n            if game.field&#91;i]&#91;j] &gt; 0:\n                pygame.draw.rect(screen, colors&#91;game.field&#91;i]&#91;j]],\n                                 &#91;game.x + game.zoom * j + 1, game.y + game.zoom * i + 1, game.zoom - 2, game.zoom - 1])\n\n    if game.figure is not None:\n        for i in range(4):\n            for j in range(4):\n                p = i * 4 + j\n                if p in game.figure.image():\n                    pygame.draw.rect(screen, colors&#91;game.figure.color],\n                                     &#91;game.x + game.zoom * (j + game.figure.x) + 1,\n                                      game.y + game.zoom * (i + game.figure.y) + 1,\n                                      game.zoom - 2, game.zoom - 2])\n\n    font = pygame.font.SysFont('Calibri', 25, True, False)\n    font1 = pygame.font.SysFont('Calibri', 65, True, False)\n    text = font.render(\"Score: \" + str(game.score), True, BLACK)\n    text_game_over = font1.render(\"Game Over\", True, (255, 125, 0))\n    text_game_over1 = font1.render(\"Press ESC\", True, (255, 215, 0))\n\n    screen.blit(text, &#91;0, 0])\n    if game.state == \"gameover\":\n        screen.blit(text_game_over, &#91;20, 200])\n        screen.blit(text_game_over1, &#91;25, 265])\n\n    pygame.display.flip()\n    clock.tick(fps)\n\npygame.quit()<\/code><\/pre>\n\n\n\n<p class=\"has-text-align-center has-small-font-size\">Como mencionamos anteriormente este c\u00f3digo fue extra\u00eddo de un repositorio p\u00fablico de GitHub.&nbsp;<\/p>\n\n\n\n<p>Luego una vez copiado el c\u00f3digo, crearemos un nuevo archivo de <a href=\"https:\/\/www.python.org\/\">Python <\/a>y pegaremos all\u00ed el c\u00f3digo, este archivo lo guardaremos con el nombre de \u201ctetris.py\u201d.\u00a0<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Paso 4:&nbsp;<\/h3>\n\n\n\n<p>Con nuestro archivo ya creado procederemos a abrirlo usando nuestro <a href=\"https:\/\/code.visualstudio.com\/\">VScode<\/a>.\u00a0<\/p>\n\n\n\n<p>Una vez lo tengamos abierto seleccionaremos la primera parte del c\u00f3digo, luego le daremos a clic derecho y escogeremos la opci\u00f3n, <em>Codeium: Explain Selected Code Block.<\/em>\u00a0<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2024\/11\/Captura-de-pantalla-39-1024x576.png\" alt=\"\" class=\"wp-image-57609\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2024\/11\/Captura-de-pantalla-39-1024x576.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2024\/11\/Captura-de-pantalla-39-300x169.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2024\/11\/Captura-de-pantalla-39-768x432.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2024\/11\/Captura-de-pantalla-39-1536x864.png 1536w, https:\/\/niixer.com\/wp-content\/uploads\/2024\/11\/Captura-de-pantalla-39.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Podremos ver como a nuestro lado izquierdo se abre una pesta\u00f1a de chat, all\u00ed <a href=\"https:\/\/codeium.com\/\">Codeium <\/a>nos dar\u00e1 una explicaci\u00f3n de lo que hace el c\u00f3digo seleccionado. Como es una IA y las cosas generadas por IA no son perfectas puede que la explicaci\u00f3n proporcionada no sea muy adecuada o muy clara, en estos casos podemos volver a hacer el proceso para generar una respuesta que nos agrade m\u00e1s.\u00a0<\/p>\n\n\n\n<p>La respuesta fue:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>Este c\u00f3digo define una clase llamada <strong>Figure<\/strong> que parece representar una figura geom\u00e9trica en un espacio 2D. Aqu\u00ed te explico lo que hace cada parte del c\u00f3digo:&nbsp;<\/em><\/p>\n\n\n\n<p><strong><em>Atributos de clase<\/em><\/strong>&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><em>x<\/em><\/strong><em> y <\/em><strong><em>y<\/em><\/strong><em> son atributos de clase que se inicializan en 0. Estos parecen representar la posici\u00f3n de la figura en el espacio 2D.<\/em>&nbsp;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><em>figures<\/em><\/strong><em> es una lista de listas que contiene definiciones de figuras geom\u00e9tricas. Cada figura se define como una lista de coordenadas x e y que forman la figura.<\/em>&nbsp;<\/li>\n<\/ul>\n\n\n\n<p><strong><em>M\u00e9todo <\/em><\/strong><strong><em>__init__<\/em><\/strong>&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>El m\u00e9todo <\/em><strong><em>__init__<\/em><\/strong><em> es el c<\/em>onstructor de la clas<em>e. Se llama cuando se crea un objeto de la clase <\/em><strong><em>Figure<\/em><\/strong><em>.<\/em>&nbsp;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>El constructor toma dos par\u00e1metros, <\/em><strong><em>x<\/em><\/strong><em> e <\/em><strong><em>y<\/em><\/strong><em>, que se utilizan para inicializar la posici\u00f3n de la figura.<\/em>&nbsp;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>El constructor tambi\u00e9n inicializa otros atributos:<\/em>&nbsp;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><em>type<\/em><\/strong><em>: un n\u00famero entero aleatorio entre 0 y el n\u00famero de figuras definidas en la lista <\/em><strong><em>figures<\/em><\/strong><em>. Esto parece seleccionar una figura aleatoria de la lista.<\/em>&nbsp;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><em>color<\/em><\/strong><em>: un n\u00famero entero aleatorio entre 1 y el n\u00famero de colores definidos en una lista llamada <\/em><strong><em>colors<\/em><\/strong><em> (que no se muestra en este c\u00f3digo). Esto parece seleccionar un color aleatorio para la figura.<\/em>&nbsp;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><em>rotation<\/em><\/strong><em>: se inicializa en 0. Esto parece representar la rotaci\u00f3n de la figura.<\/em>&nbsp;<\/li>\n<\/ul>\n\n\n\n<p><strong><em>M\u00e9todo <\/em><\/strong><strong><em>image<\/em><\/strong>&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>El m\u00e9todo <\/em><strong><em>image<\/em><\/strong><em> devuelve la definici\u00f3n de la figura actual, que se selecciona seg\u00fan el atributo <\/em><strong><em>type<\/em><\/strong><em> y la rotaci\u00f3n actual (<\/em><strong><em>rotation<\/em><\/strong><em>).<\/em>&nbsp;<\/li>\n<\/ul>\n\n\n\n<p><strong><em>M\u00e9todo <\/em><\/strong><strong><em>rotate<\/em><\/strong>&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>El m\u00e9todo <\/em><strong><em>rotate<\/em><\/strong><em> cambia la rotaci\u00f3n de la figura. La rotaci\u00f3n se incrementa en 1 y se mantiene dentro del rango de rotaciones posibles para la figura actual (es decir, el n\u00famero de elementos en la lista <\/em><strong><em>figures[self.type]<\/em><\/strong><em>).<\/em>&nbsp;<\/li>\n<\/ul>\n\n\n\n<p><em>En resumen, esta clase parece ser utilizada para crear objetos que representan figuras geom\u00e9tricas en un espacio 2D, con atributos como posici\u00f3n, tipo, color y rotaci\u00f3n. Los m\u00e9todos permiten obtener la definici\u00f3n de la figura actual y rotarla.<\/em>&nbsp;<\/p>\n<\/blockquote>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/niixer.com\/wp-content\/uploads\/2024\/11\/Captura-de-pantalla-40-1024x576.png\" alt=\"\" class=\"wp-image-57611\" srcset=\"https:\/\/niixer.com\/wp-content\/uploads\/2024\/11\/Captura-de-pantalla-40-1024x576.png 1024w, https:\/\/niixer.com\/wp-content\/uploads\/2024\/11\/Captura-de-pantalla-40-300x169.png 300w, https:\/\/niixer.com\/wp-content\/uploads\/2024\/11\/Captura-de-pantalla-40-768x432.png 768w, https:\/\/niixer.com\/wp-content\/uploads\/2024\/11\/Captura-de-pantalla-40-1536x864.png 1536w, https:\/\/niixer.com\/wp-content\/uploads\/2024\/11\/Captura-de-pantalla-40.png 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Luego tenemos le pedimos que nos explique el c\u00f3digo de la clase Tetris y obtenemos esto:&nbsp;<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>Este c\u00f3digo define una clase Tetris que representa un juego de Tetris. La clase tiene m\u00e9todos para gestionar el estado del juego, incluyendo:<\/em>&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>Inicializar el juego con un alto y ancho dados<\/em>&nbsp;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>Crear una nueva figura (tetromino) en la parte superior de la pantalla<\/em>&nbsp;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>Comprobar si la figura actual intersecta con el campo de juego existente<\/em>&nbsp;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>Romper l\u00edneas completas en el campo de juego y actualizar la puntuaci\u00f3n<\/em>&nbsp;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>Mover la figura hacia abajo, hacia los lados o rotarla<\/em>&nbsp;<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>Congelar la figura en su lugar cuando intersecta con el campo de juego<\/em>&nbsp;<\/li>\n<\/ul>\n\n\n\n<p><em>El estado del juego se representa mediante una lista 2D field donde cada elemento es 0 (vac\u00edo) o un valor de color (ocupado por una figura). El atributo figure representa la figura actual, y su posici\u00f3n y rotaci\u00f3n se actualizan mediante la l\u00f3gica del juego.<\/em>&nbsp;<\/p>\n<\/blockquote>\n\n\n\n<p>Y repetimos para la parte faltante del c\u00f3digo.&nbsp;<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>Este fragmento de c\u00f3digo es el bucle principal del juego Tetris implementado utilizando la biblioteca Pygame.<\/em>&nbsp;<\/p>\n\n\n\n<p><em>Aqu\u00ed tienes una explicaci\u00f3n breve:<\/em>&nbsp;<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><em>El juego inicializa Pygame, define algunos colores y crea una ventana de juego de tama\u00f1o 400&#215;500.<\/em>&nbsp;<\/li>\n<\/ol>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><em>El bucle del juego se ejecuta hasta que el usuario cierra la ventana.<\/em>&nbsp;<\/li>\n<\/ol>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><em>Dentro del bucle, el juego verifica los eventos (por ejemplo, pulsaciones de teclas, cierre de la ventana).<\/em>&nbsp;<\/li>\n<\/ol>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li><em>Bas\u00e1ndose en los eventos, el juego actualiza su estado (por ejemplo, mueve la figura actual hacia abajo, la gira o la mueve a la izquierda o derecha).<\/em>&nbsp;<\/li>\n<\/ol>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\">\n<li><em>El juego vuelve a dibujar la pantalla, incluyendo la cuadr\u00edcula del juego, la figura actual y la puntuaci\u00f3n.<\/em>&nbsp;<\/li>\n<\/ol>\n\n\n\n<ol start=\"6\" class=\"wp-block-list\">\n<li><em>Si el juego ha terminado, muestra un mensaje &#8220;Game Over&#8221; y espera a que el usuario presione la tecla ESC para reiniciar el juego.<\/em>&nbsp;<\/li>\n<\/ol>\n\n\n\n<ol start=\"7\" class=\"wp-block-list\">\n<li><em>El bucle del juego se ejecuta a una tasa de fotogramas fija (25 FPS) para controlar la velocidad del juego.<\/em>&nbsp;<\/li>\n<\/ol>\n\n\n\n<p><em>En resumen, este fragmento de c\u00f3digo se encarga de manejar la entrada del usuario, actualizar el estado del juego y renderizar las gr\u00e1ficas del juego.<\/em>&nbsp;<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Conclusi\u00f3n:<\/h3>\n\n\n\n<p>El uso de este tipo de herramientas puede ser muy \u00fatil para el \u00e1mbito laboral ya que les permite a los desarrolladores ahorrar tiempo y ser m\u00e1s eficientes. Tambi\u00e9n en lo acad\u00e9mico puede ser \u00fatil para quienes est\u00e1n aprendiendo programaci\u00f3n, pero tienen dificultades en el entendimiento.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Cr\u00e9ditos:&nbsp;<\/strong><\/h2>\n\n\n\n<p>Autor: Juan Pablo Rojas Cardozo.<\/p>\n\n\n\n<p>Editor: Mg. &nbsp;<a href=\"https:\/\/niixer.com\/?s=Carlos+Ivan+Pinzon+Romero\">Carlos Iv\u00e1n Pinz\u00f3n Romero<\/a>.<\/p>\n\n\n\n<p>C\u00f3digo: <a href=\"https:\/\/niixer.com\/?s=UCPI1G2-2\">UCPI1G1-2<\/a><\/p>\n\n\n\n<p>Universidad:&nbsp;<a href=\"https:\/\/www.ucentral.edu.co\/\">Universidad Central<\/a>,&nbsp;<a href=\"https:\/\/www.ucentral.edu.co\/ficb\/facultad-ingenieria-ciencias-basicas\">Facultad de Ingenier\u00eda y Ciencias B\u00e1sicas<\/a>.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Codeium Free AI Code Completion &amp; Chat.(s.f). Provide Authentication Token to VSCode. Codeium. https:\/\/codeium.com\/show-auth-token<br><br>timurbakibayev. (s.\u00a0f.). Tetris game in Python. github.com. https:\/\/gist.github.com\/timurbakibayev\/1f683d34487362b0f36280989c80960c<\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Codeium es una herramienta de inteligencia artificial creada para ayudar a los desarrolladores en la programaci\u00f3n. Proporciona autocompletado de c\u00f3digo, sugerencias y asistencia en tiempo real mientras se escribe, lo que puede mejorar la productividad y facilitar la escritura de c\u00f3digo<\/p>\n","protected":false},"author":1836,"featured_media":57600,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[36],"tags":[3919,2567,32,329,1787,3763,66,695],"class_list":["post-57410","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-inteligencia-artificial","tag-codeium","tag-desarrollo-de-software","tag-inteligencia-artificial","tag-programacion","tag-python","tag-tutoriaales","tag-videojuegos","tag-visual-studio-community"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Analizando c\u00f3digo con Codeium. Una IA para desarrolladores\u00a0 &#8211; Portal de noticias de tecnolog\u00eda, Realidad Virtual, Aumentada y Mixta, Videojuegos<\/title>\n<meta name=\"description\" content=\"Codeium es una herramienta de inteligencia artificial creada para ayudar a los desarrolladores en la programaci\u00f3n mejorar la productividad y facilitar la escritura de c\u00f3digo.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/niixer.com\/index.php\/2024\/11\/01\/analizando-codigo-con-codeium-una-ia-para-desarrolladores\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Analizando c\u00f3digo con Codeium. Una IA para desarrolladores\u00a0 &#8211; Portal de noticias de tecnolog\u00eda, Realidad Virtual, Aumentada y Mixta, Videojuegos\" \/>\n<meta property=\"og:description\" content=\"Codeium es una herramienta de inteligencia artificial creada para ayudar a los desarrolladores en la programaci\u00f3n mejorar la productividad y facilitar la escritura de c\u00f3digo.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/niixer.com\/index.php\/2024\/11\/01\/analizando-codigo-con-codeium-una-ia-para-desarrolladores\/\" \/>\n<meta property=\"og:site_name\" content=\"Portal de noticias de tecnolog\u00eda, Realidad Virtual, Aumentada y Mixta, Videojuegos\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/niixer\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T14:48:16+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T14:48:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/niixer.com\/wp-content\/uploads\/2024\/10\/codeium.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"800\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"jrojasc16\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"jrojasc16\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Analizando c\u00f3digo con Codeium. Una IA para desarrolladores\u00a0 &#8211; Portal de noticias de tecnolog\u00eda, Realidad Virtual, Aumentada y Mixta, Videojuegos","description":"Codeium es una herramienta de inteligencia artificial creada para ayudar a los desarrolladores en la programaci\u00f3n mejorar la productividad y facilitar la escritura de c\u00f3digo.","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:\/\/niixer.com\/index.php\/2024\/11\/01\/analizando-codigo-con-codeium-una-ia-para-desarrolladores\/","og_locale":"es_ES","og_type":"article","og_title":"Analizando c\u00f3digo con Codeium. Una IA para desarrolladores\u00a0 &#8211; Portal de noticias de tecnolog\u00eda, Realidad Virtual, Aumentada y Mixta, Videojuegos","og_description":"Codeium es una herramienta de inteligencia artificial creada para ayudar a los desarrolladores en la programaci\u00f3n mejorar la productividad y facilitar la escritura de c\u00f3digo.","og_url":"https:\/\/niixer.com\/index.php\/2024\/11\/01\/analizando-codigo-con-codeium-una-ia-para-desarrolladores\/","og_site_name":"Portal de noticias de tecnolog\u00eda, Realidad Virtual, Aumentada y Mixta, Videojuegos","article_publisher":"https:\/\/www.facebook.com\/niixer\/","article_published_time":"2024-11-01T14:48:16+00:00","article_modified_time":"2024-11-01T14:48:17+00:00","og_image":[{"width":1280,"height":800,"url":"https:\/\/niixer.com\/wp-content\/uploads\/2024\/10\/codeium.webp","type":"image\/webp"}],"author":"jrojasc16","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"jrojasc16","Tiempo de lectura":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/niixer.com\/index.php\/2024\/11\/01\/analizando-codigo-con-codeium-una-ia-para-desarrolladores\/#article","isPartOf":{"@id":"https:\/\/niixer.com\/index.php\/2024\/11\/01\/analizando-codigo-con-codeium-una-ia-para-desarrolladores\/"},"author":{"name":"jrojasc16","@id":"https:\/\/niixer.com\/#\/schema\/person\/020fe96dfb215e468580984beb4d5334"},"headline":"Analizando c\u00f3digo con Codeium. Una IA para desarrolladores\u00a0","datePublished":"2024-11-01T14:48:16+00:00","dateModified":"2024-11-01T14:48:17+00:00","mainEntityOfPage":{"@id":"https:\/\/niixer.com\/index.php\/2024\/11\/01\/analizando-codigo-con-codeium-una-ia-para-desarrolladores\/"},"wordCount":1791,"publisher":{"@id":"https:\/\/niixer.com\/#organization"},"image":{"@id":"https:\/\/niixer.com\/index.php\/2024\/11\/01\/analizando-codigo-con-codeium-una-ia-para-desarrolladores\/#primaryimage"},"thumbnailUrl":"https:\/\/niixer.com\/wp-content\/uploads\/2024\/10\/codeium.webp","keywords":["Codeium","desarrollo de software","Inteligencia Artificial","Programaci\u00f3n","Python","tutoriaales","Videojuegos","Visual Studio Community"],"articleSection":["Inteligencia Artificial"],"inLanguage":"es"},{"@type":"WebPage","@id":"https:\/\/niixer.com\/index.php\/2024\/11\/01\/analizando-codigo-con-codeium-una-ia-para-desarrolladores\/","url":"https:\/\/niixer.com\/index.php\/2024\/11\/01\/analizando-codigo-con-codeium-una-ia-para-desarrolladores\/","name":"Analizando c\u00f3digo con Codeium. Una IA para desarrolladores\u00a0 &#8211; Portal de noticias de tecnolog\u00eda, Realidad Virtual, Aumentada y Mixta, Videojuegos","isPartOf":{"@id":"https:\/\/niixer.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/niixer.com\/index.php\/2024\/11\/01\/analizando-codigo-con-codeium-una-ia-para-desarrolladores\/#primaryimage"},"image":{"@id":"https:\/\/niixer.com\/index.php\/2024\/11\/01\/analizando-codigo-con-codeium-una-ia-para-desarrolladores\/#primaryimage"},"thumbnailUrl":"https:\/\/niixer.com\/wp-content\/uploads\/2024\/10\/codeium.webp","datePublished":"2024-11-01T14:48:16+00:00","dateModified":"2024-11-01T14:48:17+00:00","description":"Codeium es una herramienta de inteligencia artificial creada para ayudar a los desarrolladores en la programaci\u00f3n mejorar la productividad y facilitar la escritura de c\u00f3digo.","breadcrumb":{"@id":"https:\/\/niixer.com\/index.php\/2024\/11\/01\/analizando-codigo-con-codeium-una-ia-para-desarrolladores\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/niixer.com\/index.php\/2024\/11\/01\/analizando-codigo-con-codeium-una-ia-para-desarrolladores\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/niixer.com\/index.php\/2024\/11\/01\/analizando-codigo-con-codeium-una-ia-para-desarrolladores\/#primaryimage","url":"https:\/\/niixer.com\/wp-content\/uploads\/2024\/10\/codeium.webp","contentUrl":"https:\/\/niixer.com\/wp-content\/uploads\/2024\/10\/codeium.webp","width":1280,"height":800,"caption":"Logo de Codeium"},{"@type":"BreadcrumbList","@id":"https:\/\/niixer.com\/index.php\/2024\/11\/01\/analizando-codigo-con-codeium-una-ia-para-desarrolladores\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/niixer.com\/"},{"@type":"ListItem","position":2,"name":"Analizando c\u00f3digo con Codeium. Una IA para desarrolladores\u00a0"}]},{"@type":"WebSite","@id":"https:\/\/niixer.com\/#website","url":"https:\/\/niixer.com\/","name":"Portal de noticias de tecnolog\u00eda, ciencia, Android, iOS, Realidad Virtual, Aumentada y Mixta, Videojuegos, computadores, todo lo mas reciente en tecnolog\u00eda","description":"Portal de noticias de tecnolog\u00eda","publisher":{"@id":"https:\/\/niixer.com\/#organization"},"alternateName":"Niixer","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/niixer.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/niixer.com\/#organization","name":"Niixer","alternateName":"Niixer.com","url":"https:\/\/niixer.com\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/niixer.com\/#\/schema\/logo\/image\/","url":"https:\/\/niixer.com\/wp-content\/uploads\/2022\/08\/logo-niixer-sin-fondo-1.png","contentUrl":"https:\/\/niixer.com\/wp-content\/uploads\/2022\/08\/logo-niixer-sin-fondo-1.png","width":140,"height":140,"caption":"Niixer"},"image":{"@id":"https:\/\/niixer.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/niixer\/","https:\/\/www.instagram.com\/niixer.tecnologia\/"]},{"@type":"Person","@id":"https:\/\/niixer.com\/#\/schema\/person\/020fe96dfb215e468580984beb4d5334","name":"jrojasc16","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/e72a903599ec499a0dc9b4388a2e58232bcb60e71ad5532a4700da4dcb7d174c?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/e72a903599ec499a0dc9b4388a2e58232bcb60e71ad5532a4700da4dcb7d174c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e72a903599ec499a0dc9b4388a2e58232bcb60e71ad5532a4700da4dcb7d174c?s=96&d=mm&r=g","caption":"jrojasc16"},"url":"https:\/\/niixer.com\/index.php\/author\/jrojasc16\/"}]}},"jetpack_featured_media_url":"https:\/\/niixer.com\/wp-content\/uploads\/2024\/10\/codeium.webp","_links":{"self":[{"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/posts\/57410","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/users\/1836"}],"replies":[{"embeddable":true,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/comments?post=57410"}],"version-history":[{"count":18,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/posts\/57410\/revisions"}],"predecessor-version":[{"id":57632,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/posts\/57410\/revisions\/57632"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/media\/57600"}],"wp:attachment":[{"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/media?parent=57410"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/categories?post=57410"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/niixer.com\/index.php\/wp-json\/wp\/v2\/tags?post=57410"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}