martes, 20 de agosto de 2019

Entorno de Desarrollo de Unik 3.35

Esta versiòn de Unik ha sido programada en la rama unik-f1 y en el dìa de la fecha se ha fusionado en la rama master.

Esta versiòn de Unik se ha compilado desde GNU/Linux Ubuntu 16.04 para GNU/Linux y Android desde API 21 a 26 para armeabi-v7a y desde API 21 a 28 para arm64-v8a en ambos contextos con el SDK 29 de Android con el NDK r19c.


Unik se ha compilado para Android con el framework Qt 5.13.0



GCC versiòn instalada

ns@ns-linux:~/nsp/unik$ gcc --version
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609

Importante

Para compilar Unik compatible con armeabi-v7a es necesario compilar con Qt 5.13.0 Clang desde API 21 hasta 26.

Para compilar Unik compatible con arm64-v8a es necesario compilar con Qt 5.13.0 Clang desde API 21 hasta 28.

En ambos caso con el SDK 29 de Android.

Compilaciòn para Android compatible con armeabi-v7a


Compilaciòn para Android compatible con arm64-v8a





miércoles, 7 de agosto de 2019

Unik sigue avanzando en tiempos de cambios

Unik sigue avanzando


En estas ùltimas semanas hemos estado desarrollando aplicaciones, tal còmo lo hacemos desde siempre utilizando el framework Qt/QtQuick como entorno de desarrollo principal.

En la versiones màs modernas de los sistemas operavitos, la compatibilidad con openssl ha dejado de ser las versiones 1.0.x y ahora han pasado a ser compatibles con 1.1.x.

Este cambio afectarà a las aplicaciones para los dispositivos Android, motivo por el cuàl, hemos estado compilando Unik Qml Engine para Android con el API 28 del SDK de Android el cuàl es compatible con el Openssl de versiones 1.1.x o superiores.

Esto lo hemos podido realizar gracias a la recomendaciòn de Qt Company que en el sitio oficial nos recomienda la utilizaciòn de las librerìas Openssl 1.1.x compiladas por KDAB quienes han puesto a disposiciòn los binarios de las librerìas Openssl 1.1.x compatibles con Qt 5.12.4 y Qt 5.13.0. Para acceder al repositorio hay que entrar aquì.

Atenciòn! Procura acceder al repositorio github de KDAB para los binarios Openssl 1.1.x para Android compatibles con Qt 5.12.4 y Qt 5.13.0, hazlo desde el enlace que te hemos proveìdo en el pàrrafo anterior ya que un bug en github no te permitirà acceder a la rama en que KDAB provee dichos binarios.

Deciamos.

Ademàs de esos cambios en los pròximos ejecutables que vendràn con Openssl 1.1.x o superior, tambièn hemos estado mejorando y agregando nuevas funcionalidades y caracterìsticas al proyecto Unik entre las cuales podemos nombrar las siguientes:

  • Se agrega el soporte del paràmetro -zip para ejecutar aplicaciones QtQuick directamente desde archivos ZIP locales o remotos.
  • Se implementa la configuraciòn para alternar el idioma de Unik entre Inglès y Español.
  • Se orienta Unik para la usabilidad por parte de personas de baja visiòn o no videntes.
  • Se ha agregado la posibilidad de utilizar una configuraciòn visual para los elementos por defecto que utiliza Unik y dicha configuraciòn es asequible para cualquier otra aplicaciòn, submòdulo o aplicaciòn anidada que requiera de dicha configuraciòn para adoptar y utilizar un esquema de colores, tamaños, tipos de letra y caracteristicas visuales y sonoras segùn lo necesite cada usuario.

TODO (lo que hay para hacer)


  • Agregar audios en ingles y en español para los mòdulos de Unik ya disponibles.
  • Completar el desarrollo y la implementaciòn de Grabaciòn de Audio para envìo HTTP.
  • Completar y optimizar de manera amplia y omnipresente las funcionalidades de audio y navegaciòn para la Accesibilidad y Usabilidad por parte de personas con diferentes aptitudes fìsicas.


Para màs informaciòn visite el canal de YouTube https://youtube.com/c/nextsigner
Correo: nextsigner@gmail.com
Whatsapp: +54 11 3802 4370
Donaciones: paypal.me/lucentrica or patreon.com/unik







lunes, 1 de julio de 2019

Como preparar Ubuntu 16.04 para crear aplicaciones Qt y QtQuick

Si estas por utilizar el Framework Qt en GNU/Linux, en Debian o Ubuntu y no querés perder tiempo configurando manualmente ningúna parte para poder comenzar con la programación lo más pronto posible, aquí te explicamos paso a paso algunos pequeños y simples pasos que deberías realizar para tener todo correctamente configurado y comenzar a programar sin problemas lo antes posible.

Nota: Este artículo está orientado para aquellas personas que quieren desarrollar aplicaciones del tipo Qt o QtQuick para GNU/Linux y Android ARM x86/x86_64, ARM eabi-v7a y ARM64-v8a.


Antes de instalar el framework Qt hay que instalar y configurar lo siguiente en el siguiente orden.

Instalar librerías y compatibilidad i386

sudo apt-get install libstdc ++ 6: i386 libgcc1: i386 zlib1g: i386 libncurses5: i386 zlib1g-dev freeglut3-dev

Instalar el Java Developer Kit

sudo apt-get install openjdk-6-jdk

Instalar Android Studio

Preferentemente en la carpeta ~/Android

Actualizar el SDK de Android

Instalar Qt

Se puede ir al sitio oficial de Qt o ir aquí.

Al finalizar la instalación del Framework Qt todo debería haberse configurado automáticamente.

Solucionar Compatibilidad OpenSSL

Si se utiliza la versión de Qt 5.12.4 o superior junto a Ubuntu 16.04, es necesario instalar OpenSSL versión 1.1.1c.

Para descargar openssl 1.1.1c, DESCARGAR DESDE AQUI

Descomprimir el archivo comprimido y desde el terminal hay que instalar con los siguientes comandos:

$:./config
$:make
$:sudo make install

Si tienes alguna duda puedes comunicarte de manera directa con nextsigner@gmail.com o al whatsapps +54 11 3802 4370.

miércoles, 26 de junio de 2019

Frases que se me vienen a la mente mientras programo

El ser humano solo escapa del dolor que conoce, del físico y del emocional, sin saber que en su escape se expone a un dolor inevitable que ningún ser vivo aún ha conocido.

Lo que le dá sentido a mi vida es vivir evitando que la busqueda de la felicidad le dé sentido a mi vida.

Ser minimalista debería requerir un esfuerzo mínimo pero hay que pensar muchísimo.

Ünicamente pueden ser minimalistas las personas sabias.

El inteligente no desborda de conocimientos para ser sabio.

El sabio es el minimalista del conocimiento.

El sabio es minimalista o no lo es, nunca es el mejor porque no compite con nadie, nunca procura ser el mejor porque su minimalismo le reduce a uno los ejemplos en quién compararse, el mismo.

El camino más corto solo lo toman los que no compiten. 

Dice la frase "Engañar a una persona es mucho más fácil que convencerla de que la engañan", yo digo que a esta frase solo la entienden los que engañan.

sábado, 22 de junio de 2019

Compilaciòn de Unik 3.24 para Android 9 API 28 en Qt 5.13.0

Hoy 22 de Junio de 2019, hemos descargado en nuestros equipos la ùltima versiòn de Qt 5.13.0 liberada el 18 de Junio de 2019 en los repositorios de www.qt.io.

En el artìculo anterior hemos mencionado con cuàles versiones de Qt estabamos compilando y que hasta el momento nos veìamos impedidos de poder compilar Unik o cualquier otra aplicaciòn para Android compatible con las arquitecturas arm64-v8a.

Es sabido que a partir de la fecha 1 de Agosto de 2019, la tienda de aplicaciones de Google, la llamada Goolge Play Store, no posibilitarà que estèn disponibles las aplicaciones de 32bit para equipos de 64bit. Es por este motivo que no hemos visto en el apuro de compilar Unik en las condiciones òptimas tal como lo requiere la tienda mencionada y lògicamente asì lo necesitan los usuarios con equìpos de estos tiempos para poder sacar mayor provecho a sus dispositivos.

Las versiones utilizadas para la compilaciòn de Unik fueron las siguientes:

Sistema Operativo

GNU/Linux Ubuntu 16.04 

Compilador C++ Clang

clang version 3.8.0-2ubuntu4 (tags/RELEASE_380/final)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin

Qt

Qt 5.13.0 (Basado en Qt 5.12.3) no LTS (la ùltima versiòn LTS es la 5.12.x)
QtCreator 4.9.1

Android

Android SDK 26.1.1
Android NDK r19c

Para conocer màs sobre cuales eran las versiones de Qt que venìamos utilizando y conocer ciertas recomendaciones al respecto, sugerimos que lean el artìculo anterior haciendo clik aqui.

Probando Qt 5.13.0 en Ubuntu 16.04

En un artìculo anterior he mencionado que estarìa probando la versiòn de Qt 5.12.3 en Windows. Luego de haberlo probado en dicho sistema operativo y en otros, puedo confirmar que no me ha sido de gran utilidad y me han ocacionado problemas.

Posiblemente los problemas que han surgido tenìan alguna soluciòn al alcance de la mano o que no sean de gran complejidad, lo cierto es que no me he puesto a analizarlo en detalle porque la prueba estaba orientada a ver si se trataba de una versiòn estable y que no venga con ningùn problema.

Tal como he mencionado en otros artìculos, las ventajas de pasarse de una versiòn de Qt a otra màs avanzada es cuando la versiòn a la que decidimos migrar nos brinda una mayor compatibilidad y plena funcionalidad y configuraciòn de acuerdo al grado de exigencia o a la diversidad de tareas que estamos demandando que realice el IDE Qt o su framework en general.

