VNC Viewer en Velneo

VNC es una de las soluciones Open Source de escritorio remoto más usadas por todos.

https://es.wikipedia.org/wiki/VNC

VNC son las siglas en inglés de Virtual Network Computing (Computación Virtual en Red).

VNC es un programa de software libre basado en una estructura cliente-servidor que permite observar las acciones del ordenador servidor remotamente a través de un ordenador cliente. VNC no impone restricciones en el sistema operativo del ordenador servidor con respecto al del cliente: es posible compartir la pantalla de una máquina con cualquier sistema operativo que admita VNC conectándose desde otro ordenador o dispositivo que disponga de un cliente VNC portado.

La versión original del VNC se desarrolló en el Reino Unido, concretamente en los laboratorios AT&T Olivetti Research Laboratory, en Cambridge. El programa era de código abierto, por lo que cualquiera podía modificarlo, y existen hoy en día varios programas para el mismo uso. Muchos derivados modernos de él son software libre con licencia GPL.

Simple de instalar, de configurar y de usar, nos permite conectar remotamente a un ordenador que tenga instalado VNC Server (el servidor VNC que soporte este protocolo).

Partiendo del código fuente del plugin QmlVncViewer  https://github.com/heroyin/qmlvncviewer con licencia https://github.com/heroyin/qmlvncviewer/blob/master/LICENSE hemos compilado para Win32 obteniendo un plugin sencillo y funcional. No hemos necesitado realizar ninguna modificación en el mismo.

image

Este plugin usa las librerías de http://www.tightvnc.com/ con licencia GNU GPL v2 https://www.gnu.org/licenses/old-licenses/gpl-2.0.html. Esta licencia nos obliga a liberar todo el código fuente de las aplicaciones donde se integre con la misma licencia (o licencia abierta equivalente).

En caso de querer usarlas para uso comercial tienes una segunda opción, la licencia comercial. La puedes solicitar en https://www.tightvnc.com/licensing.php. Esta licencia os permitiría incluirla en productos comerciales.

 

Compilar QmlVncViewer para Velneo

La compilación no es especialmente compleja, aunque lo cierto es que no hay nada de documentación al respecto.

Primero tienes que compilar la solución tightvnc.sln, para Win32 en modo Release desde Visual Studio 2013. Es importante que marques todos los proyectos para que se compilen en modo Multi-threaded DLL (/MD)

image

Después abre desde QtCreator el fichero vncroot.pro y procede a la compilación en modo Release. Recuerda que el entorno requerido es el que os explicamos en el artículo https://tipesoft.com/compilar-plugins-qml-para-velneo/. Poco más que añadir.

image

Ejemplo del Plugin QML VncViewer

A partir de ahora podrás disfrutar de ella en Velneo gracias a este nuevo plugin que os presentamos hoy.

image

Como veis, podemos conectarnos sin ningún problema desde Velneo a nuestros servidores VNC gracias a este nuevo plugin.

image

Desde el punto de vista de la implementación QML, poco que decir. Disponemos de un Elemento QML llamado VncViewer donde establecemos el host, port y password. Por otro lado, usamos la función adjustView() para ajustar el scrollView que nos permite acceder a todo el escritorio de la máquina a la que estamos conectados.

image

Para iniciar el visor, usamos vncViewer.start(). Para cerrar la visualización usamos vncViewer.stop() y para refrescar la misma vncViewer.refresh(). Es importante la parada de la visualización ya que es un raw abierto en un socket.

