tag:blogger.com,1999:blog-259603652024-02-19T23:31:15.071+01:00Mi pequeño rincón - Gabriel CuestaDesarrollo Móvil, Web y Videojuegos, tanto nuevos como retro.Gabriel Cuestahttp://www.blogger.com/profile/02269426169402001647noreply@blogger.comBlogger1919125tag:blogger.com,1999:blog-25960365.post-84186241136102672802020-11-18T09:29:00.004+01:002020-11-18T09:29:27.508+01:00Diferencias entre JavaScript y entre TypeScript<p>¿Cuales son las diferencias entre <b>JavaScript</b> y <b>TypeScript</b>?</p><p><b>TypeScript</b> es un <i>superset</i> de <b>JavaScript</b>, se diferencian principalmente en los siguientes aspectos:</p><p></p><ul style="text-align: left;"><li><b>TypeScript</b> es un lenguaje de programación orientado a objetos, JavaScript es un lenguaje de scripting.</li><li><b>TypeScript</b> tiene tipado estático de variables, JavaScript no.</li><li><b>TypeScript</b> soporta Interfaces y Módulos, JavaScript no.</li><li><b>TypeScript</b> soporta parámetros opcionales en los métodos, JavaScript no.</li><li><b>TypeScript</b> genera errores cuando se compila, JavaScript no se compila.</li></ul><p></p><p>Espero que os sea de utilidad ^_^.</p>Gabriel Cuestahttp://www.blogger.com/profile/02269426169402001647noreply@blogger.com0tag:blogger.com,1999:blog-25960365.post-55153384061111301062020-09-15T17:18:00.003+02:002020-09-15T17:18:35.209+02:00JavaScript: Una alternativa a console.log<div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-bN43gHy8qNM/XrxE9cI4u_I/AAAAAAAAYME/5EmtPSh0W2wpjKb4Ib0XLqa4hrv9J75IQCPcBGAYYCw/s600/javascript-logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="323" data-original-width="600" src="https://1.bp.blogspot.com/-bN43gHy8qNM/XrxE9cI4u_I/AAAAAAAAYME/5EmtPSh0W2wpjKb4Ib0XLqa4hrv9J75IQCPcBGAYYCw/s320/javascript-logo.png" width="320" /></a></div><br /><p>Cuando desarrollo en JavaScript siempre utilizo el consabido console.log para imprimir los datos en la consola. Este comando permite varios modificadores para que su resultado tenga un formato más legible, pero llega hasta donde llega.</p><p>Una buena alternativa es utilizar console.table().</p><p>Console.table nos permite imprimir en pantalla conjuntos de datos bien organizados.</p><p>Os pongo un par de ejemplos de como utilizarlo.</p><p><b style="background-color: black;"><span style="color: white;">const animales = [</span></b></p><p><b style="background-color: black;"><span style="color: white;"> { name: 'perro', tipo: 'mamífero' },</span></b></p><p><b style="background-color: black;"><span style="color: white;"> { name: 'gato', tipo: 'mamífero' },</span></b></p><p><b style="background-color: black;"><span style="color: white;"> { name: 'serpiente', tipo: 'reptil' } ];</span></b></p><p><b style="background-color: black;"><span style="color: white;">console.table(animales);</span></b></p><p>O bien:</p><p><b style="background-color: black;"><span style="color: white;">const animales = [</span></b></p><p><b style="background-color: black;"><span style="color: white;"> ['perro', 'mamífero'],</span></b></p><p><b style="background-color: black;"><span style="color: white;"> ['gato', 'mamífero'],</span></b></p><p><b style="background-color: black;"><span style="color: white;"> ['serpiente', 'reptil'],</span></b></p><p><b style="background-color: black;"><span style="color: white;">];</span></b></p><p><b style="background-color: black;"><span style="color: white;">console.table(animales);</span></b></p><p>En ambos casos el comando nos mostrará en pantalla los datos bien organizados.</p><p>Espero que os sea de utilidad ^_^.</p>Gabriel Cuestahttp://www.blogger.com/profile/02269426169402001647noreply@blogger.com0tag:blogger.com,1999:blog-25960365.post-59284553732440389032020-09-14T11:19:00.004+02:002020-09-14T11:19:30.318+02:00Tipos de 5G<div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-TvGF2naBA1I/X181gzKoCJI/AAAAAAAAdKk/74V7UoB4emg8TtOkt6FjBZa4rvcnZJKEwCLcBGAsYHQ/s990/5g.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="526" data-original-width="990" height="340" src="https://1.bp.blogspot.com/-TvGF2naBA1I/X181gzKoCJI/AAAAAAAAdKk/74V7UoB4emg8TtOkt6FjBZa4rvcnZJKEwCLcBGAsYHQ/w640-h340/5g.jpg" width="640" /></a></div><p>Ahora mismo hay dos tipos de 5G: NSA y SA.</p><p>El NSA es el que están implantando ahora las operadoras en España, utilizan la infraestructura de antenas 4G existente y le añaden la posibilidad de conectarse a móviles 5G, supone una mejora con respecto al 4G, pero no alcanzan la velocidad real de una red pura de 5G.</p><p>A partir del 2021 -covid mediante- comenzarán con el despliegue de las redes SA, estas si que son redes puras de 5G, mucho más rápidas que las redes de 4G, aquí es donde vamos a notar la revolución.</p><p>¿Conclusión? Me voy a esperar aún un rato antes de dar el salto, cuando me cambie de móvil en un par de años querré uno 5G, pero ahora mismo no es una prioridad.</p>Gabriel Cuestahttp://www.blogger.com/profile/02269426169402001647noreply@blogger.com0tag:blogger.com,1999:blog-25960365.post-48549975657996107502020-09-10T14:07:00.001+02:002020-09-10T14:07:20.981+02:00Tenet<p>El viernes pasado vi Tenet en el cine, con la que nos está cayendo con el tema del coronavirus voy mucho menos al cine que antes, fui a verla con mi mujer, ninguno de los dos somos fans o haters de Nolan.</p><p>Tenet nos plantea una película de acción y espionaje con elementos de fantasía vestida de ciencia, la mezcla a veces es algo confusa, pero si quieres pasar un buen rato sin complicaciones funciona, pero dudo mucho de que su coherencia resista muchos revisionados.</p><p>Las escenas de acción están muy bien rodadas, son espectaculares, con un sonido atronador y un gran trabajo para conseguir hacer inteligibles situaciones -cuando veáis la película me entenderéis- que podrían haber sido un galimatías, es un trabajo muy cuidado y en mi opinión supera de lejos todas las setpieces de acción que había rodado Nolan hasta ahora.</p><p>Las interpretaciones son correctas, destaca el trabajo de Robert Pattison, con poco tiempo en pantalla dota a su personaje de una fina ironía británica y de un calor humano del que carece el personaje protagonista (llamado el protagonista) interpretado por John David Washington, no es que este sea un mal actor, es que la escritura del guión peca de las habituales notas de frialdad de Nolan, le cuesta mucho dotar de carne a sus personajes, me encantan sus historias pero rara vez conecto con sus protagonistas. </p><p>Completando el elenco tenemos a Elizabeth Debicki que realiza una labor competente encarnando a la esposa en apuros del malo de turno, no es la primera vez que la veo en este papel, espero que no se quede encasillada porque creo que puede dar más juego en el futuro. El malo -de manual- está interpretado por Kenneth Branagh, resulta amenazador, pero unidimensional por completo.</p><p>La fotografía es algo fría, pero recurre a escenarios muy poco utilizados en las grandes producciones, se agradece no ver los lugares habituales de las grandes producciones. Las escenas de interior también están bien ambientadas aunque hay un exceso de papel celofán en algunos momentos. Todo está muy medido y cuidado, al estilo Nolan.</p><p>El guión está muy trabajado, la historia es muy buena y te engancha desde el principio, tienes que tragar eso sí con la propuesta "científica" principal de este producto, pero si suspendes el sentido crítico en este punto todo fluye bien. Los personajes muy fríos, eso sí, y se queda mucho por contar de ellos, por si quieren hacer una precuela o una secuela.</p><p>La banda sonora es muy adecuada pero no creo que sea para escucharla fuera de la película, está muy pegada a la acción. El sonido bien trabajado, las explosiones y disparos son geniales, aunque a alguien se le fue la mano con el volumen, en la sala que lo vi estaba demasiado alto.</p><p>En conclusión, una pelícua entretenida, bien rodada, algo fría. No es un clásico pero merece la pena verla en pantalla grande.</p><p><br /></p><div style="text-align: center;"><iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/QxhDXmb2O3k" width="560"></iframe></div><p></p>Gabriel Cuestahttp://www.blogger.com/profile/02269426169402001647noreply@blogger.com0tag:blogger.com,1999:blog-25960365.post-2219945698245730672020-09-08T20:12:00.005+02:002020-09-08T20:12:28.220+02:00LLega Laravel 8<div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-sVZ_MHwqXYs/X1fJWrvNUHI/AAAAAAAAdCU/uhKaETPX9BQNaJ4PDBcqWw7nYl7ma2EPwCLcBGAsYHQ/s369/laravel.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="136" data-original-width="369" height="236" src="https://1.bp.blogspot.com/-sVZ_MHwqXYs/X1fJWrvNUHI/AAAAAAAAdCU/uhKaETPX9BQNaJ4PDBcqWw7nYl7ma2EPwCLcBGAsYHQ/w640-h236/laravel.png" width="640" /></a></div><p>Hoy han lanzado la nueva versión de Laravel 8 que incluye nuevas características como Laravel Jetstream, carpeta para modelos, factoría para clases de modelos, fusión de ficheros de migraciones, limitación de rango limitada, helpers para tiempos de tests, componentes dinámicos para blade y muchas otras características.</p><p><b>Laravel Jetstream</b></p><p>Mejora el scaffolding UI inicial de las versiones previas de Laravel, ahora incluye login, registro, verificación de email, autentificación de dos factores, gestión de sesiones, soporte de API vía Laravel y gestión de equipos.</p><p><b>Carpeta para modelos</b></p><p>El esqueleto de una aplicación Laravel incluye ahora una carpeta para modelos, todos los comandos de generación asumen que esta carpeta existe, si no lo hace el framework presupone que los modelos existen dentro de la carpeta app.</p><p><b>Factoría para clases de modelos</b></p><p>Las factorías de modelos con eloquent se basan ahora en clases con soporte mejorado entre factorías.</p><p><b>Fusión de migraciones</b></p><p>Si tu aplicación contiene muchos ficheros de migración puedes fusionarlos ahora en un fichero único de SQL. Mejora la velocidad a la hora de realizar los tests.</p><p><b>Límite de rango mejorado</b></p><p>Permite mejorar el límite de rango existente con el middleware de versiones anteriores ofreciendo más flexibilidad.</p><p><b>Helpers para pruebas de tiempo</b></p><p>Los usuarios de Laravel tienen control completo sobre la modificación de la gestión del tiempo en los tests vía la librería Carbon PHP.</p><p><b>Componentes dinámicos para Blade</b></p><p>A veces necesitas compilar un componente de blade de manera dinámica durante el tiempo de ejecución, Laravel 8 te permite ahora hacerlo.</p><p>Tiene muy buena pinta, a ver cuando puedo probarlo.</p><p><br /></p>Gabriel Cuestahttp://www.blogger.com/profile/02269426169402001647noreply@blogger.com0tag:blogger.com,1999:blog-25960365.post-79462542738594894902020-09-04T14:17:00.001+02:002020-09-04T14:17:43.543+02:00Coleccionando juegos de PS2: Devil May Cry<p> Bueno, mi pequeña colección de juegos de PS2 sigue creciendo, hoy me he hecho con Devil May Cry, es un juego que en su día me encantó y estaba loco por tenerlo.</p><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-5JfTc1c91Qg/X1IwWD3feqI/AAAAAAAAc9w/srqR5o_ECfgsNzI8jd7jeTBkUAqelsqJgCLcBGAsYHQ/s2048/Imagen%2Bde%2BiOS%2B%25281%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1536" height="320" src="https://1.bp.blogspot.com/-5JfTc1c91Qg/X1IwWD3feqI/AAAAAAAAc9w/srqR5o_ECfgsNzI8jd7jeTBkUAqelsqJgCLcBGAsYHQ/s320/Imagen%2Bde%2BiOS%2B%25281%2529.jpg" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-04fL2ePKTV4/X1IwWbWltyI/AAAAAAAAc90/1Z4nVW0Y0OYtxyLY5MC6IYRKt6_4xpz7wCLcBGAsYHQ/s2048/Imagen%2Bde%2BiOS%2B%25282%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1536" height="320" src="https://1.bp.blogspot.com/-04fL2ePKTV4/X1IwWbWltyI/AAAAAAAAc90/1Z4nVW0Y0OYtxyLY5MC6IYRKt6_4xpz7wCLcBGAsYHQ/s320/Imagen%2Bde%2BiOS%2B%25282%2529.jpg" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-OTTpPEExYV4/X1IwWe7CV3I/AAAAAAAAc94/fmjiyxXXobcXEU8XbwOA7m4sOMSDnZ5FgCLcBGAsYHQ/s2048/Imagen%2Bde%2BiOS%2B%25283%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1536" height="320" src="https://1.bp.blogspot.com/-OTTpPEExYV4/X1IwWe7CV3I/AAAAAAAAc94/fmjiyxXXobcXEU8XbwOA7m4sOMSDnZ5FgCLcBGAsYHQ/s320/Imagen%2Bde%2BiOS%2B%25283%2529.jpg" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-ZKEZVC7Gq5w/X1IwW0YDGKI/AAAAAAAAc98/klqO2LRJZ6IkvKdZQrJSVzwee-B6TSf7wCLcBGAsYHQ/s2048/Imagen%2Bde%2BiOS.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1536" data-original-width="2048" src="https://1.bp.blogspot.com/-ZKEZVC7Gq5w/X1IwW0YDGKI/AAAAAAAAc98/klqO2LRJZ6IkvKdZQrJSVzwee-B6TSf7wCLcBGAsYHQ/s320/Imagen%2Bde%2BiOS.jpg" width="320" /></a></div><br /><p><br /></p><p><br /></p>Gabriel Cuestahttp://www.blogger.com/profile/02269426169402001647noreply@blogger.com0tag:blogger.com,1999:blog-25960365.post-88515992623417335782020-08-14T10:25:00.000+02:002020-08-14T10:25:00.472+02:00Javascript: Comparar con NaN<div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-1leCmw1ex6s/Xvt82Qj_eEI/AAAAAAAAZTQ/y7HEYMEd7P4TdXYl0XSmacvNwjfw4zkhQCPcBGAYYCw/s1800/js.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1012" data-original-width="1800" src="https://1.bp.blogspot.com/-1leCmw1ex6s/Xvt82Qj_eEI/AAAAAAAAZTQ/y7HEYMEd7P4TdXYl0XSmacvNwjfw4zkhQCPcBGAYYCw/s640/js.png" width="640" /></a></div><p><br /></p><p>NaN significa not a number, es decir, no es un número, es el valor que devuelve Javascript cuando en alguna operación matemática (por ejemplo dividir por 0) hay algún tipo de problema.</p><p>Os pongo un ejemplo de como hacerlo:</p><p><b style="background-color: black;"><span style="color: white;">let myNaN = 0/0</span></b></p><p><b style="background-color: black;"><span style="color: white;">console.log(Object.is(NaN, myNaN)) // true</span></b></p><p>Si utilizásemos el típico if no funcionaría.</p><p>Espero que os sea de utilidad ^_^.</p>Gabriel Cuestahttp://www.blogger.com/profile/02269426169402001647noreply@blogger.com0tag:blogger.com,1999:blog-25960365.post-76037927181971452982020-08-10T19:42:00.001+02:002020-08-10T19:42:04.265+02:00Todos los vídeos de intro de Playstation<p>En estos días de verano estoy dándole un poco de caña a algunos juegos antiguos de Playstation, en concreto a Tekken 3 y a Metal Gear Solid, por lo que he vuelto a ver el antiguo vídeo de intro de la PSone con frecuencia.</p><p>Así que llevado por la nostalgia he buscado por YouTube un vídeo con todas las intros de las diferentes consolas de Sony, supongo que pronto tendremos que agregar el de PS5.</p><p style="text-align: center;"><iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/RB2tpJzArr4" width="560"></iframe></p>Gabriel Cuestahttp://www.blogger.com/profile/02269426169402001647noreply@blogger.com0tag:blogger.com,1999:blog-25960365.post-55467541957268326792020-08-10T19:36:00.004+02:002020-08-10T19:36:18.915+02:00A mí la tribu<div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-Tz3skMsTPCw/XzGFdKLRNDI/AAAAAAAAZ3I/Q0RRGPaUvMEPvuwsssEoDFpM-Rn0QFqQwCLcBGAsYHQ/s1020/juan_carlos_I.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="574" data-original-width="1020" src="https://1.bp.blogspot.com/-Tz3skMsTPCw/XzGFdKLRNDI/AAAAAAAAZ3I/Q0RRGPaUvMEPvuwsssEoDFpM-Rn0QFqQwCLcBGAsYHQ/s640/juan_carlos_I.jpg" width="640" /></a></div><p><br /></p><p>Hace unos días el rey Juan Carlos I ha comunicado que se iba de España para quitarle presión a su hijo, el actual rey, debido a las continuas informaciones que aparecían en la prensa española relativas al cobro de unas presuntas comisiones durante su reinado.</p><p>Independientemente de la veracidad o no de las noticias, o de si ha hecho o no lo correcto me ha llamado la atención la llamada de los chamanes de las diferentes tribus políticas para que se agrupen alrededor de una determinada postura (a favor o en contra) de la manera más impulsiva posible, evitando cualquier tipo de reflexión.</p><p>En todas estas posturas no hay matices, hay unos buenos y unos malos, hay unos que lo hacen todo bien y otros que lo hacen todo mal. Unos defienden a capa y espada la figura del anterior rey sin mencionar la menor mácula y si escuchas a los otros parece que el anterior jefe del estado era un criminal que estaba todo el día robando gallinas.</p><p>Estoy cansado de que unos y otros intenten hacerme comulgar con ruedas de molino, estoy cansado de que intenten tirar de mis emociones sin dejarme un respiro para tener mi propia opinión, estoy cansado del incensante ruido con el que intentan acallar mi voz interior.</p><p>Las mejores opiniones son las opiniones reposadas, no los gritos tabernarios espoleados por la ira, una ira que además no es ni siquiera propia, es ajena, te la injertan como un esqueje en una parra.</p><p>Calma, sosiego y pocas noticias de radio y TV, desde que lo hago vivo más feliz... y mejor informado.</p><p><br /></p>Gabriel Cuestahttp://www.blogger.com/profile/02269426169402001647noreply@blogger.com0tag:blogger.com,1999:blog-25960365.post-85787647600480757782020-08-03T22:34:00.003+02:002020-08-03T22:34:42.036+02:00Vocodes: Lee textos con voces de famosos<a href="vo.codes"><b>Vocodes</b></a> es un sitio web que permite leer textos con voces de famosos como <b>Leonard Nimoy</b>, <b>Danny de Vito</b>, etc. La pena es que solo tenga famosos en inglés, pero la mayoría de las voces están muy bien logradas y van mejorando.<div><br /></div><div>Todavía no permiten descargar los audios, pero tienen la funcionalidad activada, esperemos que sea pronto.</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-o1tceDX620E/Xyh0zAjjDOI/AAAAAAAAZkg/amoEkHhZnRQ0ZvrfwtwLjEpJ31XZZb9yACLcBGAsYHQ/s724/Anotaci%25C3%25B3n%2B2020-08-03%2B223410.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="724" data-original-width="619" height="640" src="https://1.bp.blogspot.com/-o1tceDX620E/Xyh0zAjjDOI/AAAAAAAAZkg/amoEkHhZnRQ0ZvrfwtwLjEpJ31XZZb9yACLcBGAsYHQ/s640/Anotaci%25C3%25B3n%2B2020-08-03%2B223410.png" /></a></div><div><br /><div><br /></div><div><br /></div></div>Gabriel Cuestahttp://www.blogger.com/profile/02269426169402001647noreply@blogger.com0tag:blogger.com,1999:blog-25960365.post-20351288677715138142020-08-01T12:37:00.002+02:002020-08-01T12:37:24.904+02:00Javascript: Cargar scripts externos sin ralentizar la carga de la web<div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-bN43gHy8qNM/XrxE9cI4u_I/AAAAAAAAYME/5EmtPSh0W2wpjKb4Ib0XLqa4hrv9J75IQCPcBGAYYCw/s600/javascript-logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="323" data-original-width="600" src="https://1.bp.blogspot.com/-bN43gHy8qNM/XrxE9cI4u_I/AAAAAAAAYME/5EmtPSh0W2wpjKb4Ib0XLqa4hrv9J75IQCPcBGAYYCw/s0/javascript-logo.png" /></a></div><div><br /></div><div><br /></div>La carga de <i>scripts</i> externos en nuestra web puede alargar mucho el tiempo entre que el usuario entra una web y esta se le muestra en pantalla.<div><br /></div><div>Para evitar que esta carga ralentice estos tiempos podemos usar dos <i>tags</i>:</div><div><ul style="text-align: left;"><li><b>Async</b>: Carga los <i>scripts</i> de manera asíncrona sin bloquear la carga de elementos web.</li><li><b>Defer</b>: Carga los <i>scripts</i> una vez los elementos del DOM están cargados.</li></ul><div>Se utiliza de la siguiente manera:</div></div><div><br /></div><div><b><font color="#ffffff" style="background-color: black;"><script src="jquery.js" async></script></font></b></div><div><br /></div><div>O</div><div><br /></div><div><b><font color="#ffffff" style="background-color: black;"><script src="jquery.js" defer></script></font></b></div><div><br /></div><div>Espero que os sea de utilidad ^_^.</div>Gabriel Cuestahttp://www.blogger.com/profile/02269426169402001647noreply@blogger.com0tag:blogger.com,1999:blog-25960365.post-85651469097981408622020-08-01T08:53:00.004+02:002020-08-01T08:53:28.540+02:00Angular: Cómo compilar en modo producción para el servidor de desarrollo<div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-scPn-waavvg/Xx9Dg2X4pkI/AAAAAAAAZh4/boINdat1k2oWKzFu1z24GUYK94TqEHfMACPcBGAYYCw/s1800/angular.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="840" data-original-width="1800" src="https://1.bp.blogspot.com/-scPn-waavvg/Xx9Dg2X4pkI/AAAAAAAAZh4/boINdat1k2oWKzFu1z24GUYK94TqEHfMACPcBGAYYCw/s640/angular.jpg" width="640" /></a></div><div><br /></div><div><br /></div>Cuando desarrollas usando <b>Angular</b> normalmente haces pruebas en local utilizando <b><font color="#ffffff" style="background-color: black;">ng serve</font></b>, una vez compilas puedes hacerlo con <font color="#ffffff" style="background-color: black;">ng build</font>, pero cuando quieres compilar para salir a producción utilizas <font color="#ffffff" style="background-color: black;">ng build --prod</font> que compacta el proyecto y le da una capa extra de seguridad. Por desgracia muchas veces al compilar para producción aparecen errores inesperados.<div><br /></div><div>Si quieres arreglar estos errores de una manera más rápida te recomiendo que actives el servidor de pruebas en modo producción:</div><div><br /></div><div><font color="#ffffff" style="background-color: black;"><b>ng serve --prod</b></font></div><div><br /></div><div>Es mucho más lento de compilar que el servidor normal, pero cuando estás corrigiendo un <i>bug</i> de producción es muy útil.</div><div><br /></div><div>Espero que te sea de utilidad ^_^.</div>Gabriel Cuestahttp://www.blogger.com/profile/02269426169402001647noreply@blogger.com0tag:blogger.com,1999:blog-25960365.post-81432062092813208322020-07-30T20:32:00.000+02:002020-07-30T20:32:13.067+02:00Angular: Elegir puerto del servidor de pruebas<div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-TImR97m-PVg/XxBUGuU7BXI/AAAAAAAAZZ8/cc9MWHrV0U06CveRVGA08AZTu0G6LlamQCPcBGAYYCw/s329/angular.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="153" data-original-width="329" height="298" src="https://1.bp.blogspot.com/-TImR97m-PVg/XxBUGuU7BXI/AAAAAAAAZZ8/cc9MWHrV0U06CveRVGA08AZTu0G6LlamQCPcBGAYYCw/w640-h298/angular.jpeg" width="640" /></a></div><div><br /></div>El puerto por defecto de Angular cuando pruebas una app es el 4200, pero en ocasiones puedes querer probar varios proyectos a la vez, así que no te queda más remedio que lanzar el servidor de pruebas en otro puerto. Se hace de esta manera:<div><br /></div><div>ng serve --port 4201</div><div><br /></div><div>Obviamente el puerto 4201 puede ser el puerto que elijáis.</div><div><br /></div><div>Espero que os sea de utilidad ^_^.</div>Gabriel Cuestahttp://www.blogger.com/profile/02269426169402001647noreply@blogger.com0tag:blogger.com,1999:blog-25960365.post-48380201739120232282020-07-30T20:23:00.001+02:002020-07-30T20:23:56.365+02:00Pressing CatchEn los años 90 los sábados por la tarde los españoles teníamos cita con un programa de <b>Telecinco</b> llamado <b>Pressing Catch</b>, este programa popularizó los combates de <b>Wrestling</b> de la <b>WWF</b> en España.<div><br /></div><div>Yo por aquella época iba a COU, así que ya no era un niño, aún así me encantaba ver este programa, especialmente cuando emitían grandes eventos. Mi luchador favorito era <b>el enterrador</b>, que ha seguido luchando muchos años y <b>Hulk Hogan</b>.</div><div><br /></div><div>En aquellos tiempos todavía no sabía que todo era un espectáculo coregrafiado, aunque algo me olía. Mientras trabajo en casa me he puesto la gala que hicieron desde Barcelona en 1991. Lo comparto con vosotros. ¡Qué recuerdos!</div><div><br /></div><div>Os lo comparto aquí:<br /><br /></div><div style="text-align: center;"><iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/XQlhcBMo4vM" width="560"></iframe></div>Gabriel Cuestahttp://www.blogger.com/profile/02269426169402001647noreply@blogger.com0tag:blogger.com,1999:blog-25960365.post-86039193450925779192020-07-27T23:28:00.000+02:002020-07-27T23:28:44.740+02:00Manual para aprender a programar ensamblador para ZX Spectrum<div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-A9FN6ivVLEM/Xx9Gwf8j4kI/AAAAAAAAZiA/bGknSbF4x6QuNU4pXX4O9zUuQqz0Imj_ACLcBGAsYHQ/s256/assembler.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="192" data-original-width="256" height="480" src="https://1.bp.blogspot.com/-A9FN6ivVLEM/Xx9Gwf8j4kI/AAAAAAAAZiA/bGknSbF4x6QuNU4pXX4O9zUuQqz0Imj_ACLcBGAsYHQ/w640-h480/assembler.gif" width="640" /></a></div><div><br /></div><div><br /></div>La mayor parte de los que fuimos niños y tuvimos un <b>ZX Spectrum</b> soñábamos con programar juegos, por desgracia el Basic daba para lo que daba, el lenguaje rápido de verdad era el ensamblador, pero salvo por algunos artículos de <b>Microhobby</b> la mayor parte de nosotros no teníamos acceso a manuales o cursos para aprender a programar en este lenguaje.<div><br /></div><div>El creador del famoso motor <b>AGD</b> ha venido a nuestro rescate -unos cuantos años tarde- para poner a nuestra disposición un completo manual que nos enseña a programar en ensamblador desde los primeros pasos. Ahora mismo no tengo tiempo de leerlo, pero es sin duda uno de los hitos que tengo pendientes en esta vida, a ver cuándo puedo estudiarlo.</div><div><br /></div><div><a href="https://jonathan-cauldwell.itch.io/how-to-write-spectrum-games">Podéis descargarlo en la página de su autor</a> -<b>Jonathan Cadwell</b>-, es gratuito pero pide donaciones para quien quiera agradecer su trabajo.</div>Gabriel Cuestahttp://www.blogger.com/profile/02269426169402001647noreply@blogger.com0tag:blogger.com,1999:blog-25960365.post-81839771010574917152020-07-27T23:14:00.001+02:002020-07-27T23:14:10.645+02:006 conceptos a dominar para ser un buen arquitecto de Angular<div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-scPn-waavvg/Xx9Dg2X4pkI/AAAAAAAAZh0/T_7mgTR1sZ4QkStc-MT8tTf_jxLP4v13QCLcBGAsYHQ/s1800/angular.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="840" data-original-width="1800" height="298" src="https://1.bp.blogspot.com/-scPn-waavvg/Xx9Dg2X4pkI/AAAAAAAAZh0/T_7mgTR1sZ4QkStc-MT8tTf_jxLP4v13QCLcBGAsYHQ/w640-h298/angular.jpg" width="640" /></a></div><b><br /></b></div><b><div><b><br /></b></div>Angular</b> es un framework muy potente con cierta complejidad, para poder sacarle partido de verdad es necesario conocer sus principales elementos para decidir con eficacia dónde y cuándo utilizarlos.<div><br /></div><div>Comparto con vosotros cuales son para mí sus conceptos más importantes:</div><div><br /></div><div>1.- Arquitectura basada en módulos.</div><div><br /></div><div>2.- Separación de responsabilidades entre componentes, servicios y directivas.</div><div><br /></div><div>3.- Detección de cambios y renderizado.</div><div><br /></div><div>4.- Sistema de enrutado.</div><div><br /></div><div>5.- Formularios.</div><div><br /></div><div>6.- RxJS.</div><div><br /></div><div>Estas últimas semanas el trabajo no me deja tiempo ni para respirar. A ver si saco tiempo y hago unos cuantos posts ampliando estos conceptos.</div><div><br /></div><div>Espero que os sea de utilidad ^_^.</div>Gabriel Cuestahttp://www.blogger.com/profile/02269426169402001647noreply@blogger.com0tag:blogger.com,1999:blog-25960365.post-43486406960496056062020-07-27T22:58:00.000+02:002020-07-27T22:58:57.971+02:00Un paseo por la Luna en 4KEl canal de YouTube <b>Dutchsteammachine</b> han procesado con una IA varias películas de la <b>NASA</b> de la misión <b>Apollo 16</b> y las ha convertido a 4K con 60fps, toda una gozada para la vista.<div><br /></div><div style="text-align: center;"><iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/bTQ-SmeLTl8" width="560"></iframe></div><div><br /></div><div>El original no tenía esta definición ni de lejos, y obviamente tenía muchos menos fotogramas por segundo.</div><div><br /></div><div><br /></div>Gabriel Cuestahttp://www.blogger.com/profile/02269426169402001647noreply@blogger.com0tag:blogger.com,1999:blog-25960365.post-68663836894693586112020-07-25T22:43:00.000+02:002020-07-25T22:43:05.037+02:00Javascript: Algunos consejos para nombrar las variables<div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-tHyWK8kLibM/XxyZS8rbYhI/AAAAAAAAZhk/FkoeHRlFnYgopNpH1GjnRjnYLZkmIN_sACLcBGAsYHQ/s785/javascript.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="340" data-original-width="785" height="278" src="https://1.bp.blogspot.com/-tHyWK8kLibM/XxyZS8rbYhI/AAAAAAAAZhk/FkoeHRlFnYgopNpH1GjnRjnYLZkmIN_sACLcBGAsYHQ/w640-h278/javascript.png" width="640" /></a></div><div><br /></div><div><br /></div>Lo primero que todo, recordar que en <b>Javascript</b> las mayúsculas y las minúsculas son letras diferentes, es decir, la variable PRUEBA no es la misma que la variable Prueba.<div><br /></div><div>El nombre de una variable debe ser descriptivo de su contenido, es decir:</div><div><br /></div><div><b><font color="#ffffff" style="background-color: black;">let newVariable = 'Pedro';</font></b></div><div><br /></div><div>No es una buena opción, en este caso podríamos poner:</div><div><br /></div><div><font color="#ffffff" style="background-color: black;"><b>let newName = 'Pedro';</b></font></div><div><br /></div><div>Cuando creemos una variable <i>booleana</i> lo suyo es darle un nombre descriptivo de su tipo que además tenga sentido al ser leída como:</div><div><br /></div><div><b><font color="#ffffff" style="background-color: black;">let isHomeLoaded = false;</font></b></div><div><br /></div><div>Al leer el nombre sabemos ya que función cumple esta variable.</div><div><br /></div><div>Si creamos una constante hay que poner todas las letras en mayúscula:</div><div><br /></div><div><b style="background-color: black;"><font color="#ffffff">const NEWNOMBRE = 'Pedro';</font></b></div><div><br /></div><div>Y por último crear las variables siempre con nombres en inglés:</div><div><br /></div><div><b><font color="#ffffff" style="background-color: black;">let newName = 'Juan';</font></b></div><div><br /></div><div>Espero que os sea de utilidad ^_^.</div><div><br /></div><div><br /><div><br /></div><div><br /></div></div>Gabriel Cuestahttp://www.blogger.com/profile/02269426169402001647noreply@blogger.com1tag:blogger.com,1999:blog-25960365.post-85427188273928956622020-07-25T22:33:00.000+02:002020-07-25T22:33:36.864+02:00Ionic: Cómo crear de manera automática todos los iconos para Android y para iOS<div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-qWL5yq5yr4I/XxyXCMHPsXI/AAAAAAAAZhY/JaXPBwtAChgvwJ164REQzwAqy3OkYu80ACLcBGAsYHQ/s700/ionic.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="370" data-original-width="700" height="338" src="https://1.bp.blogspot.com/-qWL5yq5yr4I/XxyXCMHPsXI/AAAAAAAAZhY/JaXPBwtAChgvwJ164REQzwAqy3OkYu80ACLcBGAsYHQ/w640-h338/ionic.jpg" width="640" /></a></div><b><br /></b></div><div><b><br /></b></div><div><b>Ionic</b> nos permite crear aplicaciones para <b>Android</b> y para <b>iOS</b>, estas aplicaciones necesitan un set de iconos personalizados cada uno de ellos con sus diferentes resoluciones. Crearlos a mano es muy farragoso, os explicó aquí como hacerlo de manera automática:</div><div><div><ol style="text-align: left;"><li><b><font color="#ffffff" style="background-color: black;">Run npm install cordova-res --save-dev</font></b></li><li><b><font color="#ffffff" style="background-color: black;">Create 1024x1024px icon at resources/icon.png</font></b></li><li><b><font color="#ffffff" style="background-color: black;">Create 2732x2732px splash at resources/splash.png</font></b></li><li><b><font color="#ffffff" style="background-color: black;">Add "resources": "cordova-res ios && cordova-res android && node scripts/resources.js" to scripts in package.json</font></b></li><li><b><font color="#ffffff" style="background-color: black;">Copy to script below to scripts/resources.js</font></b></li><li><b><font color="#ffffff" style="background-color: black;">Run sudo chmod -R 777 scripts/resources.js</font></b></li><li><b><font color="#ffffff" style="background-color: black;">Run npm run resources</font></b><br /></li></ol><div>Espero que os sea de utilidad ^_^.</div></div></div>Gabriel Cuestahttp://www.blogger.com/profile/02269426169402001647noreply@blogger.com0tag:blogger.com,1999:blog-25960365.post-24803658932202267612020-07-25T22:27:00.000+02:002020-07-25T22:27:13.358+02:00Javascript: Sets vs Arrays<div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-zqPesEwB7-8/XxyVkm-HFHI/AAAAAAAAZhM/p9jCJCNDJkgpjhuElWzIjyWUErZUx8KPwCLcBGAsYHQ/s1800/js.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1012" data-original-width="1800" height="360" src="https://1.bp.blogspot.com/-zqPesEwB7-8/XxyVkm-HFHI/AAAAAAAAZhM/p9jCJCNDJkgpjhuElWzIjyWUErZUx8KPwCLcBGAsYHQ/w640-h360/js.png" width="640" /></a></div><div><br /></div><div><br /></div><div>El objeto <b>Set</b> fue introducido en la especificación de <b>ECMAScript 2015</b>, en el momento de escribir este <i>post</i> lo ejecuta tanto <b>Node.js</b> y la mayoría de los navegadores.</div><div><br /></div><div>Set permite crear colecciones de valores únicos, es decir, cuando creamos una colección con set si metemos un valor duplicado este desaparece, si por ejemplo ponemos una lista de ciudades:</div><div><br /></div><div><b><font color="#ffffff" style="background-color: black;">const ciudades = new Set(['Madrid', 'Barcelona', 'Sevilla', 'Madrid']);</font></b></div><div><b><font color="#ffffff" style="background-color: black;">console.log(ciudades);</font></b></div><div><br /></div><div>Podréis ver que sólo muestra a Madrid, Barcelona y Sevilla de manera única.</div><div><br /></div><div>Un <i>array</i> si que permite valores duplicados, así que si convertimos un <i>array</i> a un set los valores duplicados desaparecerán. <i>Sets</i> sólo elimina los valores duplicados, pero si creamos un conjunto de datos con <i>Set</i> y esos datos son <i>arrays</i> en este caso no detectará los datos duplicados ya que los <i>arrays</i> en <b>Javascript</b> son referencias de memoria y siempre son por lo tanto diferentes porque apuntan a diferentes celdas.</div><div><br /></div><div><b>Set</b> tiene muchos menos métodos que los <i>arrays</i>, así que si quieres hacer operaciones más complejas con ellos lo suyo es convertirlos a <i>arrays</i>, hacer lo que tengas que hacer con los datos y luego volverlos a convertir en un set.</div><div><br /></div><div>Espero que os sea de utilidad ^_^.</div><div><br /></div><div><br /></div>Gabriel Cuestahttp://www.blogger.com/profile/02269426169402001647noreply@blogger.com0tag:blogger.com,1999:blog-25960365.post-74405364956281531442020-07-24T23:59:00.000+02:002020-07-24T23:59:21.441+02:00La burbuja de Internet<div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-_dUASUWmQsA/XxtZdZdE0QI/AAAAAAAAZgc/qhZu3XlQaRgmmGWrwGh-k07PfSmWPNMAACLcBGAsYHQ/s630/5c8ac1fc3b000070066c8578.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="315" data-original-width="630" height="320" src="https://1.bp.blogspot.com/-_dUASUWmQsA/XxtZdZdE0QI/AAAAAAAAZgc/qhZu3XlQaRgmmGWrwGh-k07PfSmWPNMAACLcBGAsYHQ/w640-h320/5c8ac1fc3b000070066c8578.jpeg" width="640" /></a></div><div><br /></div><div><br /></div>A diario uso servicios como <b>Google</b>, <b>YouTube</b>, <b>Facebook</b> o <b>Instagram</b>. Todos ellos se empeñan en que pase el máximo tiempo posible utilizándolos, para ello no dudan en adaptar la experiencia lo máximo posible a lo que consideran mis gustos.<div><br /></div><div>Analizan una y otra vez donde hago clic, que contenidos consumo, cuanto tiempo dedico a cada bloque, todo con el objetivo de captar al máximo mi atención, y para ello, si me tienen que maquillar la realidad hurtándome el acceso a opiniones que no coinciden con la mía no dudan en hacerlo.</div><div><br /></div><div>Fruto de ello, y con la ayuda de nuestro sesgo de confirmación, la realidad que percibimos es cada día más monocroma, misteriosamente todo el mundo piensa lo mismo que nosotros, solo hay una minoría de personas sin seso ni argumentos que se atreven a llevarnos la contraria. Así que como el mundo nos da la razón nos radicalizamos cada vez más ya que nadie nos rebate ni con razones ni con noticias nuestra visión.</div><div><br /></div><div>Las <i>fake news</i> siempre son las del otro bando, las que me gustan a mí, las que confirman mis creencias esas son las noticias de calidad. Esta situación me recuerda una época en la que jugaba al <b>World of Warcraft</b>, cuando jugaba con la horda el bando de la alianza era lo peor, y sus miembros eran como el diablo pero con cuernos. Cuando jugaba con la alianza eran los jugadores de la horda los más impresentables.</div><div><br /></div><div>Internet y las redes sociales nos rodean de una burbuja de irrealidad de manera sibilina, nos impiden contrastar noticias y opiniones con tal de captar nuestra atención, no debemos dejarnos atrapar por esa ilusión, el mundo es mucho más amplío que la pequeña mirilla a la realidad que te ofrecen las empresas tecnológicas.</div><div><br /></div><div><br /></div>Gabriel Cuestahttp://www.blogger.com/profile/02269426169402001647noreply@blogger.com0tag:blogger.com,1999:blog-25960365.post-31224911812098264152020-07-24T23:48:00.001+02:002020-07-24T23:48:49.234+02:00¿Empresario sufridor o empresario explotador?En estos tiempos de coronavirus y pandemia todos tenemos las emociones a flor de piel, los nervios se disparan y cualquier situación puede convertirse en un incendio, mandan las tripas, no los sesos, y todos tenemos el dedo tembloroso sobre el gatillo del revólver en plan Harry el sucio. Todos somos justicieros que armados de nuestras sensaciones juzgamos y condenamos (o elevamos a los altares) en menos de dos segundos.<div><br /></div><div>Todo rápido, sin reflexión, pura intuición y ya luego toca echar razonamientos para justificar la postura adoptada. Y donde no llega la intuición entra la jauría. ¿Dónde va Vicente? Donde va la gente.</div><div><br /></div><div>En este contexto el conocido empresario hotelero Enrique Sarasola ha enviado un vídeo bastante intenso a sus empleados que ha sido filtrado a la prensa. Deduzco al verlo que el empresario no contó hasta 10 antes de grabarlo.</div><div><br /></div><div>Ahora las redes sociales se han dividido en dos bancos, los que lo ensalzan como el héroe emprendedor que lucha a brazo partido por la supervivencia de su empresa pese a los chupópteros de los trabajadores y los que lo critican por atreverse a presionar a los esforzados obreros que son los que de verdad permiten que la empresa gane el dinero que termina en los bolsillos de Enrique.</div><div><br /></div><div>Tengo mi propia opinión de este vídeo, desde luego este hombre no me parece ni un santo ni un demonio, tan sólo una persona normal en un momento de cabreo provocado por algún trabajador peculiar, pero bueno, hoy ha sido tendencia, que en los tiempos que corren es casi lo mismo que ser elevado a los altares, pero con la celeridad que domina el panorama mañana nadie se acordará de este documento.</div><div><br />Os pongo aquí el vídeo:</div><div><br /></div><div><iframe width="560" height="315" src="https://www.youtube.com/embed/BxME2vjxOCA" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div>Gabriel Cuestahttp://www.blogger.com/profile/02269426169402001647noreply@blogger.com0tag:blogger.com,1999:blog-25960365.post-47445931312273248652020-07-24T23:38:00.000+02:002020-07-24T23:38:29.809+02:00ZX Spectrum: Mag Max 128 K (2020 edition)Últimamente estoy viendo con frecuencia "remasterizaciones" de juegos para ZX Spectrum 48K para el ZX Spectrum 128K. Normalmente lo que hacen es agregarle una pantalla de carga más trabajada, la música en formato AY portándola de la versión de Amstrad CPC y algún que otro detalle.<div><br /></div><div>Los hay que se lo trabajan más y los hay que van a lo básico, pero por lo general este tipo de remasterizaciones me suelen gustar, resulta curioso ver lo que podrían haber mejorado un juego en su día con solo un poco de esfuerzo extra. Pero las compañías de videojuegos -antes y ahora- siempre han buscado el beneficio.</div><div><br /></div><div>Mag Max fue una conversión de Imagine de un juego normalito de recreativa, un matamarcianos normalito y repetitivo, pero que tenía cierto encanto, sobre todo por el simpático robot que ibas formando en plan Terra Cresta. Lo recuerdo con cariño, aunque como os he comentado no era lo más de lo más.</div><div><br /></div><div>Os pongo aquí el vídeo que me he encontrado en YouTube, el original tenía peor sonido y una pantalla de carga más básica. Me gustan los remasters, a ver si siguen sacando más.</div><div><br /></div><div><iframe width="560" height="315" src="https://www.youtube.com/embed/BsiCh-5mrhg" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div>Gabriel Cuestahttp://www.blogger.com/profile/02269426169402001647noreply@blogger.com0tag:blogger.com,1999:blog-25960365.post-64476250695556497632020-07-24T23:24:00.000+02:002020-07-24T23:24:07.313+02:00Decepcionante vídeo de Halo InfiniteEste jueves Microsoft anunció sus próximas novedades, todos estábamos esperando con ganas ver que videojuegos iban a lanzar con la XBOX Series X, había especial expectación con el lanzamiento del nuevo Halo. Os pongo aquí el vídeo:<div><br /></div><div style="text-align: center;"><iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/rFh2i4AlPD4" width="560"></iframe></div><div><br /></div><div>En fin, que parece más un juego de XBOX One que de la nueva generación. Supongo que el juego será muy divertido y demás -si no lo hunden a base de micropagos-, pero técnicamente no es el juego impresionante que necesita toda nueva consola para hacer caer las mandíbulas.</div><div><br /></div><div>En fin, esperemos que la cosa mejore.</div>Gabriel Cuestahttp://www.blogger.com/profile/02269426169402001647noreply@blogger.com0tag:blogger.com,1999:blog-25960365.post-39954152442469329222020-07-24T23:10:00.001+02:002020-07-24T23:10:25.864+02:00Angular: Como forzar la recarga de la página cuando se actualizan los parámetros de la url<div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-IAwZDjbm8Yk/XxtONdVYHgI/AAAAAAAAZgQ/hLCs-VeJWnIlFTbewBM2Bb6wKT2MskMPACLcBGAsYHQ/s728/angular-9.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="254" data-original-width="728" height="224" src="https://1.bp.blogspot.com/-IAwZDjbm8Yk/XxtONdVYHgI/AAAAAAAAZgQ/hLCs-VeJWnIlFTbewBM2Bb6wKT2MskMPACLcBGAsYHQ/w640-h224/angular-9.jpg" width="640" /></a></div><div><br /></div><div><br /></div>En <b>Angular</b> si cargas una página (un componente) y vuelves a cargarla con otro parámetro la página no recarga ni lanza los eventos de recarga correspondiente. Para evitar esta situación y forzar la recarga tenemos que agregar el siguiente código al constructor:<div><br /></div><div><b><font color="#ffffff" style="background-color: black;">this.router.routeReuseStrategy.shouldReuseRoute = () => false;</font></b></div><div><br /></div><div>Obviamente para que este código funcione tenéis que haber importado la librería <b>Router</b> y haberla inyectado en el constructor.</div><div><br /></div><div>Espero que os sea de utilidad ^_^.</div>Gabriel Cuestahttp://www.blogger.com/profile/02269426169402001647noreply@blogger.com0