Si bien la versiòn de Qt 5.9.1 LTS la que, segùn mi opiniòn,  fuè la mejor de los ùltimos años, aùn con la liberaciòn de la versiòn de Qt 5.12.x tambièn LTS, la versiòn que màs compatibilidad, funcionalidad y rendimiento a mì me ha resultado de manera òptima, fuè la versiòn de Qt 5.11.3 no LTS. Esta ùltima versiòn mencionada ha sido la que he utilizado si optar por migrar a la versiòn de Qt 5.12.3.

En estas semanas ya està disponible la versiòn de Qt 5.12.4 LTS, la cuàl estaba por probar pero decidì probar la versiòn de Qt 5.13.0 que al parecer para GNU/Linux ya viene bastante completa.

Luego de algunas pruebas decidirè si migrarè a dicha versiòn ùnicamente si su funcionalidad y compatibilidad se extiende a los demàs sistemas opertivos como ser Windows y Macos, de no ser asì probarè la versiòn de Qt 5.12.4 LTS y si esa tampoco me conforma optarè por quedarme en la versiòn Qt 5.11.3 no LTS.

Por ùltimo voy a mencionar que el instalador de Qt 5.13.0 tiene un tamaño de 1.5Gb a diferencia  de las versiones anteriores que tenian un tamaño aproximado de 1.3Gb.

Enlace de Descarga de Qt 5.13.0: https://download.qt.io/archive/qt/5.13/5.13.0/

Actualizaciòn del Artìculo: Para conocer què ha resultado de las pruebas de esta versiòn de Qt 5.13.0 puedes hacer click aqui.

lunes, 29 de abril de 2019

Probando Qt 5.12.3 en Windows

En el transcurso de las próximas horas, estaré probando Qt 5.12.3 para Windows.

Cuando tenga novedades al respecto lo informaré por este medio. Espero poder llevarme al fín la buena impresión, experiencia y satisfacción que he tenido con la versión Qt 5.9.1, algo que hasta hoy no se ha podido superar.

En primer lugar, lo que me está llamando mucho la atención es que el tamaño del instalador completo, osea el no on-line, es de 3.7Gb, siendo que el de versiones recientes si mal no recuerdo eran de 1.2Gb o 1.xGb. Esto me produce una gran curiosidad. Sospecho que deben haber incluido todo lo necesario para UWP y el SDK de Windows 10.

Yo las pocas veces que me pongo a utilizar Windows, utilizo la versión 8.1. Compilando desde Qt con Visual Studio 2010, 2013, 2015 o 2017, en todos los casos las app con el windowsdeployqt.exe no han tenido ningún problema siempre y cuando el OS de Bill Gates tenga el bendito vcredistributable en las versiones necesarias.

miércoles, 24 de abril de 2019

Navegador Web El Demente #ElDemente



He publicado un video en YouTube sobre un Navegador Web para el YouTuber El Demente. Este navegador està creado en Qml y QtQuick.

sábado, 13 de abril de 2019

Algunos Script Ùtiles GNU/Linux

Cómo conectat a github vía SSH

Crear ssh-key
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Nota: Al momento de crear la clave hay que ingresar la clave de la cuenta de github.

Agregar SSH key al ssh-agent
eval "$(ssh-agent -s)"
luego
ssh-add ~/.ssh/id_rsa
Copiar SSH al portapapeles
sudo apt-get install xclip
luego
xclip -sel clip < ~/.ssh/id_rsa.pub
Por último pegar lo que se copio en el portapapeles en el area Settings-->SSH GPG-->New de GitHub.com.

Còmo instalar OpenJDK en Ubuntu

sudo apt-get install default-jre
sudo apt-get install default-jdk

Còmo crear un alias con funcion y paràmetros

alias gs='gitSubir "$1"'
function gitSubir() {
    git add *;
    git commit -m \"$1\";
    git push origin master;
}

Este còdigo hay que incluirlo en ~/bash_aliases o en ~/bash_profile
Para ejecutarlo antes hay que asegurarse por ùnica vez luego de haber editado esos archivos mencionados, asegurarse de recargar el source del terminal. Para ello ejecutamos lo siguiente:

$: source ~/bashrc

Luego de haber hecho este paso, nuestro nuevo alias estarà disponible.

Ejemplo de uso
$: gs 'he modificado algo en el proyecto git'

Grabar Escritorio con audio de IpWebcam

ffmpeg -f x11grab -r 15 -s 1280x720 -i :0.0+0,0 -i http://192.168.1.64:8100/audio.wav -vcodec libx264 -strict -2 -b:v 16M output.mp4

Grabar video desde carpeta de imágenes cada 1 segundo

ffmpeg -y -f image2 -framerate 25 -pattern_type sequence  -r 1 -i ./caps/%d.png -s 720x480 test.avi

Crear funciòn en .bash_aliases

alias s='subirGit $1'
function subirGit() {
    git add *;
    git commit -m "$(echo "$1")";
    git push origin master;
}

Modo de uso:
$: s 'se confirman los cambios en el proyecto git'


miércoles, 6 de marzo de 2019

QtQuick para Android - Unik Qml Examples - #4 - Conexiòn Sqlite desde Android



En el dìa de la fecha hemos publicado el cuarto video sobre QtQuick en YouTube.com.

Este vìdeo corresponde a una serie de videos que estàn orientados a enseñar y mostrar una nueva y àgil manera de programar aplicaciones para Android utilzando la aplicaciòn Unik Qml Engine el cuàl carga y ejecuta còdigo QML/JavaScript de distintos orìgenes.

martes, 26 de febrero de 2019

Configuraciòn de Combinacion de Teclas en Ubuntu Mate

El sistema operativo que utilizo desde hace 4 años, es el GNU/Linux Ubuntu Mate. Lo he elegido y aùn sigo un firme usuario de este sistema por su simplicidad, practicidad y eficiencia.

Obviamente este sistema operativo trae consigo mismo todas las ventajas del GNU/Linux Debian. Con respecto a las caracterìsticas relacionadas con el entorno de escritorio, Mate es una versiòn ligera del Gnome 2 optimizada para lograr un sistema operativo sencillo y funcional.

Entre las caracterìsticas del entorno de escritorio, una que utilizo muy a menudo, son las Combinaciones de Teclas personalizadas. Las mismas se podrìan configurar de infinitas maneras para realizar cualquier tipo de tarea tanto en el entorno de escritorio asì como tambien en otros àmbitos del sistema operativo mediante accesos directos por vìa de estas combinaciones de teclas que ejecutan lineas de comandos, scripts etc.

Cuando estoy programando un nuevo modulo QtQuick en QML para Unik, independientemente para cuàl o para què sistema sistema operativo sea la aplicaciòn final, la gran mayorìa del còdigo lo puedo programar utilizando VIM y ejecutando Unik desde este Ubuntu Mate que generalmente utilizamos.

El ùnico cambio que debo realizar para ganar tiempo y productividad, es modificar la funcionalidad de la combinaciòn de teclas para ejecutar Unik de tal modo que cargue y ejecute el còdigo fuente QML que estoy editando.

Por ejemplo si estoy programando un proyecto que està en la carpeta /home/nextsigner/miApp y allì se encuentra el archivo main.qml, para ir modificando el còdigo e ir viendo los cambios al instante, en principio debo ir al Menu->Sistema->Centro de Control->Combinaciòn de Teclas y allì crear un nuevo item de combinaciòn de teclas perzonalidas que ejecute Unik con el paràmetro -folder=/home/nextsigner/miApp para que Unik funcione sobre dicha carpeta.

El problema es que hay modulos QML para Unik a los cuales les dedico un par de horas diarias, a otros les dedico 1 o 2 semanas seguidas y voy saltando de un proyecto a otro, ya sea que estoy creando mòdulos nuevos u optimizando otro. Entonces cada vez que quiero comenzar a editar un mòdulo debo ir a la secciòn de Centro de Control mencionada para cambiar la carpeta en donde Unik debe buscar còdigo QML cuando es llamado mediante el acceso ràpido por medio de la combinaciòn de teclas.

Por lo general la combinaciòn que prefiero utilizar el Shift+Crtl+r . La letra "r" es por RUN.

Para hacer todo el cambio de la manera màs ràpida posible, lo que he creado es un script Bash que estè preparado para cambiar una combinaciòn de tecla en el entorno MATE.

Atenciòn! El siguiente script està orientado solo para el entorno MATE.

Archivo ct.sh //CT significarìa Combinaciòn de Tecla

#!/bin/bash
dconf write /org/mate/desktop/keybindings/custom0/action "'$1'"
dconf write /org/mate/desktop/keybindings/custom0/command "'$1'"
dconf write /org/mate/desktop/keybindings/custom0/binding "'$2'"
dconf write /org/mate/desktop/keybindings/custom0/name "'$1'"

Explicaciòn de uso

Este script requiere 2 paràmetros. Ambos deben estar escritos entre comillas simples.

  1. Lìnea de Comando que deseamos ejecutar.
  2. Combinaciòn de Teclas 

Ejemplo

Como usuario comùn, no es necesario ejecutar con privilegios de administrador, si ejecutamos el siguiente comando.

$: ct.sh 'unik -folder=/home/nextsigner/miApp' '<Shift><Ctrl>r'

En este caso, si presionamos las teclas Control màs Shift màs r, Unik se ejecutarà cargando còdigo QML desde la carpeta /home/nextsigner/miApp

En cambio si queremos utilizar el script ct.sh para otro fìn, por ejemplo ejecutar nuestro navegador web en un sitio espacìfico al iniciar, la lìnea de comando que deberiamos ejecutar serìa la siguente.

$: ct.sh 'chromium-browser http://www.unikode.org' '<Shift><Ctrl>c'

En este caso, si presionamos la combinaciòn de teclas Ctrl màs Shift y la letra c, se abrirà el navegador chromium directamente en este sitio web.

No està demàs aclarar, para aquellos que son novatos, que puedes modificar el script a tu gusto para ejecutar tu browser o navegador o cualquier aplicaciòn con la combinaciòn de teclas que desees.

Por ùltimo, cabe aclarar que la ejecuciòn del script siempre reescribirà el mismo item de combinaciòn de teclas modificàndola en cada vez. Si quieres utilizar el script para crear nuevos y diferentes combinaciones de teclas, entonces deberàs modificar el script para que acepte un nuevo paràmetro, serìa el tercero, el cuàl se encargue de reemplazar el nombre "custom0" por el nombre que tu envìes por la lìnea de comandos.

