domingo, 24 de mayo de 2020

Migrar / importar una Parallels Virtual Machine a VirtualBox

En ocasiones por cuestiones de configuración y recursos necesitamos importar una maquina virtual de Parallels en Mac osx a Windows/Linux con VirtualBox pero no existe una manera directa por lo cual tenemos que realizar algunos trucos.

Primero descargamos e instalamos VirtualBox en nuestro Windows / Linux de la página oficial: https://www.virtualbox.org/

Copiamos  el archivo windows.hdd{3454-fdgfg-43543-gfdgd}.hds de  nuestra pvm a migrar a la carpeta donde vamos a tener nuestra maquina virtual, por ejemplo:

D:/virtual/

o

/home/miusuario/virtual/

Abrimos VirtualBox y damos clic en Crear nueva maquina virtual

Nombre: miwindows
Carpeta de maquina: D:/virtual/
Tipo: Microsoft Windows
Versión: Windows 7 (32-bit)



Seleccionamos la cantidad de memoria RAM

Se recomienda mínimo 2048 MB (2GB)

Renombramos el archivo windows.hdd{3454-fdgfg-43543-gfdgd}.hds a miwindows.hdd, observe que el nombre que le pusimos es el que especificamos de la maquina virtual nueva y cambiamos la extensión de .hds a .hdd

Para Linux, 

mv windows.hdd{3454-fdgfg-43543-gfdgd}.hds miwindows.hdd


Seleccionamos : Usar un archivo  de disco duro virtual existente y damos clic en el icono de la carpeta.

Damos clic en Añadir / Agregar y seleccionamos nuestra imagen renombrada.
Damos clic en Seleccionar.


Damos clic en Crear


Esperamos un momento y damos clic en Iniciar

Sencillo, su maquina virtual está funcionando.







Agregar Bootstrap a un proyecto de Angular 8 / 9

Agregar Bootstrap a nuestro proyecto Angular es una tarea sencilla.

Desde la carpeta de nuestro proyecto ejecutamos:

npm install bootstrap --save

También es recomendable instalar Jquery

npm install jquery --save

Como algo opcional podemos instalar popper

npm install popper.js --save

Además de Font-awesome

npm install font-awesome 

Ahora configuramos la conexión con los estilos y librerías, para ello abrimos con un editor el archivo angular.json y agregamos lo siguiente:


"styles": [
"src/styles.scss"
"node_modules/bootstrap/dist/css/bootstrap.min.css",
],
"scripts": [
"node_modules/jquery/dist/jquery.min.js",
"node_modules/bootstrap/dist/js/bootstrap.min.js"
]

Saludos



miércoles, 13 de mayo de 2020

Leer archivo csv por columnas en bash Linux con awk para crear insert sql y eliminar espacios

En ocasiones tenemos archivos en csv u otro formato que contienen datos en columnas separados por algún carácter especial y queremos leerlo y crear insert  de alguna tabla

Existen diferentes maneras de crear los script de sql, desde usar una hoja de calculo o bien un script. Está vez usaremos el bash de nuestro sistema operativo Linux/mac/Unix para solucionarlo con el comando awk

Supongamos que nuestro archivo es misdatos.txt con el siguiente contenido:

Juan|Díaz|juandiaz@sitiodeprueba.com|1989-10-02
Bruno|Díaz|brunodiaz@sitiodeprueba.com|2000-09-24
Pedro|Paramo|pedroparamo@sitiodeprueba.com|1970-12-01

Primero, cree un archivo desde la consola o su editor preferido (la extensión no importa) con el siguiente código:

#nano crearscript.pie

#!/bin/bash

cat misdatos.txt | awk '{$1=$1};1' |

awk  'BEGIN {FS="|"}

{
valores= "\""$1"\",\""$2"\",\""$3"\",\""$4"\""
}

{
print "insert into tabla01 (firtsname, lastname, email, fecha) values( "valores");";

}'



Funciona de la siguiente manera:
Obtenemos los datos de archivo de datos
cat misdatos.txt | 

Limpiamos caracteres al principio y al final de cada columna sin afectar los datos

awk '{$1=$1};1' |

Indicamos el caracter separador de datos en esta ocasión es el pipe (|)
awk  'BEGIN {FS="|"}

Colocamos los valores de las columnas en una variable para manejabilidad.
valores= "\""$1"\",\""$2"\",\""$3"\",\""$4"\"

Imprimimos la salida incrustando el valor de la variable con los valores

print "insert into tabla01 (firtsname, lastname, email, fecha) values( "valores");";

Una vez realizado el ajuste de la tabla e información con los datos correspondientes en el archivo, guardamos.

Cambiamos los permisos al archivo para ejecutar

#chmod 755 crearscript.pie

y ejecutamos

#./crearscript.pie

insert into tabla01 (firtsname, lastname, email, fecha) values( "Juan","Díaz","juandiaz@sitiodeprueba.com","1989-10-02");
insert into tabla01 (firtsname, lastname, email, fecha) values( "Bruno","Díaz","brunodiaz@sitiodeprueba.com","2000-09-24");
insert into tabla01 (firtsname, lastname, email, fecha) values( "Pedro","Paramo","pedroparamo@sitiodeprueba.com","1970-12-01");


Excelente y fácil.

Saludos

martes, 21 de abril de 2020

PHP Mysql PDOException: SQLSTATE[HY000] General error: 1267 Illegal mix of collations

PHP Fatal error:  Uncaught PDOException: SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='

Este error se genera por que el resultado del valor de un campo en nuestra base de datos esta en una cotejamiento(collection) diferente al del dato con el cual lo comparamos.


Solución:

Cambiar el tipo de cotejamiento(collecion) de la tabla
En Mysql  utilizando phpmyadmin editamos el campo de la tabla donde tenemos el conflicto y colocamos el valor que deseamos, en mi caso cambio de latin1_swedish_ci  a utf8_general_ci y le das clic en guardar.



Saludos

domingo, 19 de abril de 2020

Moodle Su base de datos tiene tablas utilizando el formato de fichero Antelope Unicode Barracuda


En algunas ocasiones los sistemas de hosting crean las bases de datos con un formato de archivo predeterminado y se nos presenta el siguiente error cuando el instalador revisa los requerimientos de Moodle.







Existen dos soluciones: 

La primera, solicitar al soporte técnico si pueden cambiar las características de configuración y volver a crear o convertir la base de datos ( a veces algo que acaban diciendo que no es posible :S )


La segunda, que resuelve el requerimiento pero a largo plazo no es recomendable.

Modificar el archivo config.php

1. Con un editor abrir el archivo config.php


2. Agregar la codificación actual de la base de datos al $CFG->dboptions, en la opción dbcollation, en mi caso es utf8_unicode_ci


$CFG->dboptions = array (
'dbpersist' => 0,
'dbport' => '',
'dbsocket' => '',

'dbcollation' => 'utf8_unicode_ci',

);


3. Guardar el archivo y recargar la página de validación de requerimientos


La opción debe desaparecer y permitir seguir con la instalación.

Nota Importante: se recomienda que la base de datos sea utf8mb4_unicode_ci para utilizar Moodle al 100%, utilizar una menor reducirá el rendimiento. Está solución solo funciona cuando no existe otra alternativa.

Saludos y éxito