VideoGamesDB 002

Bueno, pues continúo este proyecto que empecé hace 2 años. Como estoy en el pueblo no tengo acceso al código que llegué a desarrollar en aquella época, y ahora se me ocurren más opciones para el proyecto.

Las bases siguen siendo las mismas (code first, .NET Core 3.0 con EF, inyección de dependencias, front end y DB separada). En esta ocasión he querido abarcar un poco más y no solo me centraré en Angular, también en React y Vue.

He destinado el fin de semana del 4 y 5 de septiembre de 2021 a desarrollar todo el proyecto.

Empecé haciendo la API en .NET Core 3.0 con code first y Entity Framework. Primero usé una base de datos en memoria para pruebas. Luego cambié a sql server en local y por último intenté usar MySQL remoto para alojar la base de datos en alguna de mis webs wordpress, pero no se permite MySQL remoto, así que hice una cuenta en remotemysql.com, para probar usé postman. Muy útil el code first y el scaffolding del controlador a partir del DbContext y el Modelo. Empecé ese mismo día 4 con un proyecto base de Angular TS, pero era demasiado tarde y lo dejé para el 5.

El día 5 hice proyectos base de Angular TS, React y Vue, luego los adapté para consumir mi Api de VideogamesDB, un simple CRUD con GET, PUT, POST y DELETE.

Angular TS con HTTPClient

A primera vista me abrumó la cantidad de archivos, porque siempre intento entenderlo todo, pero al final resultó ser agradable y muy parecido a lo que ya conocía. Destaco la organización con templates HTML, servicios TS y componentes TS. Es fácil encontrar documentación y es muy rápido.

React con Fetch

Más complicado que Angular con HTTPClient. Tuve que bindear métodos para tener «this» accesible, también setear cosas en state porque no eran accesibles desde la response del fetch. Con fetch tuve que especificar las configuraciones para algunos verbos. Tuve que recoger los elementos del DOM porque no parece tener data-binding. Tampoco hay «if» para evitar el renderizado de componentes. Lo más grave fue un bug cuando mapeaba los LI de un UL, dentro tenía un evento onClick que se ejecutaba en el propio mapping (solucionado con arrow function).

Vue con Axios

Más fácil que React. Me encanta el model binding (mejor que los otros). También tuve que setear cosas en data como el state de React. Axios parece ser más rápido que fetch, al menos con Vue, aunque tiene prácticamente la misma velocidad, el que gana con diferencia es Angular con HTTPClient.

Trabajo futuro

Si sigo con este proyecto, me gustaría hacer algunos tests de velocidad, quizás probar HTTPClient, axios y fetch en los 3 frameworks frontend.

VideoGamesDB 001

Empiezo un nuevo proyecto para practicar tecnologías que veo mucho por ahí y nunca he tocado ni en la carrera ni en el trabajo. Voy a intentar utilizar .NET Core 3.0 con Angular, Code First, Inyección de dependencias y si sigo vivo quizás Xamarin y/o Ionic. Let’s go!.

He utilizado la plantilla de .NET Core + Angular que me ofrece Visual Studio 2019, aunque en el futuro quisiera separarlo todo para entender mejor sus conexiones e interfaces (API REST + Front separado + DB separada).