Para los que quieran hacerlo aquì les dejo el script cuyo uso serìa el siguiente.

Archivo ct2.sh //CT significarìa Combinaciòn de Tecla

#!/bin/bash
dconf write /org/mate/desktop/keybindings/$3/action "'$1'"
dconf write /org/mate/desktop/keybindings/$3/command "'$1'"
dconf write /org/mate/desktop/keybindings/$3/binding "'$2'"
dconf write /org/mate/desktop/keybindings/$3/name "'$1'"

Explicaciòn de uso

Este script requiere 3 paràmetros. Todos deben estar escritos entre comillas simples.

  1. Lìnea de Comando que deseamos ejecutar.
  2. Combinaciòn de Teclas 
  3. Nombre del item a crear o reescribir

Ejemplo

Como usuario comùn, no es necesario ejecutar con privilegios de administrador, si ejecutamos el siguiente comando.

$: ct2.sh 'chromium-browser https://www.youtube.com/' '<Shift><Ctrl>y' 'micombinacionperzonalizada1'

Nota: En mi caso el ejecutable de Unik de llama solamente escribiendo la comando "unik" debido a que si bien el ejecutable de unik en primera instancia se llama unik_vX.x.x.AppImage y generalmente lo suelo tener en el escritorio. Cuando estoy utilizando el terminal y quiero ejecutar Unik, al estar en el escritorio deberìa escribir /home/nextsigner/Escritorio/unik_vX.x.x.AppImage. Para evitarme ese asunto y asì poder llamar a Unik desde donde sea tan solo escribiendo "unik", lo que hago es crear un enlace duro del AppImage de unik hacia la carpeta /usr/local/bin con el comando sudo ln unik_v3.5.2.AppImage /usr/local/bin/unik















viernes, 22 de febrero de 2019

Hemos solucionado un error crìtico en Unik Qml Engine

Desde hace unas semanas, hemos publicado nuevas actualizaciones de Unik. Las versiones anteriores, si bien siempre fueron compatibles con Windows, GNU/Linux y Macos, dichas versiones menores a la versiòn 3.x, no eran compatibles con Android 7 o superior. Las actualizaciones superiores a la versiòn 3.x, cuentan con la compatibilidad y funcionalidad plena sobre los sistemas operativos mencionados pero ademàs tambien lo son para los OS Android 5/6/7/8/9.

Todo o casi todo funcionaba segùn lo esperado, excepto la funciòn log(QByteArray) de unik. Èsta funciòn, no estaba funcionando en Unik para sistemas Android con arquitectura armeabi-v7a. Èsta falla estaba provocando un cierre inesperado de la aplicaciòn. Un error terriblemente crìtico que nos ha obligado a anular dicha funciòn para dicha arquitectura, por lo menos hasta que encontremos una soluciòn.

El gran problema, era que dicho error estaba presente y los que formamos parte del la parte dura del desarrollo de bajo nivel en el equipo de unikode.org, tenìamos pasaje para vacacionar. Lamentablemente no ha quedado otro camino que intentar una soluciòn al regreso.

Regresamos el 19/02/2019. El calor era insoportable. Con una sensaciòn tèrmica de 41 grados en el exterior, por razones de fuerza mayor nuestros estudios estaban algo condicionados y no podìamos lograr la climatizaciòn dentro del ambiente de programaciòn. Fuè asì que luego de 4 dìas intensos de programar, probar, depurar, instalar, desinstalar, etc, hemos dado con la soluciòn.

Por momentos la situaciòn se tornò realmente agotadora. Hay que admitir que el desànimo por momentos nos empujò a creer que todo estaba perdido, a pensar negativamente sobre todo lo relacionado al proyecto unik, sus funcionalidades, propòsitos, estrategias, mòdulos, etc, fueron momentos durìsimos.

La paciencia es lo que un programador debe conservar, mucho màs aùn en momentos crìticos. La falta de resultados y el agotamiento nos llevò a estados de ànimo no muy adecuados, esos que nos impulsan a intentar mètodos o maneras descabelladas. Hemos dudado mucho, hemos cambiado y probado de todos los modos posibles, compilando con todos los NDK, el r10e, el r16b, el r17b y el r18b. Pasando de compilaciones con el API 26 y volviendo al API 28, probando còdigo una y otra vez. Tantas variaciones casi nos hace perder el rumbo de tanto desformar el còdigo.

Por fortuna, existen ciertas herramientas que nos salvan para esta situaciones. Por ejemplo Git. Hemos ido retrocediendo en el tiempo, buscando la versiòn del còdigo que màs estabilidad y respuesta nos provea, una vez que hemos vuelto a un punto de partida por vez nùmero 10 en la busqueda de esta soluciòn, como estrategia salvadora hemos recurrido a la creaciòn de una clase C++ llamada UnikLogObject, tal como lo dice su nombre es un objeto que administra o mejor dicho sirve de puente o nexo para conectar la funcion estàtica C++ encargada del manejo de los mensajes de salida estandar en android dependientes de las cabeceras log.h de android.

Expliquemos mejor esto ùltimo. En Qt, cuando programamos en C++, en la funciòn principal o en otras partes, pero generalmente en la funciòn main, en el caso que sea necesario o ùtil, allì podemos especificarle a nuestra aplicaciòn, cuàl serà la funciòn encargada de gestionar los mensajes de la salida de la aplicaciòn relacionados con mensajes crìticos, fatales, de depuraciòn, de informaciòn etc. Esto Qt lo hace con la previa declaraciòn de una funciòn del tipo static llamada por ejemplo myMessageHandler(), la cuàl se utiliza en nuestra aplicaciòn llamando al mètodo qInstallMessageHandler().

Ejemplo

Archivo main.cpp

static void myMessageHandler(QtMsgType type,
                                    const QMessageLogContext &context,
                                    const QString &message)
{
    android_LogPriority priority = ANDROID_LOG_DEBUG;
    switch (type) {
    case QtDebugMsg: priority = ANDROID_LOG_DEBUG; break;
    case QtWarningMsg: priority = ANDROID_LOG_WARN; break;
    case QtCriticalMsg: priority = ANDROID_LOG_ERROR; break;
    case QtFatalMsg: priority = ANDROID_LOG_FATAL; break;
    };
    __android_log_print(priority, "Qt", "%s", qPrintable(message));
}
int main(int argc, char *argv[])
{
...
qInstallMessageHandler(myMessageHandler);
...
}

El problema es que dicha funciòn estàtica no puede llamar funciones de objetos previamente declarados a la funciòn main. Esto en un principio se solucionò creando variables del objeto de unik que se encarga de mostrar la salida en QML, dicha variable se crea al principio de todo el còdigo, es decir antes que la funcion main y antes que la funcion estàtica mencionada. Esa soluciòn funcionò en las versiones anteriores, funcionaba para todos los sistemas en cualquier arquitectura, pero lamentablemente cuando escalamos APIs de Android arriba llegando a la versiòn 28, esta estrategia comenzò a provocar un apagado inesperado de unik, un error fatal.
¿Como lo hemos solucionado? Lo solucionamos con la creaciòn del objeto UnikLogObject que hemos mencionado. Gracias a los benditos SIGNAL Y SLOT de Qt, hemos conectado nuestro nuevo objeto desde dentro del main hasta la funciòn estàtica. Lo hemos hecho del siguiente modo.

Archivo main.cpp

UnikLogObject ulo;
static void myMessageHandler(QtMsgType type,
                                    const QMessageLogContext &context,
                                    const QString &message)
{
    android_LogPriority priority = ANDROID_LOG_DEBUG;
    switch (type) {
    case QtDebugMsg: priority = ANDROID_LOG_DEBUG; break;
    case QtWarningMsg: priority = ANDROID_LOG_WARN; break;
case QtCriticalMsg: priority = ANDROID_LOG_ERROR; break;
    case QtFatalMsg: priority = ANDROID_LOG_FATAL; break;
    };
    __android_log_print(priority, "Qt", "%s", qPrintable(message));
    ulo.setLog(message.toUtf8());
}
int main(int argc, char *argv[])
{
    ...
    qInstallMessageHandler(myMessageHandler);
    UK u;
    QObject::connect(&ulo, SIGNAL(logReceived(QByteArray)),
                                &u, SLOT(log(QByteArray)));
...
}

Hemos conectado mediante el mètodo connect() de la clase QObject a el objeto de la clase UnikLogObject mediante su señal logReceived() hacia el objeto principal de unik de la clase UK llamada "u" hacia su mètodo o slot log(). De este modo lo hemos resuelto. Ahora ya hemos publicado en el sitio oficial de descargas de unik y en la Google Play Store, el archivo instalador de Unik Qml Engina para Android 5/6/7/8/9 para la arquitectura armeabi-v7a. Se trata del APK de Unik versiòn 3.7.1 que nos permite ver la salida estandar en nuestros proyectos QML. El fallo està solucionado, ahora la aplicaciòn no se cierra inesperadamente, cada vez que se reinicia para cargar algùn mòdulo especìfico o se solicita el cierre con el mètod Qt.quit() o qApp->quit(), en ningùno de los casos se apaga inadecuadamente.




martes, 12 de febrero de 2019

Para Desarrollo de Apps Android recomendamos Framework Qt

Como todos sabemos, este universo de la informàtica va en constante expansiòn, a veces a una velocidad que nos supera. Por momentos es difìcil, casi imposible, seguir su ritmo y estar a la altura de las circunstancias.

En este àmbito relacionado con el desarrollo de software, existe un mundo aparte, un espacio, un entorno, un sistema, un medio ambiente, el cuàl llama la atenciòn de todos. Es un planeta en donde todos en algùn momento debemos aterrizar, debemos ir de paseo, a trabajar, a disfrutar o a vivir. Este es un lugar maravilloso, lleno de luces y sombras, colores y sabores, ese lugar se llama Android.

Android es mucho màs que un Sistema Operativo. Es una parte màs, una extensiòn de nuestros sentidos, cada vez està màs y màs presente, casi de manera omniciente, en todas partes.

