{"id":1205,"date":"2026-03-11T15:51:32","date_gmt":"2026-03-11T18:51:32","guid":{"rendered":"https:\/\/maurobernal.com.ar\/blog\/?p=1205"},"modified":"2026-03-11T16:12:17","modified_gmt":"2026-03-11T19:12:17","slug":"angular-21-zoneless-signals-deteccion-cambios","status":"publish","type":"post","link":"https:\/\/maurobernal.com.ar\/blog\/angular-21-zoneless-signals-deteccion-cambios\/","title":{"rendered":"Adi\u00f3s Zone.js: c\u00f3mo Angular 21 cambi\u00f3 la detecci\u00f3n de cambios para siempre"},"content":{"rendered":"\n<p class=\"intro-destacado\">Cuando le\u00ed \u00abAngular sin Zone.js\u00bb por primera vez pens\u00e9 que era un truco de optimizaci\u00f3n para casos extremos. Ahora es el est\u00e1ndar. Y una vez que lo entend\u00e9s, no quer\u00e9s volver. La detecci\u00f3n de cambios deja de ser magia negra para convertirse en algo predecible y controlable.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Qu\u00e9 hac\u00eda Zone.js y por qu\u00e9 era problem\u00e1tico<\/h2>\n\n\n\n<p>Zone.js es una librer\u00eda que parcha todas las APIs as\u00edncronas del browser: <code>setTimeout<\/code>, <code>setInterval<\/code>, <code>Promise<\/code>, <code>addEventListener<\/code>, <code>XMLHttpRequest<\/code>. Cuando cualquiera de esas operaciones completa, Zone.js notifica a Angular para que ejecute la detecci\u00f3n de cambios en todo el \u00e1rbol de componentes.<\/p>\n\n\n\n<p>El problema: esa detecci\u00f3n recorre <em>todo<\/em> el \u00e1rbol aunque solo cambiara un campo en un componente profundo. En aplicaciones grandes, eso genera renders innecesarios que degradan el INP (Interaction to Next Paint), la m\u00e9trica Core Web Vital que Google usa para el ranking.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Con Zone.js: cualquier click, timeout o promesa dispara detecci\u00f3n en TODO el \u00e1rbol\n\/\/ &#x274c; Angular eval\u00faa todos los componentes aunque nada haya cambiado\n\n\/\/ Con Signals: solo los componentes que dependen del Signal actualizado se re-renderizan\n\/\/ &#x2705; Detecci\u00f3n quir\u00fargica y predecible<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Activar Zoneless en Angular 21<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ app.config.ts\nimport {\n  ApplicationConfig,\n  provideZonelessChangeDetection\n} from '@angular\/core';\nimport { provideRouter } from '@angular\/router';\nimport { routes } from '.\/app.routes';\n\nexport const appConfig: ApplicationConfig = {\n  providers: [\n    provideZonelessChangeDetection(),\n    provideRouter(routes)\n  ]\n};<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ angular.json \u2014 eliminar zone.js de los polyfills\n{\n  \"projects\": {\n    \"mi-app\": {\n      \"architect\": {\n        \"build\": {\n          \"options\": {\n            \"polyfills\": []\n          }\n        }\n      }\n    }\n  }\n}\n\n\/\/ package.json \u2014 desinstalar\n\/\/ npm uninstall zone.js<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Signals: el mecanismo que reemplaza a Zone.js<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>import { Component, signal, computed, effect } from '@angular\/core';\n\n@Component({\n  selector: 'app-contador',\n  template: `\n    &lt;p&gt;Contador: {{ contador() }}&lt;\/p&gt;\n    &lt;p&gt;Doble: {{ doble() }}&lt;\/p&gt;\n    &lt;button (click)=\"incrementar()\"&gt;+1&lt;\/button&gt;\n  `\n})\nexport class ContadorComponent {\n  contador = signal(0);\n  doble = computed(() => this.contador() * 2);\n\n  constructor() {\n    effect(() => {\n      console.log(`Contador cambi\u00f3 a: ${this.contador()}`);\n    });\n  }\n\n  incrementar() {\n    this.contador.update(v => v + 1);\n    \/\/ Solo re-renderiza este componente \u2014 no el \u00e1rbol completo\n  }\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Signals vs Observables: cu\u00e1ndo uso cada uno<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Situaci\u00f3n<\/th><th>Signal<\/th><th>Observable (RxJS)<\/th><\/tr><\/thead><tbody>\n<tr><td>Estado local del componente<\/td><td>&#x2705; Ideal<\/td><td>Innecesariamente complejo<\/td><\/tr>\n<tr><td>Estado derivado (computed)<\/td><td>&#x2705; <code>computed()<\/code><\/td><td>pipe + map<\/td><\/tr>\n<tr><td>Streams de eventos complejos<\/td><td>No aplica bien<\/td><td>&#x2705; Ideal<\/td><\/tr>\n<tr><td>HTTP requests<\/td><td>&#x2705; httpResource<\/td><td>HttpClient + async pipe<\/td><\/tr>\n<tr><td>WebSockets \/ SSE<\/td><td>Combinado con toSignal()<\/td><td>&#x2705; Ideal<\/td><\/tr>\n<tr><td>Estado global (store)<\/td><td>&#x2705; signals + services<\/td><td>NgRx \/ Akita<\/td><\/tr>\n<\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">toSignal() y toObservable(): el puente entre mundos<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>import { toSignal, toObservable } from '@angular\/core\/rxjs-interop';\nimport { HttpClient } from '@angular\/common\/http';\nimport { debounceTime, switchMap } from 'rxjs\/operators';\n\n@Component({ ... })\nexport class MiComponent {\n  private http = inject(HttpClient);\n\n  \/\/ Observable \u2192 Signal (sin async pipe en el template)\n  usuarios = toSignal(\n    this.http.get&lt;Usuario[]&gt;('\/api\/usuarios'),\n    { initialValue: [] }\n  );\n\n  \/\/ Signal \u2192 Observable (para operadores RxJS)\n  busqueda = signal('');\n  resultados$ = toObservable(this.busqueda).pipe(\n    debounceTime(300),\n    switchMap(q => this.http.get(`\/api\/buscar?q=${q}`))\n  );\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">El impacto real en rendimiento<\/h2>\n\n\n\n<p>En una aplicaci\u00f3n de gesti\u00f3n interna que migramos \u2014 dashboard con tablas de datos, filtros y actualizaciones frecuentes \u2014 la migraci\u00f3n a Zoneless redujo el INP de 380ms a 95ms. La diferencia viene de eliminar los ciclos de detecci\u00f3n de cambios innecesarios que Zone.js disparaba con cada interacci\u00f3n del usuario, aunque ning\u00fan dato de la vista hubiera cambiado.<\/p>\n\n<hr class=\"wp-block-separator\"\/>\n<p><em>\u2190 <a href=\"https:\/\/maurobernal.com.ar\/blog\/blog\/angular\/angular-21-cambio-de-paradigma-signals-zoneless\/\">Art\u00edculo anterior: Angular 21: el cambio de paradigma que no pod\u00e9s ignorar<\/a> | <strong>Serie Angular 20 \u2192 21.2<\/strong> | Pr\u00f3ximo: <a href=\"https:\/\/maurobernal.com.ar\/blog\/blog\/angular\/angular-21-signal-forms-formularios-reactivos\/\">Signal Forms: cuando los formularios reactivos finalmente tienen sentido \u2192<\/a><\/em><\/p>","protected":false},"excerpt":{"rendered":"<p>Qu\u00e9 era Zone.js, por qu\u00e9 se fue y c\u00f3mo las Signals lo reemplazan con detecci\u00f3n de cambios quir\u00fargica. C\u00f3mo activar Zoneless, toSignal(), toObservable() y el impacto real en INP.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[273],"tags":[274,291,292,65,275,278,279],"class_list":["post-1205","post","type-post","status-publish","format-standard","hentry","category-angular","tag-angular","tag-angular21","tag-change-detection","tag-performance","tag-signals","tag-typescript","tag-zoneless"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Adi\u00f3s Zone.js: c\u00f3mo Angular 21 cambi\u00f3 la detecci\u00f3n de cambios para siempre &#183; devops Mauro Bernal<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/maurobernal.com.ar\/blog\/angular-21-zoneless-signals-deteccion-cambios\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Adi\u00f3s Zone.js: c\u00f3mo Angular 21 cambi\u00f3 la detecci\u00f3n de cambios para siempre &#183; devops Mauro Bernal\" \/>\n<meta property=\"og:description\" content=\"Qu\u00e9 era Zone.js, por qu\u00e9 se fue y c\u00f3mo las Signals lo reemplazan con detecci\u00f3n de cambios quir\u00fargica. C\u00f3mo activar Zoneless, toSignal(), toObservable() y el impacto real en INP.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/maurobernal.com.ar\/blog\/angular-21-zoneless-signals-deteccion-cambios\/\" \/>\n<meta property=\"og:site_name\" content=\"devops Mauro Bernal\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-11T18:51:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-11T19:12:17+00:00\" \/>\n<meta name=\"author\" content=\"Mauro Bernal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@_maurobernal\" \/>\n<meta name=\"twitter:site\" content=\"@_maurobernal\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mauro Bernal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/angular-21-zoneless-signals-deteccion-cambios\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/angular-21-zoneless-signals-deteccion-cambios\\\/\"},\"author\":{\"name\":\"Mauro Bernal\",\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/#\\\/schema\\\/person\\\/09c4dbdfb59b20e015c703fd19713283\"},\"headline\":\"Adi\u00f3s Zone.js: c\u00f3mo Angular 21 cambi\u00f3 la detecci\u00f3n de cambios para siempre\",\"datePublished\":\"2026-03-11T18:51:32+00:00\",\"dateModified\":\"2026-03-11T19:12:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/angular-21-zoneless-signals-deteccion-cambios\\\/\"},\"wordCount\":335,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/#\\\/schema\\\/person\\\/09c4dbdfb59b20e015c703fd19713283\"},\"keywords\":[\"angular\",\"angular21\",\"change-detection\",\"performance\",\"signals\",\"typescript\",\"zoneless\"],\"articleSection\":[\"Angular\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/angular-21-zoneless-signals-deteccion-cambios\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/angular-21-zoneless-signals-deteccion-cambios\\\/\",\"url\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/angular-21-zoneless-signals-deteccion-cambios\\\/\",\"name\":\"Adi\u00f3s Zone.js: c\u00f3mo Angular 21 cambi\u00f3 la detecci\u00f3n de cambios para siempre &#183; devops Mauro Bernal\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/#website\"},\"datePublished\":\"2026-03-11T18:51:32+00:00\",\"dateModified\":\"2026-03-11T19:12:17+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/angular-21-zoneless-signals-deteccion-cambios\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/angular-21-zoneless-signals-deteccion-cambios\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/angular-21-zoneless-signals-deteccion-cambios\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Adi\u00f3s Zone.js: c\u00f3mo Angular 21 cambi\u00f3 la detecci\u00f3n de cambios para siempre\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/\",\"name\":\"devops Mauro Bernal\",\"description\":\"Cuando tu trabajo es hacer que las cosas funcionen bien...\",\"publisher\":{\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/#\\\/schema\\\/person\\\/09c4dbdfb59b20e015c703fd19713283\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/maurobernal.com.ar\\\/blog\\\/#\\\/schema\\\/person\\\/09c4dbdfb59b20e015c703fd19713283\",\"name\":\"Mauro Bernal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/i0.wp.com\\\/maurobernal.com.ar\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/logo-maurobernal.png?fit=1740%2C1740&ssl=1\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/maurobernal.com.ar\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/logo-maurobernal.png?fit=1740%2C1740&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/maurobernal.com.ar\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/logo-maurobernal.png?fit=1740%2C1740&ssl=1\",\"width\":1740,\"height\":1740,\"caption\":\"Mauro Bernal\"},\"logo\":{\"@id\":\"https:\\\/\\\/i0.wp.com\\\/maurobernal.com.ar\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/logo-maurobernal.png?fit=1740%2C1740&ssl=1\"},\"description\":\"Desarrollo de Sistemas en .Net, IT Callcenters, DBA de SQL Server, Mikrotik, Pentest y T\u00e9cnico consultor de Sistemas Bejerman\",\"sameAs\":[\"https:\\\/\\\/maurobernal.com.ar\",\"https:\\\/\\\/x.com\\\/_maurobernal\",\"https:\\\/\\\/youtube.com\\\/maurobernal\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Adi\u00f3s Zone.js: c\u00f3mo Angular 21 cambi\u00f3 la detecci\u00f3n de cambios para siempre &#183; devops Mauro Bernal","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:\/\/maurobernal.com.ar\/blog\/angular-21-zoneless-signals-deteccion-cambios\/","og_locale":"es_ES","og_type":"article","og_title":"Adi\u00f3s Zone.js: c\u00f3mo Angular 21 cambi\u00f3 la detecci\u00f3n de cambios para siempre &#183; devops Mauro Bernal","og_description":"Qu\u00e9 era Zone.js, por qu\u00e9 se fue y c\u00f3mo las Signals lo reemplazan con detecci\u00f3n de cambios quir\u00fargica. C\u00f3mo activar Zoneless, toSignal(), toObservable() y el impacto real en INP.","og_url":"https:\/\/maurobernal.com.ar\/blog\/angular-21-zoneless-signals-deteccion-cambios\/","og_site_name":"devops Mauro Bernal","article_published_time":"2026-03-11T18:51:32+00:00","article_modified_time":"2026-03-11T19:12:17+00:00","author":"Mauro Bernal","twitter_card":"summary_large_image","twitter_creator":"@_maurobernal","twitter_site":"@_maurobernal","twitter_misc":{"Escrito por":"Mauro Bernal","Tiempo de lectura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/maurobernal.com.ar\/blog\/angular-21-zoneless-signals-deteccion-cambios\/#article","isPartOf":{"@id":"https:\/\/maurobernal.com.ar\/blog\/angular-21-zoneless-signals-deteccion-cambios\/"},"author":{"name":"Mauro Bernal","@id":"https:\/\/maurobernal.com.ar\/blog\/#\/schema\/person\/09c4dbdfb59b20e015c703fd19713283"},"headline":"Adi\u00f3s Zone.js: c\u00f3mo Angular 21 cambi\u00f3 la detecci\u00f3n de cambios para siempre","datePublished":"2026-03-11T18:51:32+00:00","dateModified":"2026-03-11T19:12:17+00:00","mainEntityOfPage":{"@id":"https:\/\/maurobernal.com.ar\/blog\/angular-21-zoneless-signals-deteccion-cambios\/"},"wordCount":335,"commentCount":0,"publisher":{"@id":"https:\/\/maurobernal.com.ar\/blog\/#\/schema\/person\/09c4dbdfb59b20e015c703fd19713283"},"keywords":["angular","angular21","change-detection","performance","signals","typescript","zoneless"],"articleSection":["Angular"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/maurobernal.com.ar\/blog\/angular-21-zoneless-signals-deteccion-cambios\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/maurobernal.com.ar\/blog\/angular-21-zoneless-signals-deteccion-cambios\/","url":"https:\/\/maurobernal.com.ar\/blog\/angular-21-zoneless-signals-deteccion-cambios\/","name":"Adi\u00f3s Zone.js: c\u00f3mo Angular 21 cambi\u00f3 la detecci\u00f3n de cambios para siempre &#183; devops Mauro Bernal","isPartOf":{"@id":"https:\/\/maurobernal.com.ar\/blog\/#website"},"datePublished":"2026-03-11T18:51:32+00:00","dateModified":"2026-03-11T19:12:17+00:00","breadcrumb":{"@id":"https:\/\/maurobernal.com.ar\/blog\/angular-21-zoneless-signals-deteccion-cambios\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/maurobernal.com.ar\/blog\/angular-21-zoneless-signals-deteccion-cambios\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/maurobernal.com.ar\/blog\/angular-21-zoneless-signals-deteccion-cambios\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/maurobernal.com.ar\/blog\/"},{"@type":"ListItem","position":2,"name":"Adi\u00f3s Zone.js: c\u00f3mo Angular 21 cambi\u00f3 la detecci\u00f3n de cambios para siempre"}]},{"@type":"WebSite","@id":"https:\/\/maurobernal.com.ar\/blog\/#website","url":"https:\/\/maurobernal.com.ar\/blog\/","name":"devops Mauro Bernal","description":"Cuando tu trabajo es hacer que las cosas funcionen bien...","publisher":{"@id":"https:\/\/maurobernal.com.ar\/blog\/#\/schema\/person\/09c4dbdfb59b20e015c703fd19713283"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/maurobernal.com.ar\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":["Person","Organization"],"@id":"https:\/\/maurobernal.com.ar\/blog\/#\/schema\/person\/09c4dbdfb59b20e015c703fd19713283","name":"Mauro Bernal","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/i0.wp.com\/maurobernal.com.ar\/blog\/wp-content\/uploads\/2023\/07\/logo-maurobernal.png?fit=1740%2C1740&ssl=1","url":"https:\/\/i0.wp.com\/maurobernal.com.ar\/blog\/wp-content\/uploads\/2023\/07\/logo-maurobernal.png?fit=1740%2C1740&ssl=1","contentUrl":"https:\/\/i0.wp.com\/maurobernal.com.ar\/blog\/wp-content\/uploads\/2023\/07\/logo-maurobernal.png?fit=1740%2C1740&ssl=1","width":1740,"height":1740,"caption":"Mauro Bernal"},"logo":{"@id":"https:\/\/i0.wp.com\/maurobernal.com.ar\/blog\/wp-content\/uploads\/2023\/07\/logo-maurobernal.png?fit=1740%2C1740&ssl=1"},"description":"Desarrollo de Sistemas en .Net, IT Callcenters, DBA de SQL Server, Mikrotik, Pentest y T\u00e9cnico consultor de Sistemas Bejerman","sameAs":["https:\/\/maurobernal.com.ar","https:\/\/x.com\/_maurobernal","https:\/\/youtube.com\/maurobernal"]}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/posts\/1205","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/comments?post=1205"}],"version-history":[{"count":3,"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/posts\/1205\/revisions"}],"predecessor-version":[{"id":1226,"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/posts\/1205\/revisions\/1226"}],"wp:attachment":[{"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/media?parent=1205"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/categories?post=1205"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/maurobernal.com.ar\/blog\/wp-json\/wp\/v2\/tags?post=1205"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}