Problemas y más problemas:

  • El primer error ha venido al intentar ejecutar la plantilla base, me pide Node para Angular y no lo había instalado aún con el instalador de VS2019 (aunque al final tuve que bajarmelo de su web porque tampoco tenia el gestor de paquetes NPM https://nodejs.org/en/)
  • Siguiente error:
    An unhandled exception occurred while processing the request.
    AggregateException: One or more errors occurred. (One or more errors occurred. (The NPM script ‘start’ exited without indicating that the Angular CLI was listening for requests. The error output was: ))
    System.Threading.Tasks.Task.ThrowIfExceptional(bool includeTaskCanceledExceptions)
    InvalidOperationException: The NPM script ‘start’ exited without indicating that the Angular CLI was listening for requests. The error output was:
    Microsoft.AspNetCore.SpaServices.AngularCli.AngularCliMiddleware.StartAngularCliServerAsync(string sourcePath, string npmScriptName, ILogger logger)
    SOLUCIÓN: He abierto la carpeta ClientApp y he ejecutado npm audit fix desde powershell

Ya compila! pero me he pasado un buen rato intentando recoger el listado de todos los juegos a partir del listado de todos los sistemas. Lo que debería ser db.ConsoleSystems.Include(x => x.VideoGames).ToList(); me ha mantenido media hora buscando porque no me aceptaba el include. Resulta que faltaba importar con using el EFCore, podía hacer otras consultas pero no salía el include T_T

Hola, Windows 10

Ya era hora, por fin he instalado Windows 10 en el disco SSD de 240gb que compré hace meses. No podía instalar Visual Studio 2019 en la anterior instalación por falta de espacio.

Tengo una carpeta con programas instalados de Windows 7 y quisiera no tener que reinstalarlos y perder sus configuraciones, pero esto trae otros muchos problemas.

– Notepad++. Ya no tengo la opción «Abrir con Notepad++» en el menú contextual, así que toca research.

  • Tecla Windows + R para ejecutar regedit
  • Ir a HKEY_CLASSES_ROOT\*\shell
  • Crear una clave hija de shell y llamarla Abrir con Notepad++
  • Crear una clave hija de Abrir con Notepad++ llamada command
  • Editar el campo Data de command para añadir la ruta completa del ejecutable, concatenándole "%1"
    "G:\Programas Windows\Notepad++\notepad++.exe" "%1"
  • Y ahora un icono bonito
    Ir a HKEY_CLASSES_ROOT\*\shell\Abrir con Notepad++ y añadir un nuevo valor string llamado Icon con la ruta hacia el icono de notepadd++
    G:\Programas Windows\Notepad++\notepad++.exe,0
  • Pues ya estaría. Ah, fuente aquí -> https://www.winhelponline.com/blog/open-with-notepad-plus-right-click-menu-windows/

– Skype. ¿Qué cojones? ¿Cúando he dicho que quisiera tener skype instalado, abierto y logueado? Pues tecla de Windows -> buscar Skype -> Desinstalar 🙂

– Nombre de carpeta en Usuarios. Por alguna extraña razón, Windows 10 ha decidido que me llamo «cerbe» y así ha llamado a mi carpeta en Usuarios. Según he leído habría que desvincular la cuenta de Microsoft antes de cambiar a mano la carpeta. Fuente aquí -> https://answers.microsoft.com/es-es/windows/forum/windows_10-desktop/cambiar-el-usuario-de-cuenta-microsoft-a-una/308de375-2d34-415c-8724-a1169d9fc35b. He tenido que buscar todas las apariciones de «cerbe» en el registro y cambiarlas por «cerb». Después de hora y media y algún registro borrado y restaurado por error, por fin parece funcionar todo bien (algunos registros no me dejaba cambiarlos)

Error al habilitar la conexión compartida de internet (ICS) en Windows 7

Pues resulta que me quería conectar a la Raspberry por cable porque la señal WiFi me llega muy mal, así que conecto un cable Ethernet desde mi PC a la Raspberry Pi para compartir internet, peero me salta el siguiente error:
Error ICS1

Después de odiar muy fuerte a Windows y de mucho research, encuentro la solución: activar a mano el servicio «Conexión compartida a Internet (ICS)» desde la herramienta Servicios (tecla Windows -> buscar «Servicios» en el cuadro de texto). Aquí intento lanzar el servicio pero me salta el error 1068:
Error ICS 2

Después de seguir odiando muy fuerte a Windows y de perder todo el dia googleando, no encuentro la solución, pero me lio a activar cosas relacionadas y por fin consigo que funcione otra vez!
Al final he habilitado e iniciado los servicios «Administración de conexión de acceso remoto» y «Firewall de Windows» (aunque el servicio de Firewall esté habilitado e iniciado, el Firewall en sí lo tengo desactivado en sus opciones).
Ah! por cierto, para iniciar un servicio hay que hacer doble click sobre él y darle al botón Iniciar, o desplegar el menú «Tipo de inicio» para ponerlo en Automático o Manual si estaba Deshabilitado y luego iniciarlo.

Retransmitir ethernet por wifi

La Nintendo Switch es una consola early access.

Como esta consolita tiene una mierda de recepción wifi, me fue imposible probar las betas online de algunos juegos, así que por no irme al lado del router busqué alguna manera rápida de retransmitir por wifi el internet del PC que me viene por cable (porque tampoco funciona el adaptador chino eth->USB que SÍ funciona en el tablet). Para ello usé mi tarjeta wifi externa USB conectada al PC.

El script en Windows para crear esta nueva red es:
netsh wlan set hostednetwork mode=allow ssid=Retransmision key=Contrasenya
netsh wlan start hostednetwork

Y para cerrar la retransmisión:
netsh wlan stop hostednetwork

No me acuerdo si tuve que editar algo más, pero ya lo investigarás tú si es así 😀

Deshabilitar adaptador red en Windows

Como bien sabrás, últimamente suspendo el PC por las noches porque tengo miedo de apagarlo y que nunca más se encienda. Pero se me despierta él solito cuando le apetece!
Después de mucha investigación resultó ser culpa del router, así que intenté desactivar la opción de «despertar el equipo» con el adaptador red, pero seguía igual.

Al final acabo usando un script para dormir, llamado Dormir.bat 😀 con el siguiente texto:
netsh interface set interface name="Conexi¢n de  rea local" admin=disabled
Los acentos son caracteres muy raros («á» de «área» parece un espacio pero es un carácter). Debería cambiar el nombre de la interfaz…

Y para despertarlo, ejecuto el script Despertar.bat 😀
netsh interface set interface name="Conexi¢n de  rea local" admin=enabled

Búsqueda de texto en los correos/chats de GMAIL

Joder que ágil es escribir artículos si no tienes que escribirlos también en inglés, categorizarlos, formatearlos, etc (véase http://frambuesa.ga por si has olvidado que tienes una web destinada a Raspberry Pi).
Hoy vamos/voy a apuntar cómo hacer búsquedas de texto en correos de GMAIL o chats de gtalk/hangouts por si algún dia se me olvida para cuando se me olvide.

En la barra de búsqueda podemos usar palabras reservadas como:
in: <- Seguido de «chats» buscaría en los logs de chats.
from: <- Seguido de «me» o una dirección mail.
to: <- Seguido de «me» o una dirección mail.
po <- Donde «po» es el término a buscar 😀

Ejemplo (se ha sustituido el mail original por XXX para evitar posibles represalias del susodicho):
in:chats from:me to:XXX@gmail.com fuente alimentacion
Con esta linea podré observar las múltiples veces que le conté a Prats las fuentes de alimentación que me petaron jugando al Tera en 1 sola semana. Por si te has (me he) olvidado, fueron 3 T_T

Pues como iba diciendo hace 4 años…

Hoy hace justo 4 años desde el último post! xD. Lo tenia un poco muy abandonado. Voy a ver si puedo seguir volcando información aquí que le pueda ser útil al Cerb del futuro.
El blog es una copia del alojado en http://carpare.blogs.uv.es, pero este es el primer post diferente. Hago un backup a este servidor porque quiero tener controlado el blog, que el anterior era de la universidad y por fin ya la acabé!
El servidor al que lo estoy subiendo es x10hosting (http://cerbaku.x10host.com/ o http://cerbaku.x10host.com/). Es un servidor gratuito con solo 512Mb de espacio, pero en principio podria ser suficiente. Me lo recomendó Santi y por ahora funciona muy bien. Nota mental: HUIR de hostinger, pensé primero en ellos (también es un servidor gratuito), pero todas las veces que he intentado volcar cosas no me ha dejado, estaba saturado.

Y ya que estoy aquí, voy a describir el proceso de migración, porque se me suelen olvidar las cosas mas básicas y obvias 🙂
Opción 1: Exportar desde el propio WordPress todo el sitio. Esto descargará un archivo XML que luego importaremos en la siguiente instalación de WordPress. También hará falta configurar los nuevos datos de la base de datos.
Opción 2: Si eres como yo (y lo eres, porque solo me leo yo), no te fiarás de las opciones automáticas y preferirás:
1 – Hacer un backup de todos los archivos del servidor con algún cliente FTP (ahora en Windows uso FileZilla) y luego restaurar.
2 – Hacer un backup de la base de datos a un archivo SQL y luego restaurar y modificar adaptando datos de configuración en la siguiente instalación.

Para cambiar los datos de la nueva base de datos, editaremos el archivo wp-config.php. Está bastante claro lo que hay que hacer, sólo marcaré las lineas que hay que editar:
define('DB_NAME', 'nombredetubasededatos');
define('DB_USER', 'nombredeusuario');
define('DB_PASSWORD', 'contraseña');

Si no hubiera base de datos creada (que te ha pasado ^^U), habrá que crearla y también un usuario!

Al entrar de nuevo en la página procederemos a instalar WordPress.
Vaya, parece que ha funcionado a la primera! aprovecharé para cambiar el tema a uno igual de soso.

Cambiar formato de hora y fecha en ubuntu 12.04

El formato por defecto era solo la hora, y quise cambiarlo para dejarlo así: «lunes 12 agosto, 11:42:17»
Para ello instalé el paquete dconf-tools para ejecutar dconf-editor y poder editar gráficamente la configuración.
Iremos a com.canonical.indicator.datetime y en time-format setearemos a custom
Ahora pondremos el formato que nos guste en custom-time-format, basándonos en esta tabla http://www.cplusplus.com/reference/ctime/strftime/

Por defecto ponia %l:%M %p
Yo he puesto %A %e %B, %H:%M:%S

Abrir pestañas de firefox al final

Es muy lioso que al abrir nuevas pestañas en firefox se abran justo a su lado, desplazando las que habia a la derecha, así se pierde totalmente el orden de lo que estabas viendo. Para dejarlo como estaba en versiones antiguas de firefox, simplemente cambiamos la propiedad browser.tabs.insertRelatedAfterCurrent en la configuración de firefox. Tecleando about:config en la barra de direcciones y seteandolo a false.

Fuente: http://www.eniac2000.com/?p=1872