Los usuarios de Android, llegan a este mundo por medio de las aplicaciones. Permanentemente, un sin fin de aplicaciones permiten que este lugar sea màs y màs popular, el lugar màs conocido y al que millones y millones de usuarios van y vuelven. En su transito por Android, en la interacciòn, en la costumbre y en el ritual de encender y utilizar aplicaciones, este mundo va creando y consolidando una cultura, un modo de vivir, una manera de percibir y proyectar la realidad que nos rodea, la realidad que està màs allà e incluso nos conecta y nos acerca como nunca antes con los sueños.

Esas aplicaciones, las que dìa a dìa nos invitan a visitar Android, son creadas por Programadores, Desarrolladores de Software. Estas personas, estàn acostumbradas a visitar otros mundos. Para ir de un lugar a otro, diferentes de Android, crean aplicaciones especìficas, una aplicaciòn diferente para ir a cada lugar diferente. Esto implica un esfuerzo enorme y resulta ser un desafìo durìsimo, mucho màs aùn para aquellos programadores que no cuentan con muchos recursos.

A todo creador, vièndolo desde un punto de vista relativo, se lo puede considerar como un Dios. Serà considerado como tàl hasta que se logre conocer al creador de esa entidad llamada Dios. En ciertas culturas suelen llamar Dios a una entidad que posibilita que las cosas sean posibles, la que protege, la que ayuda, todo esto independientemente de si ha sido o no un creador. Muchos afirman que el Dios es el creador que los ha arrojado a esta existencia, otros afirman que Dioses son los que nos protegen o castigan en esta ya circunstancial e inexplicable existencia.

Los Desarrolladores de Software, algunos de manera conciente y otros sin nisiquiera pensarlo, dependemos de ciertas entidades, de ciertos agentes, de ciertos factores, sistemas o de ciertos Dioses para poder crear las aplicaciones. La interacciòn que tengamos con esas entidades depende de cuàl sea el lenguaje que utiliza ese pseudo-dios y si los desarrolladores o progrmadores han aprendido a dominar ese lenguaje. Se los podrìa considerar Dioses porque necesitas aprender un lenguaje, conocer su bibliografìa, sus dogmas, sus reglas, adaptarte a sus mandamientos y repetar sus pautas para ser bendecido por èl.

En el universo de la informàtica, los programas, aplicaciones o sistemas que crean programas, aplicaciones o sistemas, siguiendo la analogìa, podemos decir que ocupan el rol de Dioses. Lo que los podrìa definir como tal, es que son creadores, posibilitan el desarrollo o crecimiento de las cosas creadas, pueden clonar, eliminar o dar larga vida a todo lo que han creado. Entonces cada aplicaciòn que los usuarios utilizan para o desde un sistema, fuè creado por los desarrolladores y estos a su vez han dependido de otras programas, aplicaciones o sistemas creadores. Todo esto serìa imposible sin el conocimiento y entendimiento de un lenguaje especìfico para orarle al creador y pedirle què y còmo lo queremos lograr.

Muchos desarrolladores, talvez por razones obvias y comprensibles, se aferran a ciertas doctrinas. Esto sucede por lo general porque no es muy fàcil aprender un lenguaje, avanzar de lleno y de manera profunda en toda su bibliografìa. Se puede aprender un poco de cada lenguaje para hacer un vuelo rasante por encima de otras doctrinas, para conocer por encima sus reglas o caracterìsticas, pero para llamarse desarrollador, hay que si o si especializarse de manera profunda en una doctrina. Esto conlleva a que los desarrolladores se aboquen a difundir y predicar cuàl si fuese una religiòn, ùnicamente aquellos lenguajes y doctrinas que ha ellos les ha resultado beneficiosa, negando de manera necia que existen otras posibilidades y mejores opciones en otros contextos, con otras reglas y con otros lenguajes.

Allà por el año 1992, la empresa Noruega Trolltech, ha creado un sistema que consiste en aplicaciones y programas que sirven para crear programas. Han creado el entorno de trabajo o framework Qt. Este entorno permite crear aplicaciones en muchos lenguajes para todos los mundos! Esto quiere decir que no importa que doctrina, lenguaje o reglas haya aprendido un desarrollador, el entorno Qt permite a los que hablan el idioma C++, C#, PHP, Python, Java, Ruby, Pascal y otros, les permite crear aplicaciones desde el sistema GNU/Linux, Windows, Macos u otros, para GNU/Linux, Windows, Macos, iOS o Android.

Fuè asì que utilizando el mismo lenguaje, escribiendo las mismas instrucciones, gracias al Dios Qt, ademàs de crear aplicaciones para todos los mundos, tambien se puede crear aplicaciones para el mundo Android en sus versiones 5,6,7,8 y 9. 

Muchos soñadores se han ilusionado con un mundo en el cuàl todos los que piensan, escriben o se expresan de maneras diferentes, todos puedan unirse y convivir sin problemas. Sueñan con un universo equilibrado, multicultural, plural y diverso pero en armonìa. En el universo de la informàtica todos estos sueños talvez puedan ser posibles gracias a Qt. Muchos han soñado aùn de manera màs ambiciosa. Quisieran que todas las diferencias se reduscan a su mìnima expresiòn, que a travès de nuevos y viejos lenguajes, de una nueva cultura, de nuevas metodologìas, todos confluyan en un sòlo àmbito desde donde crear todo y de todo para todos los sistemas.

Qt està haciendo todo esto posible. Crear una aplicaciòn en Qt, permite a los desarrolladores, crear aplicaciones con una practicidad y eficiencia ùnica. Logrando que la aplicaciòn desarrollada en Qt pueda aterrizar como una nave ùnica en todos los planetas existentes.

Los desarrolladores que intentan crear aplicaciones para GNU/Linux, tienen muchas opciones al momento de elegir sus herramientas para el desarrollo. Asì mismo los desarrolladores que desarrollan aplicaciones para Windows, Macos, iOS o Android. Pero al momento de seleccionar una herramienta que permita desarrollar aplicaciones para todos los sistemas, utilizando practicamente el mìsmo còdigo fuente, para esto no existe mejor opcciòn u herramienta que Qt.

La mejor opciòn, la mejor manera, la mejor herramienta para crear aplicaciones para Android, sin importar què tipo conocimientos previos o què lenguaje tenga previamente el desarrollador, sin duda alguna, la mejor opciòn es Qt. Es por esto y por muchas razones màs, es que desde aquì predicamos en su nombre. No somos fanàticos, somos realistas. Nos parece un buen dogma y unas buenas reglas que exista el modo de que todas las diferencias se unan en un solo camino.

Existen muchos sistemas operativos, cuando hablamos de Android, de manera romàntica nos referimos a èl como un mundo màgico, en donde la infinidad de oportunidades y posibilidades, gracias a su infinita cantidad de usuarios, hacen de Android algo mucho màs que todos los demàs. Por eso insistimos, desde aquì recomendamos, que si los desarrolladores quieren crear aplicaciones bendecidas por la palabra màgia COMPATIBILIDAD, a todos ellos les recomendamos que utilicen Qt. Si desean crear aplicaciones para un solo sistema, pueden lograrlo seguramente con otras herramientas, pero si lo que desean en crear aplicaciones que puedan aterrizar en todos los planetas, para ello recomendamos Qt.

En este sitio, tenemos la costumbre de publicar detalles tècnicos sobre estos asuntos o relacionados. Tambièn es bueno expresar de un modo genuino y propio nuestras impresiones. Es bueno dejar un agradecimiento y una bendiciòn a nuestros dioses y nuestros paraìsos. Se agradece al Dios GNU, Open Source, Android, Qt, QtQuick y sus lenguajes C++, QML y JavaScript.
































lunes, 4 de febrero de 2019

Entorno de Desarrollo de Unik 3.18

Información Actualizada 12/05/2019

GNU/LInux

OS Host: GNU/Linux Ubuntu 16.04 LTS
Qt Open Source: Qt 5.12.3
Compiler: gcc version 5.5.0 20171010 (Ubuntu 5.5.0-12ubuntu1~16.04)
Última Versión de Instalador: unik_v3.5.2.AppImage

Asunto linuxdeployqt

1) Descargar linuxdeployqt
     versiòn linuxdeployqt 6 (commit 7789123), build 634 built on 2019-01-27 22:20:46 UTC
     o superior.

2) Configurar la variable de entorno PATH de tal modo que se incluya la ubicaciòn del ejecutable qmake con el cuàl se ha compilado unik. Por ejemplo, si se ha compilado con el Qt 5.9.1, deberìamos setear la variable de entorno PATH del siguiente modo.

$:export PATH=/home/nextsigner/Qt5.9.1/5.9.1/gcc_64/bin:$PATH

Qudando asì

$: echo $PATH
/home/nextsigner/Qt5.9.1/5.9.1/gcc_64/bin:/home/nextsigner/bin:/home/nextsigner/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/ssl/bin:/snap/bin

3) Ejecutar el linuxdeployqt
$: /home/nextsigner/Descargas/linuxdeployqt-continuous-x86_64.AppImage  /media/nextsigner/ZONA-A1/nsp/build_unik_linux_5_11/unik -qmldir=/media/nextsigner/ZONA-A1/nsp/unik -appimage



Nota 1: El error libnssutil3.so se soluciona copiando /usr/lib/x86_64-linux-gnu/nss a build_unik_linux/lib/nss .

Nota 2: Copiar manualmente los archivos lib*.so.5.x.x a la carpeta lib del ejecutable de nuestra aplicaciòn.

Windows

OS Host: Windows 8.1
Qt Open Source: Qt 5.9.6
Compiler: MSVC2015 32bit
Última Versión de Instalador: unik_v3.5.1

Android

OS Host: GNU/Linux Ubuntu 16.04 LTS
Qt Open Source: Qt 5.11.3
Compiler: gcc version 5.5.0 20171010 (Ubuntu 5.5.0-12ubuntu1~16.04)
Última Versión de Instalador: org.unikode.unik unik_v3.5.3_armeabi-v7a
Android Build SDK: android-28
API min: 21 Android 5.0
API Target: 26 Android 8.0
Google Play Publication: 3.5.2