Para nuestras pruebas, hemos usado en el lado del servidor UltraVNC Sever (http://www.uvnc.com/). Hemos obtenido buenos resultados, sin ningún problema importante.

image

Respecto a a la configuración del servidor, es importante fijar el puerto, abrir el firewall y establecer las dos contraseñas requeridas. El resto de los parámetros los podemos dejar por defecto.

Por otro lado, recordaros que VNC no es que sea especialmente seguro, por lo que se recomienda mantener actualizadas las versiones de nuestros servidores VNC. Por otro lado fija contraseñas fuertes y mantenlas actualizadas.

 

Descargas

Como podéis apreciar, es un plugin fenomenal. Os dejamos disponible todo lo necesario para que podáis disfrutar de el en Velneo 7.22.1.

Descargar código fuente del plugin QML

Recuerda que esta librería tendrás que compilarla para la versión adecuada de tu vClient. Para facilitarte el trabajo, hemos empaquetado la versión para Windows x32 en un descargable. Solo tienes que copiar el contenido dentro de la carpeta Velneo (donde está ubicado el ejecutable del vClient.exe). Asegúrate de que el plugin queda dentro de la carpeta qml del directorio de instalación de Velneo. Recuerda respetar la licencia abierta del mismo, esta librería tiene restricciones importantes de uso, no te las saltes.

Descargar Plugin QML para Velneo v7.22.1Descarga libre

Esta vez no os damos acceso al VIN con el ejemplo por cuestiones de licencia, pero no os preocupéis… es tan simple como crear un proyecto Velneo que contenga un fichero QML con el ejemplo incluido en el código fuente anteriormente enlazado. Si tenéis dudas… no tardéis en comentar para aclararlas. Podéis fijaros en los anteriores.

Ante todo, no se te olvide respetar las licencias de todos ellos.

 

 

QtRecorder en Velneo

Me he tomado un descanso en los últimos días, los anteriores artículos fueron realmente intensos y necesitaba un relax. El trabajo que supone hacer todo el proceso para añadir un nuevo plugin QML es intenso, y lo cierto es que las dos últimas semanas no hemos parado.

Por eso he elegido esta vez, un plugin light. Por lo menos esa era la teoría.

He partido de QML Recorder (https://github.com/sverzegnassi/qml-recorder).

Este plugin QML, esencialmente nos permite grabar audio desde QML en distintos formatos y fuentes.

 image

Como ha priori parecía muy simple, compilé el plugin e importé los ejemplos a Velneo. El resultado… no funcionaba.

Revisando código, encontré un par de cosas que podían ser las culpables (tratamiento de las rutas y otro detalle menor). Corregidas, compiladas y a funcionar.

Parecía que ya estaba yo contento… hasta que me dio por leer. Terminé leyendo https://github.com/sverzegnassi/qml-recorder/issues y me día cuenta de que era una versión anticuada (no mucho la verdad). Navegando… encontré unas fuentes más actualizadas. Tal vez era más correcto partir de ellas y olvidarnos de las antiguas https://bazaar.launchpad.net/~verzegnassi-stefano/+junk/recorder-test/files.

Al analizar el código fuente, voy y me encuentro dos problemas .

Primer problema

El código fuente está dividido en dos plugins QML.

image

Vuelta a empezar… no por favor. No quería hacer nada complicado, tengo que leer mucho más sobre de Angular 5 y TypeScript, tengo que revisar el diseño de Arquitectura de otro mega-proyecto, tengo que ofertar un montaje de un CAS, tengo que evitar los rebotes del 4066.

No tengo tiempo para estas cosas…. pufff… dos plugins en vez de uno… pufff…

Pero no siempre, lo pude evitar. No quiero que mis compis Velneadores tengan que andar con dos librerías para algo tan sencillo como grabar un audio (conceptualmente están mejor separadas, pero para facilitar el uso, considero que mejor juntas).

El resumen… que he creado un plugin QML que contiene los dos y que hace el trabajo correctamente.

Segundo problema

El ejemplo está desarrollado para Ubuntu…. esto no me lo esperaba.

image

A revisar el ejemplo y retocar las cosas que no son compatibles. Y todo esto para un simple botón que graba audio.

image

Moralejas

“No es oro todo lo que reluce”, “No hay mal que por bien no venga”, “Lo barato sale caro”, “El que corre pronto para”… aplicaros el que más os guste. A mi me da, que aplican todos y alguno más en este caso.

QML es dado a la fragmentación por culpa de los fabricantes (como siempre):

  • BB10
  • Ubuntu
  • V-Play
  • Jolla
  • Nemo
  • Qt5

Muchas formas de hacer lo mismo, un sinsentido para un framework tan genial como Qt.

Descargas

Bueno, es hora de publicarlo. Funcionalmente es una librería simple, pero que resuelve una cuestión interesante. Os dejamos disponible todo lo necesario para que podáis disfrutar de ella en Velneo 7.22.1.

Descargar código fuente del plugin QML de QRecorder para v7.22.1Descargar código fuente

Recuerda que esta librería tendrás que compilarla para la versión adecuada de tu vClient. Para facilitarte el trabajo, hemos empaquetado la versión para Windows x32 en un descargable. Solo tienes que copiar el contenido dentro de la carpeta Velneo (donde está ubicado el ejecutable del vClient.exe). Asegúrate de que el plugin queda dentro de la carpeta qml del directorio de instalación de Velneo.

Descargar Plugin QML para Velneo v7.22.1Requiere estar registrado

También os damos acceso al VIN de todos los ejemplos funcinando en Velneo V7

Descargar VIN con los ejemplos de QtRecorder para Velneo v7.22.1Requiere estar registrado

La verdad es que no se cual es el uso que la vais a dar, ya me contareis. Recuerda respetar la licencia GNU del mismo.

Aún hay más

Si crees que ya has superado todos los problemas es que aún te queda alguno que superar.

Pues eso, que voy a publicar en WordPress y zasca. Ha dicho que hoy no, tal vez mañana.

image

Un abrazo… y espero que tengáis un camino más sencillo con las pruebas de este plugin.

QZXing en Velneo

Esta vez nos enfocamos en una buena librería de uso empresarial. Sin duda aportará gran valor en la comunidad Velneo.

QZXing es una librería intermediaria entre ZXing y Qt. ZXing, abreviatura de (“Zebra Crossing”), es una librería de procesamiento de imágenes que permite leer y generar códigos de barras 1D y 2D. Es especialmente buena en el proceso de decodificación, no tanto en la codificación. ZXing dispone de soporte para c++, Java y Android https://github.com/zxing/zxing.

Su licencia es Apache 2.0. https://github.com/zxing/zxing/blob/master/LICENSE

image

Significa que es permisiva, pero tiene que mantener las marcas de uso. También recordaros que QR code está licenciado por Denso Wave, inc.

Por otro lado, QZXing es la librería intermediara entre Qt y ZXing, convirtiéndose en la librería más importante en codificación/decodificación de códigos de barras en Qt https://github.com/ftylitak/qzxing. Su licencia también es Apache 2.0 https://github.com/ftylitak/qzxing/blob/master/LICENSE.

QZXing, en teoría, dispone de soporte para QML (https://github.com/ftylitak/qzxing), pero lo cierto es que hemos tenido que desarrollar un plugin para que funcione correctamente en Velneo. El código fuente del plugin lo podrás encontrar al final del artículo, dentro del fichero comprimido del código fuente, en la carpeta QZXing-master\examples\QMLZXing. De momento solo la hemos probado sobre Win32, por lo que desconocemos como se comportará sobre otras plataformas.

image

QZXing soporta decodificación de códigos de barra de los siguientes tipos:

  • UPC-A
  • UPC-E
  • EAN-8
  • EAN-13
  • ITF
  • Code 39
  • Code 93
  • Code 128 (GS1)
  • Codabar
  • QR Code
  • Data Matrix
  • Aztec (beta)
  • PDF 417

También soporta codificación de tipo:

  • QR Code

 

Véase el siguiente ejemplo de como usar el decodificador desde QML:

import QZXing 2.3

function decode(preview) {
	imageToDecode.source = preview
	decoder.decodeImageQML(imageToDecode);
}

Image {
	id:imageToDecode
}

QZXing{
	id: decoder
	enabledDecoders: QZXing.DecoderFormat_QR_CODE
	onDecodingStarted: console.log("Decoding of image started...")
	onTagFound: console.log("Barcode data: " + tag)
	onDecodingFinished: console.log("Decoding finished " + (succeeded==true ? "successfully" : "unsuccessfully"))
}

Para la codificación de un código Qr usamos un proveedor de imágenes que se registra al iniciar le plugin. Véase el siguiente ejemplo de como usar el codificador de códigos Qr desde QML:

import QZXing 2.3

TextField {
	id: inputField
	text: "Hello world!"
}

Image{
	source: "image://QZXing/encode/" + inputField.text;
	cache: false;
}

 

Como podéis apreciar es relativamente sencillo de usar. Pero no os engañéis, es realmente poderoso.

 

Ejemplos de uso de QZXing en Velneo

En la zona de descargas, podrás encontrar un fichero VIN con cuatro los ejemplos funcionales. Trabajo ha costado conseguir que todos ellos funcionen correctamente, algunos de ellos los hemos tenido que revisar y corregir de forma profunda ya que no eran funcionales en primera instancia.

image

Lector de códigos desde imágenes con soporte Drag N Drop. Permite leer las imágenes mediante Drag N Drop dentro de velneo y obtener el Tag que se encuentre en ellas. Soporta todos los Decorders que veis en la captura.

image

Lector en vivo de etiquetas Qr. Es una implementación que permite leer códigos Qr en vivo. Acerca uno a tu webcam y verás como funciona.

image

Codificación de códigos Qr. Como podéis apreciar, es relativamente sencillo, el problema es que solo soporta códigos Qr.

image

Lector de códigos bajo demanda. Poco que decir… acercas el código a leer, pulsas en Decode y obtendrás un cuadro de dialogo con el código leído.

image

Descargas

Como podéis apreciar, funcionalmente es una gran librería. Os dejamos disponible todo lo necesario para que podáis disfrutar de ella en Velneo 7.22.1.

Descargar código fuente del plugin QML de QZXing para v7.22.1Descargar código fuente

 

Recuerda que esta librería tendrás que compilarla para la versión adecuada de tu vClient. Para facilitarte el trabajo, hemos empaquetado la versión para Windows x32 en un descargable. Solo tienes que copiar el contenido dentro de la carpeta Velneo (donde está ubicado el ejecutable del vClient.exe). Asegúrate de que el plugin queda dentro de la carpeta qml del directorio de instalación de Velneo.

Descargar Plugin QML para Velneo v7.22.1Requiere estar registrado

 

También os damos acceso al VIN de todos los ejemplos funcinando en Velneo V7

Descargar VIN con los ejemplos de QZXing para Velneo v7.22.1Requiere estar registrado

 

Con un poquito de trabajo podrás integrarla en tus desarrollos para conseguir grandes mejoras en tus aplicaciones Velneo. Pero, ante todo, no se te olvide respetar la licencia Apache 2.0.

 

 

 

 

Desarrollar plugins QML para Velneo

En el anterior artículo, instalamos todo lo necesario para empezar a desarrollar complementos QML para Velneo sobre Windows x32 y x64.

Hoy toca probar el entorno y desarrollar un primer complemento.

 

Hello World QML

Antes de aventurarnos con Qt5 es recomendable probar nuestro entorno.

Para ello desarrollaremos un hola mundo con QML, de esta forma garantizaremos que todo está en su sitio.

Dentro del QtCreator pulsamos en File > New Project

Seleccionamos Qt Quick Application – Empty

image

Establecemos el nombre del proyecto y la ubicación.

Recomiendo una ruta corta para la ubicación de los proyectos (en mi caso uso C:\Qt\Proyectos\). Establécela como la por defecto.

image

Definimos la herramienta para generar las compilaciones (qmake por compatibilidad).

image

Establecemos la versión de Qt (no todos los tipos de plantillas permiten 5.6.X).

image

Seleccionamos el Kit Desktop Qt 5.6.2 MSVC2016 32bit o 64bit (según corresponda)image

Y pulsamos en Finish

image

Debug

Para ejecutar en modo Debug sin depuración pulsamos en el botón Play (no lanza el depurador, solo ejecuta)

image

Si ya somos capaces de ejecutar nuestra App es que tenemos el compilador en su sitio.image

Para ejecutar en modo Debug con depuración pulsamos en el botón Play con cucaracha (lanza el depurador y ejecuta). Un depurador de los de verdad, aunque lo cierto es que los he visto mejores (también peores).

image

Si lanza el depurador correctamente, ya lo tenemos todo, nos podemos aventurar en algo más complejo.

 

Release

Para compilar la versión final (la que vamos a desplegar en Velneo) cambiamos el modo a Release.

image

Para compilar, depurar o ejecutar disponemos del menú Build.

image

Desarrollando nuestro primer plugin QML

Lo básico ya lo tenemos claro, entorno, compilador y depurador. Ahora toca empezar con la parte dura del asunto, desarrollar un plugin c++/qml. Pero antes de empezar toca aprender un poco, toca leer al respecto http://doc.qt.io/qt-5/qtqml-modules-cppplugins.html

Un plugin QML es una librería que contiene una clase que hereda de QQmlExtensionPlugin. QtCreator dispone de una plantilla para crear extensiones (Qt Quick 2 Extension Plugin), por lo que no nos tenemos que enredar demasiado, deja que QtCreator te ayude.

image

Le damos nombre a nuestro Plugin. Este nombre se usará como nombre del archivo de nuestra librería y como nombre de plugin.

image

Creamos una clase que contendrá el elemento QML que usaremos desde Velneo. También tenemos que definir la URI de los componentes. Esta URI se usará como ruta de los ficheros y como nombre del módulo.

image

Finalizamos el asistente y obtenemos el código de nuestro plugin en base a la plantilla. Observa que la clase de nuestro plugin hereda de QQmlExtensionPlugin. Fíjate en la función registerTypes(). Esta función se encarga de registrar los tipos disponibles en nuestro plugin. Date cuenta de que usa la URI que hemos fijado en el asistente.

image

En la implementación de la función registerTypes() puedes apreciar como se llama a qmlRegisterType que es la encargada de registrar el tipo de elemento dentro de la ejecución del plugin. En nuestro caso MyHelloWorldItem.

image

La clase MyHelloWorldItem, es la que contendrá el código de la implementación de nuestro primer componente. Evidentemente, implementaremos algo muy simple, para entender como encajan todas las piezas.

La clase MyHelloWorldItem hereda de QQuickItem (elemento más básico de QtQuick).

image

Como veis en la propia documentación del código, QtQuickItem no pinta nada. Si quieres que pinte algo, pues toca implementarlo (puede que lo que quieras es hacer algo en C++ en segundo plano, por ejemplo montar un complemento para guardar ficheros en el disco).

Como os podéis imaginar. podemos implementar desde esta clase base o desde una especializada (que herede de ella). Por por poner un ejemplo, si queremos pintar algo en pantalla, podemos partir desde la clase QQuickPaintedItem

image

Para el ejemplo, vamos a pintar un rectángulo cuadrado de un cierto color. Algo sencillo que todos podamos entender.

La clase QQuickPaintedItem dispone de un método paint() que permite pintar elementos. Si queremos pintar un rectángulo, drawRect() nos valdrá.

image

 

Como veis, fijamos el color mediante la función setPen, y lo leemos desde una variable privada llamada m_color.

Si queremos que esta variable pueda ser establecida desde Velneo, tenemos que definir una variable publica llamada color e implementar los métodos Get y Set

image

Y establecer el comportamiento en el fichero.h de cabeceras de la clase. El fichero de cabeceras quedará tal que así:

image

A observar… la definición de la señal de control del cambio de color, la variable pública y el método setter. Por último el como establecemos una Q_PROPERTY que se pueda invocar desde QML para que sea capaz de leer i escribir en el color.

Ya tenemos nuestro ejemplo. Ahora toca compilar en modo Release.

image

Y ya tenemos nuestra DLL. La copiamos a la ruta de Velneo… pero no va sola (la acompaña del fichero qmldir con la definición del plugin y del módulo).

Es importante darse cuenta de que la uri establecida condiciona la carpeta donde tenemos que ubicarla. No podemos dejarla tirada en cualquier sitio. Si la uri es “com.tipesoft.qmlcomponents”, tendremos que crear una estructura de carpetas tal que “com/tipesoft/qmlcomponents” donde dejar nuestra dll y nuestro fichero qmldir

image

El fichero qmldir lo podemos copiar desde C:\Qt\Proyectos\HelloWorldPlugin (lo creó en base a la plantilla).

imageAhora ya podemos implementar en Velneo lo necesario para cargar nuestro plugin.

image

Fíjate en el import (en base a la uri) y en el nombre del elemento QML (MyHelloWorldItem)

Si no establecemos ningún color… resulta en negro.

imageSi lo fijamos a “red”

image

Bueno… parece que ya lo tenemos. Sencillo no es, cierto. Pero estructuralmente son todos iguales.

Os dejamos todo el código necesario descargable desde el siguiente enlace.

Descargar ejemplos Plugin QML para Velneo v7.22.1Requiere estar registrado

Ahora os toca a vosotros

Por nuestro lado, seguiremos aportando nuevos artículos de librerías “open source” que aporten gran valor a Velneo V7. Si os fijáis en las capturas, tal vez apreséis cual es la siguiente de la lista.

Compilar plugins QML para Velneo

La tarea de compilar plugins QML para Velneo, es fundamentalmente, un proceso .

 

Preparación del entorno

El primer paso, y tal vez el más pesado, es la preparación del entorno para compilar las librerías de forma adecuada (para hacerlo compatible con nuestra versión de Velneo).

Para saber que versión estamos usando de las librerías Qt, podemos abrir el cuadro “acerca de” de cualquiera de los productos Velneo. En este cuadro se nos informa de la versión de Velneo, Sistema operativo, arquitectura y versión de Qt.

image

En la versión v7.22.1 se usa la versión de 5.6.2 de Qt.

Por otro lado necesitamos saber que compilador usa Velneo para esa versión. Como no lo sabemos, tenemos que suponérnoslo. En mi caso he supuesto que compilan con Visual Studio 2013. Con estos primeros dos datos, ya podemos empezar.

Resumiendo (en el escenario windows):

  • Plataforma: Windows
  • Arquitecturas: x32 y x64
  • Compilador: Visual Studio 2013
  • Versión de Qt: 5.6.2

 

Instalar el compilador

Identificada la versión de Qt y el entorno requerido procedemos a instalar el compilador compatible con nuestro entorno.

Por cuestiones de mi trabajo, habitualmente en mis máquinas, están disponibles todos los editores y compiladores de Microsoft. Si en tu caso no dispones de ellos, solo tienes que descargarlos e instalarlos.

Tenéis dos opciones para ello:

  • Instalar Visual Studio 2013 Community – Update 5 (opción recomendada)Podemos instalar una versión gratuita de Visual Studio, que Microsoft nos facilita para empresas de pequeño tamaño, desde https://www.visualstudio.com/es/vs/older-downloads/. En el proceso de instalación se requieren unos 10Gb de espacio para los componentes habituales.

image

 

Cualquiera de los dos procedimientos de instalación nos instala el comando cl.exe (compilador de nuestro código C++)

image

Instalar las herramientas de depuración

Lo segundo es instalar las herramientas de depuración. Curiosamente, estas herramientas no vienen incluidas en Visual Studio Community ni en las build tools.

Tenéis tres opciones para instalarlas:

 

Instalar Qt 5.6.2

Ahora nos toca el tercer paso. Instalar Qt en su versión “open source”. Descargamos desde https://www.qt.io/download pulsando en “Go to open source”

image

 

Aceptamos la licencia L(GPL) que nos obliga a que nuestro código sea abierto y por último descargamos el instalador. http://download.qt.io/official_releases/online_installers/qt-unified-windows-x86-online.exe

Abrimos el instalador… siguiente, siguiente… paciencia… le decimos la ruta de instalación… hasta que nos pida los componentes a instalar:

image

Marcamos Qt 5.6 (equivale a la rama 5.6.2) para msvc2013 en                                                                                                           x32 y si lo deseas en x64

También puedes marcar aquellos plugins QML que deseas incluir en tu instalación (además de los por defecto que ya incluye el instalador de la versión elegida). Los marcados como TP son en fase beta. Los marcados como Deprecated desaparecerán en Qt 6.x

Si para más adelante… deseas compilar y depurar sobre Android necesitas marcar un par de cositas más. El compilador MiniGW y el soporte CDB para el depurador.

image

Marcado todo lo necesario… procedemos con la instalación.

Arrancamos QtCreator

Cuando tengamos instalado Qt, procedemos a arrancar QtCreator.

Para comprobar que todo ha ido bien, tenemos que entrar en Tools > Options.

Dentro de la sección Build & Run veremos los Kits que están configurados… en vuestro caso Desktop Qt 5.6.2 MSVC2013 32bit y 64bit. Si aparecen en rojo o no aparecen… malo, no ha detectado los compiladores. Si aparece en amarillo… malo, puede que no haya detectado las herramientas de depuración. Si todo está perfecto, ya tienes el entorno preparado para compilar bajo Windows

image

Para el siguiente artículo, si creéis que es necesario, os cuento como desarrollar un plugin QML para Velneo (comentar en este artículo si consideráis para que así me anime a ello).

 

 

Avances en trabajos para próximas versiones


En Velneo estamos inmersos en la futura versión 21 y queremos adelantaros algunos cambios importantes para la próxima versión de la plataforma. Esto no son las novedades de la version 21, son algunos cambios importantes que nos gustaría compartir con la comunidad.

Navegador integrado

Hasta Velneo 20, el navegador web integrado en las aplicaciones estaba basado en el engine WebKit que nos ha dado muchos años de estabilidad y buenas funcionalidades web. En Velneo 21, alineados con el trabajo de trabajo de Qt, se hace el cambio al engine del navegador de Chromium, que aporta más funcionalidades e integración con los últimos estándares web, HTML5 completo, WebRTC y otras tecnologías.
El nuevo engine se ha integrado con las mismas funcionalidades de multihilo de Chromium, lo que permite un mayor aprovechamiento de recursos de la máquina.

En este cambio, nuestro principal objetivo es que todas las aplicaciones desarrolladas que usan controles web puedan funcionar sin cambios de comportamiento en Velneo 21. Esta tarea no está siendo sencilla ya que el cambio de funcionamiento de los engines es bastante importante, sobre todo en la gestión de señales. En las próximas semanas publicaremos un post con información más detallada sobre las ventajas de este nuevo engine y sus peculiaridades para cada uno de los sistemas operativos.

QML2

Con la llegada de Velneo 21 desaparecerá el soporte a QML1 para centrarse totalmente en el soporte de QML2, que ofrece múltiples ventajas tanto a nivel de funcionalidades como de rendimiento.
Hemos trabajado duro el año pasado para que Velneo 20 pueda ser compatible con las dos implementaciones de QML para facilitar la migración de las aplicaciones de una versión de QML a la siguiente.
Relacionado con QML2, se mejorará la detección de los drivers OpenGL y se solucionarán varias incidencias de problemas de pintado en distintos sistemas.

QT 5.6.2

Relacionado con los cambios del navegador y QML2, avanzamos a la última versión con soporte a largo plazo de QT, lo que a la vez que soluciona varias incidencias relacionadas con sistemas operativos nos ofrece más estabilidad a largo plazo. Durante estos meses estamos realizando los cambios y las pruebas en todo Velneo para garantizar que las aplicaciones funcionen mejor que nunca en Velneo 21

64 Bits

Siguiendo con el Rumbo a 64 bits y analizando que menos del 2% de las instalaciones de Velneo 20 en Linux son en 32 bits, la próxima versión funcionará exclusivamente en 64 bits en Linux, lo que nos permite eliminar código vinculado exclusivamente a 32 bits y mejorar el rendimiento de las versiones de 64 bits. Con este cambio tanto macOS como Linux ya habrán completado su migración a 64 bits.
En Windows, dado el gran número de instalaciones en ambas arquitecturas, seguirán estando disponibles los ejecutables en 32 y 64 bits.

Si tienes cualquier duda o consulta sobre como puedan afectarte estos cambios, no dudes en ponerte en contacto con soporte para conocer tu caso en particular.

Este artículo Avances en trabajos para próximas versiones es original de Velneo.

Mejora del soporte de sistemas operativos con Qt 4.8.6

En la nueva versión de Velneo V7 7.16 hemos integrado nuestro código con la última versión de las librerías Qt de la rama 4.8 en todos los sistemas operativos, lo que mejora la ejecución en las últimas versiones de los sistemas operativos.

Esta última versión aporta mucha estabilidad ya que nos permite solucionar muchas incidencias, además, se han aprovechado nuevas funcionalidades para mejorar la integración con los sistemas. La actualización de librerías aporta también mejoras de rendimiento en algunas funcionalidades que usamos más habitualmente.

so-qt486

A continuación detallamos las principales novedades e incidencias resueltas.

General

  • Mejorado el soporte de Windows 8.1
  • Mejorado el soporte de Mac OS X 10.9 Mavericks
  • Parche de seguridad para evitar LA incidencia con XML Entity Expansion Denial of Service (the ‘Billion Laughs’ attack)

Interfaz

  • Solucionada regresión en el color de un texto con selección del tabulador en OS X 10.6
  • Implementado que el dock mantenga la posición cuando se despegan de la ventana.
  • Reconocimiento del ratón del separador de ítem en menús para provocar el cerrado automático de sub-menús al moverse a un nivel superior.
  • Solucionado problema de pintado de polígonos cuando el ancho es 0 ó 1.
  • Solucionada fuga de memoria en componente del control de selección de fuente.
  • Se tiene en cuenta la parte virtual del escritorio a la hora de determinar la visiblidad de un dock.
  • Solucionada incidencia en control de edición con botones arriba y abajo que provocaba un salto a izquierda y derecha del cursor cuando se usaban los botones.
  • Evitada desalineación de la región seleccionada cuando se centra el texto.
  • Mejorado la gestión de multilínea de Listview en modo Icono.
  • Restauración de ventanas maximizadas o en modo pantalla completa a la pantalla correcta.
  • Se aplica fuente definida en CSS  a la etiqueta de botones.
  • Evitados problemas en la presentación del cuadro de diálogo de impresión en Mac.
  • Implementado modo duplex en impresoras CUPS.
  • Evitado desbordamiento de memoria en lectura en el escalado de imágenes.

Network

  • Mejorada la gestión multi-thread de conexiones tcp.
  • Mejorada la descarga de URL en modo multiparte.
  • SSL: Actualizada la lista negra ANSSI de certificados intermedios.
  • Evitados errores espúreos de certificados locales para SSL.

Interno

  • Mejoras en gestión de hilos: creación, seguridad, limpieza y destrucción.
  • Implementado el soporte de apóstrofo en argumentos de comandos de Windows.
  • Mejoras en la gestión de las cadenas url en las funciones de url.
  • Mejora de llamadas recursivas a scripts.
  • Mejora del acceso a bases de datos externas, evitando errores de memoria.

Linux

  • Mejorado el sistema de pintados usando el sistema nativo.
  • Mejorado el uso de conexiones tcp.

Windows

  • Uso del estilo vista para asistentes.
  • Mejorada apariencia de barra de scroll en Windows 8 adecuándose al estilo nativo.
  • Mejora del mapeado de teclas virtuales evitando problemas de perder caracteres al escribir muy rápido, por ejemplo, ^e para obtener ê.
  • Inicialización de color de texto en los ítems de menú.

Mac OS X

  • En el cuadro de diálogo de selección de fichero se muestran las aplicaciones .app como carpetas.
  • Mejora en drag and drop solucionando memory leaks y el uso del botón derecho del ratón.
  • Implementado manejo del maximizado de una ventana sin marco.
  • Implementado soporte de formato nativo de fecha y hora de Mac OS X 10.7 y 10.8.
  • Solucionada incidencia que provocaba no poder restaurar una ventana en Mac OS X 10.7 y posteriores.
  • Mejora de ajuste de las toolbar en pantallas retina.
  • Mejora en la integración con Mac OS X 10.9 Mavericks, haciendo uso de la fuente del sistema de forma correcta.
  • Implementado soporte de tamaño de papel configurable en Mac.
  • Eliminado soporte de video de webkit en OS X debido a los problemas de estabilidad que generaba.
  • Solucionado error tipográfico en el mapeado de la tecla F9 que implicaba que no se mostrará la tecla aceleradora.
  • Mejorado el filtro del diálogo de selección de fichero cuando no comienza por *.

Gracias a estas mejoras y unido a las características que tiene Velneo V7, la convierten en una plataforma completa de desarrollo de aplicaciones empresariales de gestión preparada para crear apps de gestión.

Este artículo Mejora del soporte de sistemas operativos con Qt 4.8.6 es original de Velneo V7.

Mi amigo Sete y el cristalero

Esta mañana, en la que cumplo 37, amanecí con una urticaria de espanto por todo el cuerpo (parece que sufrí alguna intoxicación alimentaria). Como no tenía fuerzas para programar empecé cerrando la v1.3 de PaaSOS (preparando el paquete NSIS para pronto liberarlo) y continué haciendo papeleos. Jeje….

Sobre las 10:00 estaba un poco mejor. Me acerqué a los primeros bares que están usando nuestro producto PaaSOS EDS en fase de pruebas, actualicé manualmente las instalaciones (había un problema generado por un error en C++, se nota que estoy oxidado) y tome feedback de las sensaciones de estas dos primeras semana de uso. El resultado satisfactorio exceptuando lo del bug (les obligaba a reiniciar cada dos días).

Luego me acerqué a ver a mi amigo Sete de @LasOlivas, acababa de volver de vacaciones y estábamos encantados de saludarnos.

1069965 577346855649693 1906384326 n thumb Mi amigo Sete y el cristalero

Monté la nueva versión y Sete vio el nuevo enfoque. Le gustó mucho, RastroES es ya pasado.

Luego cuando terminamos de montar (10 minutos), se acerco el cristalero (aún no tengo la suerte de saber su nombre) y me preguntó si el podía utilizar eso para su negocio.

1234630 609331922451186 1571278814 n thumb Mi amigo Sete y el cristalero

Yo le estuve contando como funciona y lo sencillo que es para que  el se pueda beneficiar de la plataforma, entendió rápidamente el funcionamiento y se quedó asombrado del potencial del mismo.

Me gustó mucho su visión del estado del mercado, estuvimos bastante tiempo hablando del nuevo escenario empresarial y de como estamos haciendo en TipeSoft para mejorar nuestras posibilidades y las de nuestros colaboradores de cara al futuro. Se quedó asombrado de nuestra forma de entender este nuevo mundo que está apareciendo ante nuestros pies. Más aún, me dijo que el estaba trabajando en una dirección similar para su negocio ya que ve claramente que en el futuro cercano todos necesitamos cambiar para adaptarnos a este nuevo escenario.

Al terminar… me despedí. El me dio las gracias por ese tiempo, me paré un segundo y le dije que no tenía por qué agradecérmelo, que gracias a el.

Recordar, todos somos importantes en este nuevo escenario por lo que hay que actuar en consecuencia. Pasa tiempo con todo el que esté dispuesto a compartirlo contigo y trata siempre bien a todo el mundo.

Blog | Tienda

Mi amigo Sete y el cristalero

Contemplarás el cambio o serás parte

Videovigilancia??? De nuestras oficinas???… me parto!!!!!… Esto es lo que intentaron vender esta mañana.

Me parto, ya que me suena a cosas del pasado. Nosotros no tenemos nada que vigilar, nuestras oficinas son como el camerino de los hermanos Marx y unas cuantas salas de trabajo de ubicaciones tan remotas como España, Colombia, Panamá, Venezuela, República Dominicana
Ni siquiera tenemos que vigilar el código fuente de las cosas que hacemos, ya que es abierto (EUPL 1.1) y compartido por la comunidad de desarrollo.

Es terrible tener que lidiar con los anacronismos de este presente!!!. Me entristezco muy mucho por ello (ya que en el fondo sé, que detrás de está el pasado), pero no perderé un segundo en intentar remediarlo (me apasionan los avances tecnológicos, no es momento de contemplaciones).

 

Bienvenidos al futuro!!! Contemplarás el cambio o serás parte. Tú eliges!!!

 

En un modelo de negocio compartido las cosas son muy distintas a las tradicionales formas de negocio. No existe el concepto de propiedad (solo el de propiedad compartida), por lo que no hay nada que proteger. A lo sumo está la protección del conocimiento alojado en las personas que conforman el proyecto y en el usuario que usa los productos finales.

 

PaaSOS EDS… un nuevo producto para una nueva realidad.

Esta semana estamos centrados en poner en marcha un producto que lleva en cocina casi dos años, PaaSOS EDS es su nombre en clave (una de esas ideas locas que surgieron con mi socio Fernando Herranz). Es un producto único, sin competencia y con un enfoque diametralmente opuesto a lo visto hasta la fecha.

EjemploDeSticker thumb Contemplarás el cambio o serás parte

El resultado es esperanzador. Decenas de personas asombradas por lo que ven, empresas interesadas en montarlo en sus negocios y un feedback de los clientes sorprendente (supera todas nuestras expectativas).

 

Este producto es el primero de otros muchos que serán íntegramente desarrollados mediante Qt, HTML5, QML y C++. Muy probablemente, entrarán en el modelo comercial de los productos de la familia PaaSOS, pero es posible que generen otras derivadas comercialmente hablando.

 

El motivo de no utilizar Velneo V7 en esta derivada de nuestros productos es simple, Velneo no termina en arrancar en el apartado de movilidad y es necesario plantearse soluciones paralelas (que no opuestas) para esta cuestión. Además no avanza en cuestiones transcendentales tales como el soporte para iOS, Android, BB10, procesadores ARM y arquitecturas x64. Esta dura decisión la tomé personalmente al inicio de este proyecto. PaaSOS EDS es el primer (pero no el único) resultado de todo este esfuerzo. Es genial ver como está evolucionando.

Ahora empezamos a vislumbrar como será el futuro de PaaSOS en el apartado de movilidad (cuestión no resuelta aún). Realizaremos una apuesta clara por productos y servicios basados en Qt, HTML5, QML y C++.

Esto no significa que abandonemos a Velneo como proveedor tecnológico, simplemente que lo centraremos en el nicho en el que es bueno, desarrollo de aplicaciones empresariales para Windows/Linux/Mac. Todos los avances que haga Velneo en la multiplataforma nos vendrán bien en el futuro, pero para el presente en movilidad usaremos Qt aderezado.

A por ellos…

El cómo… sencillo.

Utilizaremos PaaSOS como centro de nuestras aplicaciones, Cirrus/vModApache para servir mediante REST nuestros servicios y Qt para los UI.

La decisión de usar Qt (y no las SDK nativas de cada plataforma) es la eclosión de plataformas hard/soft que está aconteciendo (iOS, Android, Windows Phone, BB10, Firefox OS, Jolla, Sailfish OS, Nemo, Ubuntu Phone… no sigo que me canso). Ahora es evidente cual será el futuro tecnológico (fragmentación de plataformas), solo hay dos posibles enfoques a nivel soft: HTML5 y multiplataforma (tú eliges) y uno a nivel hard (prepararse para lo que venga).

Bueno… espero que no os asuste el reto, nosotros ya lo hemos asumido.

Los ejes:

  • Qt 5 al poder (ya estamos con los ports de PaaSOS EDS, RastroES y CocheES).
  • QML y HTML5 para el disfrute de los usuarios.
  • JavaScript y C++ para el funcional
  • y por último PaaSOS en el centro

 

Bienvenidos al nuestro futuro. Ahhhh y que no se te olvide COLABORAR y compartir, lo otro son cosas del pasado.

Blog | Tienda

Contemplarás el cambio o serás parte