viernes, 28 de agosto de 2020

Problemas con python "/usr/bin/env < < python>>: No such file or directory "

Es posible que hayas llegado aquí por un mensaje similar al siguiente:

 /usr/bin/env: <<python>>: No such file or directory

 

Cuando trabajamos con versiones nuevas de ubuntu, nos encontramos que a veces necesitamos utilizar algunas apps o código basado en python y que usan los scripts hechos y no queremos migrarlos. Para poder utilizarlo, lo primero es que hay que instalar python 2 para ello:

#↨ sudo apt-get install python2.7

#↨ sudo apt-get install python2 

 

 Y luego agregar un enlace simbólico:

#↨sudo ln -s /usr/bin/python2 /usr/bin/python

Con esto bastaría y sería suficiente.


NOTA: También se puede poner con otras versiones de python...

 

 

domingo, 23 de agosto de 2020

Migrar MDB de Microsoft Access a SQL MySql

Si buscas como migrar una base de datos MDB de Microsoft Access a SQL de MySql, verás que existen varios métodos para realizarlo. Tras probar diferentes, el que mejor se ha adaptado a mis necesidades ha sido el que comento aquí. Eso sí, se han perdido algunas relaciones y también los comentarios en el diseño de la estructura que había en Microsoft Access.

Lo primero que hay que hacer, es tener una máquina Linux con las mdbtools, para ello:

  •  Actualiza los repositorios para obtener la lista de los últimos paquetes y sus actualizaciones: 
tu-maquina:~: sudo apt-get update -y
  •  Ejecuta la instalación del paquete mbdtools (la opción -y es para que no te pregunte más y lo haga directamente junto con todas las dependencias):
tu-maquina:~: sudo apt-get install -y mdbtools

A continuacíon para exportar el esquema o arquitectura de la base de datos a un archivo SQL, se realizaría los siguiente:

tu-maquina:~: mdb-schema <tu-base-de-datos>.mdb mysql > squema.sql

Por último, para exportar los datos a un archivo SQL junto con el esquema o arquitectura es algo más elaborado y lo realizaremos mediante el siguiente script (en mi caso lo he llamado "mdb_to_mysql.sh":

#!/bin/bash
TABLES=$(mdb-tables -1 $1)

for t in $TABLES
do
    echo "DROP TABLE IF EXISTS $t;"
done

mdb-schema $1 mysql

for t in $TABLES
do
    mdb-export -D '%Y-%m-%d %H:%M:%S' -I mysql $1 $t
done

Finalmente, bastaría ejecutarlo para obtener el SQL con todos los INSERT y CREATE TABLE necesarios:

tu-maquina:~: sudo sh mdb_to_mysql.sh <tu-base-de-datos>.mdb > datos.sql

jueves, 25 de abril de 2019

Encontrar el listado de librerías (DLL) con carga dinámica en windows en Qt

A la hora de realizar un instalador de una aplicación y encontrar todas las DLL-s necesarias suele ser una tarea relativamente sencilla, para ello se puede usar el Dependency Walker, y este nos dará el listado de dependencias que existen. Este método funciona adecuadamente, siempre y cuando las librerías utilizadas sean todas llamadas de manera estática. ¿y que pasa cuando las librerías se cargan dinámicamente?

Tras estar dándole unas cuantas vueltas, se me ocurrió poner el binario y las librerías estáticas con todas las librerías de Qt y ejecutarlo (todo esto es bajo windows). En la aplicación que queremos obtener el listado ejecutar todas las acciones dónde tienen carga, en mi caso son plugins que se cargan según se necesitan. Una vez ya se han llamado a todos las librerías, abrimos el monitor de recursos de windows, "Resource Monitor" en mi caso.

En el apartado de CPU de la pestaña overview, seleccionamos el proceso que queremos saber las librerías utilizadas (cojo de ejemplo la aplicación del designer de Qt, designer.exe).


Una vez seleccionado, vamos a la pestaña de  CPU y en el apartado de Associated Modules tenemos el listado de librerías que han sido cargadas y utilizadas por el proceso.

 

HINT: En el propio listado se pueden seleccionar todas (Ctrl+A) y copiar con Ctrl+C.

Problemas con python "/usr/bin/env &lt; &lt; python&gt;&gt;: No such file or directory "

Es posible que hayas llegado aquí por un mensaje similar al siguiente:  /usr/bin/env: <<python>>: No such file or directory   Cu...