jueves, 31 de enero de 2019

El Hardware en la Nube eliminarà nuestro hardware de siempre

Desde aquí afirmamos que el hardware, en cierto modo ya no será utilizado ni estará presente en los ámbitos en los cuales estábamos acostumbrados a verlos o donde estaban presentes. Para explicar y abordar este tema y afirmar nuestro punto de vista, se harà explicando en primera persona por quien escribe, una experiencia testigo del momento que refleja la situación.

En las últimas horas he estado intentando compilar una aplicaciòn Qt para Android armeabi-v7a y arm-v8a (64bit).

Estas operaciones se están intentando realizar en el siguiente contexto.

GNU/Linux Ubuntu Mate 16.04
Android Sdk 26.1.1
Android Ndk 16.1.4 r17b
API Minima 21
API Target 26

Lamentablemente, por ahora, no he logrado realizar la compilaciòn, al parecer, es debido a un problema con las librerías SSL que no están disponibles para el API 28 en el NDK.

Si bien estoy intentando compilar para el API 26, lo cierto es que estoy intentando compilar desde todas las APIs posible hasta poder comprobar en qué contexto las compilaciones funcionan de manera más óptima y/o convenientes.

Esta situación, obliga a que uno realice la compilaciòn de las librerías openssl para todas las arquitecturas posibles. Allí también hay mucho que analizar, evaluar y probar.

El nivel de complejidad de las acciones a realizar y las pruebas a realizar, està requiriendo un manejo del entorno de compilaciòn, osea, versiones de Qt, versiones de SDK, versiones de NDK, versiones de openssl etc, todo esto está demorando un poco el toque final que se pretende aplicar o implementar en la aplicaciòn unik para su primer lanzamiento.

Las estrategias a seguir, están orientadas a utilizar diferentes ordenadores, iniciados en diferentes particiones, instanciar diferentes máquinas virtuales etc.

Los recursos con los que contamos son escasos. Esto se debe principalmente a que no nos interesamos plenamente en conseguirlos. Esto podría decirse que es un fallo o una falencia del director del proyecto, del equipo o de la comunidad unikode.org.

Talvez sean estas falencias ciertas. Lo que sí es cierto e inobjetable es que la idea de quién conduce el proyecto, quien escribe, está orientada a que los déficit de recursos materiales se cubran con recursos humanos. Motivo por el cuál, la filosofía que se intenta imponer de manera consensuada, está orientada a asimilar la idea de que no sirven de nada invertir mucho en recursos materiales, de hardware, tecnològicos, de espacio, confort y/o comodidad, si nada se invierte en recursos humanos e intelectuales. Si los esfuerzos se orientan a invertir en en recursos humanos, más que en los materiales, esos recursos humanos pueden conseguir logros y resultados que posiblemente deriven en la obtención de nuevos recursos materiales, algo que no puede ocurrir a la inversa, es decir, por muchos recursos materiales que existan, por si solo no podrán conseguir buenos recursos humanos y esos recursos materiales tendrán un alto riesgo de desaparecer o ser obsoletos con el paso del tiempo sin la posibilidad de auto generar los recursos necesarios para mantenerse actualizados.

Es por estos motivos, que en vez de pedir dinero o solicitar donaciones para la adquisición de recursos físicos, nuestra filosofía apunta a invitar a aquellas personas interesadas en lograr una contundente formaciòn y experiencia en el campo de la informática, los invitamos a que participen y si somos más personas, de ese modo contamos indirectamente con más recursos físicos aportados minimamente por cada participante.

Es cierto que la filosofía que se intenta aplicar, es más lenta. Algunos bien pueden alegar que todo lo que sea lento ya carece de eficiencia. En parte talvez se tenga razón. Desde mi punto de vista, lo que nadie puede negar, es que hoy en día vale muchìsimo mas contar con buenos recursos humanos que con recursos físicos. Entonces toda estrategia orientada a lograr cierta competitividad, la cual repercute de manera directa en el factor tiempo, siempre estará lograda a partir de priorizar el factor humano por encima del material.

Otras corrientes de pensamiento, pueden decir que las personas pueden sentirse atraídas a participar en ámbitos en donde existan grandes recursos físicos. Razón por la cual toda persona se sentirá más cómoda y sentirá la tranquilidad de poder hacer las tareas o actividades con menos esfuerzo y mayor tranquilidad. Para toda esa corriente de pensamiento le tengo una respuesta implacable.

La respuesta es que todo el hardware desaparecerá. Mejor dicho, o dicho de un modo más preciso, todo el modo en el que conocimos el hardware, en los hogares, oficinas y àmbitos particulares en general, todo ese hardware dejarà de existir casi en su totalidad. Anote querido amigo HARDWARE EN LA NUBE.

Esto serà asì debido a que las grandes compañias, las cuales cuentan con tecnologìas 1 millón de veces màs avanzadas y eficientes que las que utilizan comunmente en los àmbitos que todos conocemos comunmente. Todo este hardware dichas empresas multinacionales las estàn ofreciendo en modo de alquiler como un servicio que no evita tener que invertir en hardware del modo tradicional.

Un ejemplo claro del alquiler o venta de servicio de alquiler de super computadoras, hardware del màs avanzado nivel tecnològico, es el servicio Google Cloud Platform. Este servicio posibilita a los desarrolladores, a las empresas que operan con sistemas de alto rendimiento que desarrollan y proveen servicios de màs alto rendimiento para satisfacer enormes demandas, a todas las organizaciones y comunidades que requieran dar un servicio y soporte de ùltima generaciòn, a todos ellos el servicio mencionado de Google, les brinda la posibilidad de crear intancias de màquinas virtuales hyper potentes para ser utilizadas con el fin de lograr todo tipo de objetivos comunes y/o avanzados que demanda la sociedad hoy en dìa al rubro de la informàtica.

Si quieres conocer màs sobre Google Cloud Platform u otras opciones, obviamente tienes que hacerlo simplemente buscando por internet informaciòn relacionada con el servicio de alquiler de màquinas virtuales on-line o similares. Te apareceràn muchas opciones de distintos tipos ofrecidos por distintas empresas. Aquì he mencionado una de la cual yo puedo dar fe que es muy potente y eficiente, dudo que exista otro mejor, como se imaginaràn Google no se andarà con chiquitas.

No estoy haciendo propaganda de este servicio de Google, nadie me lo ha pedido y no tengo razòn alguno o beneficio por hacerlo. Lo cierto es que lo he utilizado de manera libre y gratuita, tal como tu o cualquiera lo puede hacer en estos tiempos por un período de 1 año. Yo creo que esta gratuidad, con el paso del tiempo dejarà de estar disponible. Si quieres utilizar estos beneficios deberías registrarte lo antes posible para poder utilizarlo de manera libre durante un buen tiempo.

El lado negativo de este servicio de Google mencionado, segùn mi parecer, es que su valor anual es de 300 euros anuales o 40 euros mensuales aproximadamente. Lo cual es caro o barato dependiendo obviamente de los beneficios obtenidos por su utilizaciòn.

El lado positivo es que el hecho de poder utilizar esto de manera libre por el período de 1 año, nos brinda la posibilidad de adquirir muchos conocimientos y afianzar otros que no tenemos del todo claros. Si bien la utilizaciòn de este tipo de servicios seràn muy tenidos en cuenta por los desarrolladores que por los programadores, es el tipo de servicios que servirà de puente para que los programadores adopten nuevas perspectivas del desarrollo màs integral, màs completo, màs panoràmico, relacionado mucho màs allà de los frontend y los backend convencionales. En estos contextos los programadores pueden hacercarse màs a ciertos àmbitos del desarrollo vinculado a la Redes, a los sistemas avanzados de gestion de la big data, a las apis màs potentes y complejas habidas y por haber.

Todos estos cambios, a los que nos tiene acostumbrados el mundo IT, conllevaràn a que se puedan desarrollar enormes proyectos contando con el mìnimo hardware en el hogar, la oficina o entorno de la actividad informàtica que se realice. Dentro de unos años, bastarà con tener en nuestro hogar un dispositivo hyper pequeños y simple, como ser un Raspberry Pi, una pantalla y un teclado y mouse inalàmbrico porsupuesto. Con esos simple recursos ya alcanzarà y no habrà excusas para realizar una infinidad de tareas. Todo esto nos posibilitarà reducir gastos, costos y problemas de mantenimiento y segurirdad en cuanto al hardware. Obviamente también nos permitirà un portabilidad y comodidad plena para trasladar nuestras mìnimas herramientas fìsicas ya que contamos con todo el super hardware en la nube.

Pregunta aparte. ¿Serà por esto que algunas empresas que fabrican hardware de uso particular se estàn devaluando?. Desde aquì opinamos que todos deberàn ir detràs del Hardware en la Nube, el Desarrollo en Comunidades, el Sofware Open Source, toda una combinaciòn de factores que algunos ya han sido probados y que ahora se complementan con nuevos contextos. Al final todos siempre van detràs de lo que realmente funciona, brinda ventajas y beneficios. Por esto desde aquì decimos que el futuro ya tiene forma y quièn no se adapte a ello lamentablemente estarà muy condicionado para avanzar a la velocidad de los acontecimientos, algo que este rubro es una manera de exiliarse y/o desaparecer.

lunes, 28 de enero de 2019

Hemos Compilado Unik para Android API 23 o superior

Nota: Este artìculo aùn està siendo editado. Por el momento la compilaciòn se ha realizado para la arquitectura x86. Esto se ha realizado en el siguiente contexto.

Qt 5.11.3 (debo cambiar la imagen de la captura de la version de Qt y tambien la de los Kits)

Debo aclarar el contexto de Apis min 21, Api Target 23 y Build API 28.





Tools->Options

viernes, 25 de enero de 2019

Compilando Aplicacion Android desde Qt 5.9.1

Desde hace 3 años estoy compilando aplicaciones para Android en el IDE QtCreator. Siempre lo he hecho desde GNU/Linux, no he intentado en otros OS porque en otros no me siento tan còmodo y seguro como en el Ubuntu Mate.

A traves de los años, han sugido nuevas versiones de Android. Hace unos meses, varios, lanzaron Android 8.x, luego de un tiempo de su lanzamiento me enterè que las aplicaciones para dicha sistema no debìan ser desarrolladas con APIs inferiores a la versiòn 23. Dicho de otro modo, màs concreto, Android 8.x solo permite correr aplicaciones creadas con las APIs 23 o superior.

Estos cambios obligan a uno a tener que actualizar el SDK de Android, crear nuevos dispositivos virtuales en el AVD Manager etc.

En ese tràmite estoy ahora. Cuando termine esta tarea, voy a publicar otra entrada dejando detallado en què nuevo contexto estoy realizando las compilaciones en este 2019. Espero que todas estas modificaciones perduren un buen tiempo, 2 años por lo menos. Es mucho pedir lo sè.

Debo anotar todo, registrar cada paso o cambio. Si por alguna razòn de fuerza mayor mi OS deja de existir y las copias de seguridad dejan de ser seguras, tengo que montar todo el SDK de Android y de Qt tal cuàl como lo vengo utilizando. Por ejemplo utilizar el NDK r16e, API 23, Qt 5.9.1, anotar todos los detalles.

Luego de acomodar todo vuelvo por estos mares a traer màs informaciòn.















domingo, 13 de enero de 2019

He desarrollado un Entorno de Desarrollo Multiplataforma


Unikode.org presenta Unik Qml Engine


Nota: Este artìculo serà editado y actualizado el dìa 11 de Febrero de 2019. Fecha en la cuàl serà lanzada la primer versiòn de Unik Qml Engine 3.x.x

Hemos desarrollado una aplicaciòn que te permite crear aplicaciones para Android, GNU/Linux, Windows y Macos.

Es un ejecutable que interpreta o ejecuta un còdigo infinitamente màs poderoso que HTML. El lenguaje que carga desde cualquier origen, remoto, local o desde GitHub, dicho lenguaje se llama QML. Este lenguaje està basado en JavaScript y fuè creado por el Qt Project para el framework QtQucik de Qt.

QML es un lenguaje de lo màs fàcil y amigable. Su sintàxis es màs sencilla que la de un simple documento JSON.

La aplicaciòn se llama Unik Qml Engine. Està desarrollada en el framework Qt Open Source bajo las licencias LGPL.

Para empezar no necesitas màs que un ordenador sencillo, de 2Gb de RAM o superior y un editor de texto o còdigo que tu elijas. La aplicaciòn que he desarrollado tiene un tamaño de 100Mb aproximadamente. No necesitas descargar ningùn SDK, ni NDK, ni Eclipse, ni plugins ni nada.

Con estos mìnimos requisitos ya puedes crear potentes aplicaciones de manera libre utilizando un mismo còdigo programado por tì para hacerlo correr en todos los sistemas operativos.

Con este sistema puedes crear aplicaciones con GUI (Interfaz Gràficas de Usuario) dinàmicas y modernas. Con pocas lìneas de còdigo puedes implementar el uso y las funcionalidades para que tu aplicaciòn pueda operar con bases de datos Sqlite, MySql remoto directo (sin PHP), Reproductores de Video RTMP, RTSP de tipo QtAV y/o VLC-Qt para Windows. Tambièn puedes crear aplicaciones con WebView, componentes para visualizar aplicaciones webs propias o de terceros. Puedes crear todo tipo de aplicaciones que hoy por hoy se demandan en el rubro del desarrollo del software.

Todo lo que desarrolles en Unik, luego lo puedes compilar tu mismo en el IDE de QtCreator si quieres continuar con el desarrollo de manera alejada o apartada de Unik.

Puedes confiar con absoluta tranquilidad en Unik Qml Engine. Todo el desarrollo es totalmente transparente. Puedes observar, descargar y modificar el còdigo de Unik ya que permanentemente està publicado en GitHub.com. Si quieres ir al repositorio tienes que ir al siguiente enlace https://github.com/nextsigner/unik


Lo mejor que tiene Unik Qml Engine es que su desarrollador @nextsigner brinda cursos sin costo alguno sobre Unik, QML, QtQuick, Qt a quienes participan y apoyan esta comunidad de Unikode.org. Tù puedes unirte a nosotros y aprender gratis. Ùnete a este Open Source Developers Club.

En este sitio http://www.unikode.org tienes disponible los instaladores para el sistema operativo que tu utilizas.

Enlace de Descarga de Unik Qml Engine: https://nsdocs.blogspot.com.ar/p/download.html

Si estàs interesado en participar, ser parte de nuestra comunidad, recibir soporte gratuito y asì poder desarrollar tus aplicaciones de manera ràpida, dinàmica y efectiva, puedes hacerlo comunicàndote con nosotros a las siguientes vìas de contacto.

E-mail: nextsigner@gmail.com
Whatsapps: +54 11 3802 4370

sábado, 12 de enero de 2019

Seguiré utilizando Qt 5.9 hasta 2020

Luego de varias horas, períodos intensos como siempre, luego de una larga travesía, he llegado a la conclusión de que seguiré utilizando Qt 5.9 Open Source hasta el año 2020.

Ya he contado que cada cierto tiempo, me dedico a probar nuevos lanzamientos de Qt, Para analizar sus características, nuevas ventajas y/o beneficios. Luego de determinadas pruebas, debo tomar desiciones al respecto.

He estado probando Qt 5.12.0 LTS, Qt 5.11.3 y Qt 5.11.2 en GNU/Linux, Windows y Macos. Dichas pruebas han resultado negativas para todos los sistemas operativos en la versión Qt 5.12.0 y en general positivas las versiones 5.11.x para todos los sistemas excepto para Windows.

Lamentablemente, utilizar la versión Qt 5.11.x en Windows, requiere realizar unos cambios contundentes en el sistema operativo. Mucho más aún si uno cuenta con Windows 8.1 y no está en Windows 10 tal es mi caso. Windows siempre dando la nota, como siempre demostrando que si no existiera Macos sería el peor sistema operativo del mundo. Por algo es el ámbito en donde se mueven los usuarios novatos o ignorantes de computadoras. Dicho de otro modo, ya me molesta mucho tener que utilizar Windows 8.1 de vez en cuando, las varias veces que he utilizado Windows 10 he salido espantado, lo cual me lleva a tomar al decisión de quedarme en Qt 5.9.1 antes de tener que mudar todo a Windows 10 o tener que modificar muchas cosas y lidiar con el Windows actual para hacer casi lo mismo que ya estoy haciendo en Windows 8.1 con Qt 5.9.1.

¿Que significa quedarme en Qt 5.9.1? Significa que ha ido tan bién que a pesar de la llegada de 5.12.0 LTS o las versiones menores Qt 5.11.x, aún me quedaré con la que estoy utilizando desde hace tiempo y me permite continuar con el tipo de proyectos que tengo entre manos. Esto es un asunto de compatibilidad, costo, tiempo, pros, contras y beneficios, todo se pone en la balanza y es por ello que seguiré utilizando la Qt 5.9.1 para todos los sistemas operativos.

Las versiones más modernas de Qt, tienen muchas novedades, seguramente en el futuro serán muy útiles. Yo particularmente he tomado esta desición porque creo que me estoy adelantando mucho más de lo conveniente para mi situación. Talves en los próximos sementres, de manera natural y sin forzar situación alguna me encuentre utilizando Windows 10 de manera más cómoda y amigable, hoy eso no sucede, de suceder iré probando más detalladamente las nuevas versiones de Qt que seguramente con el tiempo también se irán actualizando y se vuelva a entrar en un ciclo virtuoso de hyper compatibilidad más plena con todos los sistemas y/o contextos en los cuales necesito hoy por hoy.

Me ha sido muy útil atravesar por todas estos caminos estos días, caminos llenos de pozos que por momentos se convierten en una autovía muy tentadora para acelerar en un sentido u otro. Siguiendo con estas innecesarias metáforas de charlas de café, continúo afirmando que gracias a esos recorridos es que tengo cierta tranquilidad para poder desplazarme de un modo más tranquilo todo este año, ahora conozco un poco más el territorio, puedo ver que es lo que hay en las fronteras, comprender cuánto vale y de qué sirven los proyectos que estoy sosteniendo, analizar mejor si son aptos para este escenario, que tipo de características debo adaptar o mantener. Ahora tengo nuevamente aquella visión panorámica de la situación que me permitirá tomar las mejores desiciones en este rubro.

Luego de estas pruebas, con la información recolectada, sé que debo dedicar unas semanas más a terminar algunas partes duras del desarrollo multiplataforma, pulir mi sistema principal y luego tomarme un largo y merecido descanso. En mi dialéctica descansar le llamo a no tocar más el corazón de los desarrollos complejos, pero aún en etapa de descanso, voy a seguir programando la parte blanda. Yo le llamo parte blanda a programar solamente con QML y JavaScript. Dejaré muchas cosas de C++ en condiciones y estaré un buen tiempo alimentando el corazón principal desarrollado en C++.

Si todo va bién, yo no seré el único que esté programando código QML y JavaScript para todo lo que he estado programando en C++. La parte dura es digamos el núcleo, el gestor, el manager, el administrador, el procesador, el servidor. La parte blanda es todo el código que circula por dicho núcleo. Los que vienen siguiendo mis pasos saben que me refiero a Unik Qml Engine.

En ello estaré poniendo mi atención las próximas horas o días, en la medida de lo posible crearé su primer versión RELEASE que quedará lista para enfrentar todas las batallas de este año. Allá voy!.









jueves, 10 de enero de 2019

Entorno para Crear aplicaciones Qt en Macos

Contexto o Entorno de Trabajo adecuado segun mi experiencia.

Para programar aplicaciones Qt desde y para Macos, en mi caso estoy utilizando las siguientes herramientas de desarrollo.

Macos Sierra 10.12.6

Esta versiòn de Macos se està utilizando para lograr la compatibilidad con Xcode 9.2 que es requerido por Qt 5.8 o superior para compilar aplicaciones para iOS. Yo recomiendo utilizar esta versiòn de Macos. He desahabilitado las actualizaciones a Macos Sierra High. Posiblemente usted pueda compilar aplicaciones en una versiòn superior de Macos. Yo no lo he hecho. Si usted lo ha realizado serìa muy valioso para la comunidad que nos comente còmo es la performance de otras versiones superiores de Macos. Dèjenos un comentario, serà de mucha utilidad.

Xcode Version 9.2 (9C40b)

Esta versiòn de Xcode se requiere para compilar aplicaciones iOS 9.3 o superior. Para instalar esta versiòn de Xcode hay que estar en Macos Sierra 10.12.6 o superior.


Qt 5.11.3 Open Source o Enterprise

Distribuir aplicaciòn

La manera màs comùn de distribuir aplicaciones para el sistema operativo Macos, es mediante el instalador de aplicaciones en formato DMG.

Puedes crear un instalador, el cuàl contenga en su interior tu aplicaciòn .app con todas las librerìas y recursos necesarios en su interior. Puedes obtener o crear el archivo DMG de tu aplicaciòn para que lo puedas distribuir y utilizar en diferentes ordenadores con Macos compatibles.

Para crear el DMG tienes que utilizar la linea de comando disponible en las carpetas de instalaciòn de Qt. El comando se llama macdeployqt.

Tienes que ejecutar macdeployqt con el paràmetro -dmg. Si quieres obtener màs informaciòn de còmo utilizar macdeployqt, simplemete el siguiente comando.

Si no es del tipo QtQuick

/Users/<tu usuario>/Qt5.11.3/5.11.3/clang_64/bin/macdeployqt /Users/<tu usuario>/CarpetadeTuApp/tuApp.app -dmg

Si es del tipo QtQuick

$: /Users/<tu usuario>/Qt5.11.3/5.11.3/clang_64/bin/macdeployqt /Users/<tu usuario>/CarpetadeTuApp/tuApp.app -qmldir=/Users/<tu usuario>/CarpetaDondeEstaTuProyectoQtQuick -dmg

Nota: Si es del tipo QtQuick, el paràmetro qmldir= espera que le indiques la ubicaciòn del archivo .pro de tu proyecto.

Como resultado deberìas tu archivo DMG en la siguiente ubicaciòn
/Users/<tu usuario>/CarpetadeTuApp/tuApp.app
/Users/<tu usuario>/CarpetadeTuApp/tuApp.dmg

Revisalo con el comando ls

$: ls /Users/<tu usuario>/CarpetadeTuApp/

Atenciòn!
Importante!

Todo este kit de desarrollo, el Qt 5.11.3 màs el Xcode 9.2, en total suman una cantidad de archivos enorme. Entre 10 y 15 Gb de espacio en disco.

Si tu quieres puedes programar aplicaciones QtQuick con solamente un editor de còdigo ligero o editor de texto. ¿Còmo hacerlo? Tienes que utilizar la aplicaciòn que hemos desarrollado para tales fines. Se llama Unik Qml Engine. Tiene un tamaño de 100Mb aproximadamente. Puedes descargarlo desde este sitio desde el panel que se encuentra a la izquierda o haciendo click aqui

Para màs informaciòn sobre Unik Qml Engine puedes ver el canal de youtube de @nextsigner en https://youtube.com/c/nextsigner

Unik Qml Engine GitHub: https://github.com/nextsigner/unik

Ante cualquier inquietud o duda me puedes consultar en las siguientes vìas de comunicaciòn.

E-mail: nextsigner@gmail.com
Whatsapps: +54 11 3802 4370

Soluciòn de apagado aplicacion con QtWebEngine en Macos


En la versiòn de Qt 5.11.3 para Macos, la linea de comando para distribuir las aplicaciones en dicho sistema, el comando macdeployqt, funciona muy bien. No funciona plenamente. En determinados casos dicho comando no realiza correctamente las acciones de manera automàtica.

Por ejemplo, cuando la aplicaciòn tiene el componente QtWebEngine, la aplicaciòn inicia correctamente pero al cerrar provoca una violaciòn de acceso de memoria o lo que deriva en el conocido app crash. El sistema operativo Macos informa que la aplicaciòn no se ha cerrado correctamente. Lo hace a traves de un cuadro de dialogo del mismo Macos en el centro de la pantalla.

El error se produce por la falta de los archivos .pak que se encuentran en la carpeta resource. 

Este inconveniente ocurre tambièn en otros sistemas operativos. Ya he tenido que lidiar con ello y sè còmo solucionarlo. En GNU/Linux se soluciona copiando de manera manual desde el explorador de archivos o desde el terminal. Lo que ha que hacer el copiar la carpeta resources desde los archivos de Qt hacia la carpeta en donde se encuentra el ejecutable.
Supongamos que tenemos una ejecutable que utilizarà el componente QtWebEngine en la carpeta myApp en la carpeta principal. Para este caso habrìa que copiar los archivos .pak en la siguiente ubicaciòn.

$: cp ~/Qt5.11.3/5.11.3/gcc_64/resources ~/myApp/resources 

Ahora en Macos el procedimiento es diferente. Si bien el comando macdeployqt ya ha incluido los archivos .pak dentro del myApp.app, el error del apagado o cierre fallido de nuestra aplicaciòn sigue ocurriendo. Siguiendo la lògica, he copiado los archivos en donde se incluyen en un sistema tambien basado en unix, tal es el caso y la similitud entre Macos y GNU/Linux. Seguir este razonamiento lògico ha posibilitado encontrar la soluciòn. Por ahora, este inconveniente se ha solucionado de la siguiente manera.

En primer lugar creamos la carpeta resources en la siguiente ubicaciòn.

mkdir ~/myApp.app/Contents/Resources/resources

Copiamos los archivos .pak con una linea de comando cp de un modo similar a este.

cp ~/myApp.app/Contents/Frameworks/QtWebEngineCore.framework/Resources/qtwebengine_locales/* ~/myApp.app/Contents/Resources/resources/

Por cualquier duda o inquietud me puedes contactar a las siguientes vìas de contacto.

E-mail: nextsigner@gmail.com
Whatsapps: +54 11 3802 4370

miércoles, 9 de enero de 2019

He instalado Qt 5.11.3 en GNU/Linux Ubuntu Mate 16.04

En la ùltimas horas, he intentado instalar y probar Qt 5.12.0 en GNU/Linux Ubuntu Mate 16,04 y no he tenido una buena experiencia. De todos modos estoy contento porque he optado por instalar Qt 5.11.3 Open Source y todo ha ido bien.

He ido a el sitio http://qt.io, accedì a mi cuenta con el correo nextsigner@gmail.com que utilizo para descargar herramientas open sources del framework Qt y lamentablemente ya no posibilitan realizar las descargas desde el panel Download.

He ido a la pàgina principal de qt.io y he descargado el ejecutable que instala Qt Open Source desde internet. Dicho instalador tiene un tamaño de 34Mb aproximadamente. Apenas lo descarguè, comencè a instalar la versiòn 5.12.0 de Qt. Al finalizar la instalaciòn, en el sistema operativo mencionado, QtCreator nunca pudo iniciar. Al parecer se apaga inesperadamente, lo que podrìamos definir como el tìpico AppCrash por un violaciòn de segmento. Supongo que debe ser un problema de punteros, operadores new llamados desde otra funciòn sin que exista una variable en el constructor de la clase, siempre hablando de X objeto en X librerìa, vaya uno a saber donde. Tengamos en cuenta que todo el framework tiene un tamaño de 1.3Gb y una vez instalado pasa a tener un tamaño de 2.8Gb aproximadamente.

Seguramente es un bug que pronto resolveràn. Siempre que liberan una nueva versiòn, luego de un tiempo lo resuelven. Yo he esperado un mes luego de el lanzamiento y al dìa de hoy no funciona.

¿Entonces? ¿Y ahora? ¿Que hacemos con la vieja muerta? ¿la enterramos? (no se porquè, de donde ni con què sentido esa es una frase popular en mi lugar de residencia.)

Como ya cuento con cierta experiencia en estos mares, he navegado por Google llegando al terreno deseado en 10 segundos. He escrito "qt opensource index of" en el buscador de Google y he accedido a las pàginas en donde se publican los instaladores completos.

Fuì directo a la versiòn de Qt 5.12.0. Descarguè el instalador completo y otra vez, no funcionò. Me arrojò el mismo fallo que me habìa arrojado el instalador on-line de Qt.

¿Y ahora?...

Como ya tengo experiencia en estos pantanos, en estas arenas movedizas, me quedè quietito, pensativo para demorar el hundimiento. A pesar de sentir que me estaba hundiendo lentamente, la infaltable confianza que me caracteriza que hacìa sentir muy tranquilo. Luego de unos instantes tomè la desiciòn acertada, tal como lo he hecho desde siempre. Optè por descargar el instalador completo de Qt 5.11.3 Open Source para GNU/Linux x86_64 y todo resultò sin problemas.

Una manera de argumentarme a mi mismo, cuales serìan las ventajas y/o desventajas de optar por una versiòn inferior a la pretendida, es que el tiempo transcurrido entre la versiòn 5.11.3 y la 5.12.0 es de apenas 2 dìas. No creo que haya cambiado mucho el framework en esas pocas horas. Deduzco que la diferencia entr ellas es casi inexistente. Talves la primera sea la ùltima de las versiones 5.11 y la ùltima sea la primera de las versiones 5.12 LTS, cambiando solo el nombre. En las pròximas semanas probarè la versiòn 5.12.x. Nunca me quedarè con la duda, soy PROGRAMADOR e intento conocer al màximo mis herramientas.

Debido a que cuento con una conexciòn de internet por fibra òptica de 50Mbit/s (ya he pedido los 100Mbit/s y aùn no me lo han habilitado), con esta velocidad actual, el cambio de estrategia de bajar a otra versiòn ha resultado bien sin perder tiempo. El instalador completo de Qt 5.11.2 Open Source tiene un tamaño de 1.3Gb que se descargaron en un par de minutos.

He tenido que reveer, estar casi media hora dàndole duro a la consola para ver si la nueva compilaciòn de mi proyecto principal no tendrìa fallos al momento de crear el ejecutable del tipo AppImage que me permite crear un ejecutable/portable, un archivo ùnico que contiene todas las librerìas de la aplicaciòn, todo en un solo archivo. El formato AppImage lo puedo crear utilizando el ejecutable linuxdeployqt.AppImage con el paràmetro -appimge. Todo este asunto de las liberìas ha ido todo bien, entonces en concluciòn, puedo decir que por lo menos para este sistema oparativo ya tengo todo funcionando perfecto para compilar mis proyectos tal y còmo lo he venido haciendo en el framework Qt 5.9.1 LTS.

Cuando realice estas mismas tareas en Windows y Macos, escribirè un artìculo al respecto.

Quienes tenga alguna duda o consulta, me pueden contactar al correo nextsigner@gmail.com o bien al Whatsapps +54 11 3802 4370


Estoy instalando Qt 5.12 LTS Open Source



Hace 3 años aproximadamente estaba utilizando la versiòn de Qt 5.6 LTS. Las cosas no iban del todo bien para ciertas cuestiones que tenìa entre manos programar. Talves dicha versiòn estaba en condiciones optimas pero yo no he tenido una experiencia plenamente positiva con la misma. Para muchos programadores aquella versiòn le pudo resultar funcional. En mi caso no lo fuè porque yo estaba orientando el desarrollo para desde GNU/Linux, Windows, Macos para GNU/Linux, Windows, Macos, iOS y Android.

En aquellas instancias, pude avanzar mucho utilizando la versiòn 5.7.1 de Qt. Todo el panorama comenzò a aclararse y los proyectos comenzaron a tomar un rumbo correcto.

El 31 de Mayo de 2017, llegò Qt 5.9.1 versiòn LTS. Esta versiòn hasta el dìa de hoy es la que màs resultados me ha dado. Estoy muy conforme con la performance de esta versiòn. Me he sentido tan seguro en ella que he deseado que se detenga el tiempo y que nada cambie por lo menos mientras yo estè navegando por estos mares.

A propòsito de la comodidad y el deseo de que todo perdure en el tiempo tal cuàl como està sin que haya cambios. Yo soy una persona de Gèminis con Ascendente en Acuario. Para los que saben de Astrologìa, bièn saben que uno es vanguardista, innovador, lejos està de mi ser una persona conservadora. La versiòn 5.9.1 LTS de Qt me ha hecho comprender lo que siente un conservador. Uno se hace conservador cuando se siente un privilegiado por eso se manifiesta en contra de todo cambio. Solo apoyan los cambios que nos llevan al pasado. Entonces dicho de este modo, hay 2 etapas de involuciòn de los conservadores. La primera son los que no quieren que nada cambie, lo cuàl es decir que no quieren que nada avance o se actualice, La segunda en la cuàl quieren hacer retroceder todo. Estos ùltimos son los retrògrados.

Resultò tan eficiente la versiòn de Qt 5.9.1 que me hizo caer, rodando escaleras abajo hacia el primer nivel involutivo del conservadurismo. Por fortuna ya he tomado la mejor desiciòn. Gracias a mi Gèminis con Ascendente en Acuario he decidido seguir apostando al futuro. Tal como dijo el gran Luis Alberto Spinetta -Por màs que digan que todo tiempo por pasado fuè mejor, Mañana es mejor!- Este espìritu vanguardista condujo como siempre a tomar las decisiones que me han traìdo hasta aquì. Seguìr apostando en el futuro, en las actualizaciones. Sin estos criterios de evoluciòn y actualizaciones permanentes, la informàtica tàl como la conocemos no existirìa.

He estado todo el 2018 esperando el lanzamiento de la nueva versiòn LTS de Qt. Hecho que ha ocurrido el dìa 5 de Diciembre de 2018, dìa en el que se ha lanzado oficialmente la versiòn de Qt 5.12 LTS. Hoy, un mes despuès de su lanzamiento, estoy instalando la ùltima versiòn de Qt LTS.

Estoy instalando Qt 5.12 LTS en Ubuntu Mate 16. Espero encontrarme con una versiòn de Qt que supere a mi amado Qt 5.9.1. Seguramente asì serà. Asì deberìa de ser. Hoy en dìa, ya tengo màs experiencia la cuàl me permitirà aprovechar al màximo esta ùltima versiòn y resolver cualquier incoveniente.

Lo que he aprendido con el tiempo es que las dificultades que implican todo este asunto de las actualizaciònes del framework y su compatibilidad con los proyectos y sistemas operativos, todos estos asuntos se resuelven utilizando un criterio bien enfocado e idoneo. Todo se puede complicar si pretendemos acomodar los proyectos al framework de manera muy urgente. Es cierto que nunca ocurrirà al reves, nunca los framework se adaptaràn a nuestros proyectos. Invirtiendo el orden, no queda otra opciòn que aceptar que los proyectos se deban adaptar al framework. Lo que no tiene que ocurrir es el hecho de trasladar el proyecto a un framework màs avanzado que no estè ciento por ciento depurado y terminado.

Cuando decidimos llevar nuestros proyentos a otros framework màs actualizados, debemos hacerlo desde el sistema operativo en el cuàl tengamos màs opciones de realizar lo que se denomina compilaciòn cruzada. Es decir, por ejemplo. En mi caso desde GNU/Linux Ubuntu Mate 16 yo realizo la compilaciòn de mis proyectos tanto para GNU/Linux y Android, cosas que no realizo en conjunto desde Windows o Macos. Esto significa que las pruebas de las nuevas versiones de Qt LTS las debo realizar desde el GNU/Linux mencionado desde el cuàl estoy escribiendo este artìculo mientras se intala la versìn de Qt 5.12 LTS.

Espero que dentro de unos dìas o semanas ya tenga suficiente informaciòn y experiencia al respecto. Cuando tenga cosas que contar sobre esta nueva versiòn de Qt 5.12 LTS, crearè un nuevo artìculo para contar còmo resultaron las cosas.

Si quieres ver el Historiàl de Lanzamientos de Qt, Haz click aquì

Actualizado: He escrito un artìculo sobre lo que ha sucesido con la instalaciòn de Qt 5.12.0. Para ver el artìculo haz click aqui

Quienes tenga alguna duda o consulta, me pueden contactar al correo nextsigner@gmail.com o bien al Whatsapps +54 11 3802 4370

domingo, 6 de enero de 2019

Programando al lìmite de mis posibilidades

Empezò el año 2019. Quiera o no, tiene su significado. En ciertos aspectos de mi vida estoy pasando por mi mejor momento, en otros no. Comenzar un año nuevo puede no significar nada, tambièn puede significar mucho si uno le dà un significado. Puede ser un año muy diferente si uno lo re significa de una manera especial. Para reponerme en aquellos aspectos que no me son favorables, es que he decidido en este año subsanar todo ello que no me aporta algo positivo.

Tengo mucho que hacer este año, viajes, consultas mèdicas, colaborar en proyectos, enseñar, reparar, corregir, optimizar, programar, programar y programar. Dentro de todas las actividades tengo pensado incluir las siguientes, meditar, descansar, disfrutar, participar, calmarme, tranquilizarme, cuidarme. Tengo muchos frentes abiertos y me pregunto ¿Podrè hacerlo?

Por momentos viene a mi mente la canciòn de Fito Pàez llamada Yo Vengo a Ofrecer mi Corazòn. En una parte dice -No serà tan fàcil, ya sè que pasa. Es como abrir el pecho y sacar el alma. Una cuchillada del amor...- Al parecer asì serà esta año para mì. Tendrè que entregar mi corazòn, dejar la piel en cada instante para lograr todos los objetivos que tengo en la lista.

Desde hace años me dedico a programar y en muchas ocaciones he entrado en tramos y segmentos en los cuales he estado preso, desaparecido, en un estado aparentemente inerte, programando durante interminables horas, largas jornadas en donde el cansancio duele hasta no doler, hasta hacerse parte de uno mismo, en ese tipo de torbellinos de còdigos y funciones que llueven y se arremolinan en una tormenta perfecta, allì en ese tipo de caos he estado muchas veces intentando ordenar, corregir y hacer funcionar toda informaciòn indomable y rebelde, desprolija o imprecisa.

No tengo ninguna duda que èste serà un año duro. Un año en el cuàl esos tramos o lapsos de tiempos en donde la totalidad de mis neuronas se ven invadidas por una cataràta de algoritmos, estructuras lògicas y signos. Ya sè que estarè poniendo el corazon, la piel y los suspiros en esta aventura que muchas veces parece carecer de todo sentido. Sè lo dùro que serà y lo que me espera. Ser conciente de ello me predispone e implica un compromiso talvès màs grande de lo que yo pueda asumir.

Aquì estoy. Listo. Preparandome. Mentalizandome. Tomando fuerzas. Sintiendo el mismo temor de siempre. El que me insita a pensar que todo serà en vano, que todo serà inutil. Al mismo tiempo siento el mismo valor y la convicciòn de que todo valdrà la pena. Como ha sido siempre. Siempre he cogido los guantes y he dado batalla, pues esta vez no serà la excepciòn. No estoy en mi mejor forma pero allà voy, dispuesto a entregarlo todo, a no guardarme nada, esa es mi intenciòn, espero lograrlo.

Todos esos frentes espero poder afrontarlos uno por uno. Espero ir resolviendo todo. Sè que posiblemente al resolver uno talves aparezcan o se reproduzcan en 2 o 3 nuevos frentes y todo esto se convierta en una pesadilla de la cuàl en algùn momento quiera salir corriendo, huyendo desesperadamente. Serà duro, muy duro. Puedo bajarme de este ring si asì lo deseo, pero no. Estoy aquì porque asì lo he decidido.

Estoy preparàndome para programar, programar y programar....




Entrada destacada

Entorno de Desarrollo de Unik 3.35

Esta versiòn de Unik ha sido programada en la rama unik-f1 y en el dìa de la fecha se ha fusionado en la rama master. Esta versiòn de Unik...