martes, 3 de junio de 2014

Disponibilizar aplicaciones Windows GDI/GDI+ en la Web

En estos tiempos donde la conectividad remota es un valor agregado interesante para cualquier aplicación, los que estamos en informática desde hace mucho tiempo conocemos la importancia de mantenerlas actualizadas y vivas. Y hay aplicaciones que han dado lo mejor de sí durante años, pero que hoy, con entornos cada vez más heterogéneos y dispositivos impensados hasta hace unos años, quedan relegadas y obsoletas.
Cuando la migración de esas aplicaciones no es posible (porque no se tienen los fuentes, o porque el esfuerzo de reescribirlas es algo que no se puede encarar), encontrar alguna alternativa que disminuya o elimine su obsolescencia es de un valor incalculable.

Dentro de la nueva línea de productos Thinfinity™ y luego de un largo tiempo de investigación y desarrollo, la empresa Cybele Software, Inc. presenta Thinfinity™ Virtual UI, un set de herramientas que permite transformar aplicaciones Windows convencionales de 32 y 64 bits (las típicas aplicaciones desktop) en aplicaciones accesibles desde entornos web.
Lo interesante es que esto se consigue prácticamente sin esfuerzo: sólo hay que agregar la librería correspondiente al programa y recompilar. Así, las aplicaciones pueden ser usadas como siempre y, además, ser accesibles desde cualquier browser, incluyendo dispositivos móviles y permitiéndonos, así, acceder a los beneficios de la virtualización sin el alto costo de instalación de entornos como Citrix XenApp® o Microsoft™ RemoteApp.

El esquema arquitectónico y de conectividad también es bastante simple:

  • Un set de librerías (dlls, fuentes, etc., dependiendo del lenguaje del programa original).
  • Un pequeño servidor http(s)/websockets que hace de enlace entre el browser y la aplicación final.
Esquema de conectividad de Thinfinity Virtual UI

Lo bueno del enfoque es que acceder a la aplicación es apenas lo primero y básico que se puede conseguir: dado que el cliente es puro javascript (no hay java ni ningún plugin de browser de por medio) con la pericia suficiente las aplicaciones extendidas con Thinfinity™ Virtual UI se pueden integrar en circuitos de información SOA, sitios web ya existentes y cualquier otra combinación que se nos ocurra.

Hay algunas limitaciones: las aplicaciones habilitadas para ser extendidas con esta herramienta deben usar llamadas GDI o GDI+. Aún no se soportan proyectos que hagan uso de .NET WPF o de DirectX, pero estimamos que en algún momento eso también llegará.

Los requisitos para su funcionamiento no son demasiados, aunque necesita, como entorno de ejecución final, Microsoft Windows 8 o Microsoft Windows Server 2012. Aquí va el detalle:

  • Para el desarrollo y pruebas
    • Sistema operativo:
      • Microsoft Windows 7 32­bit / 64­bit 
      • Microsoft Windows 8 32­bit / 64­bit 
      • Microsoft Windows Server 2012 32­bit / 64­bit 
    • Entorno de desarrollo (entre otros):
      • Microsoft Visual Studio
      • Delphi 5 to XE6
      • Microsoft Visual Basic
      • PowerBuilder
  • Servidor:
    • Microsoft Windows 8 32­bit / 64­bit
    • Microsoft Windows Server 2012 32­bit / 64­bit
  • Usuario final:
    • Cualquier browser con soporte HTML5 (todos los estándares del mercado lo soportan) sin importar el sistema operativo ni el tipo de dispositivo.
Para mayor información:

jueves, 23 de febrero de 2012

Del mainframe a la Web

Largo es el camino que hay entre aquellas terminales de mainframe con las que yo empecé a trabajar, hasta los browsers y dispositivos que hoy podemos usar no sólo para comunicarnos, sino también para usar aplicaciones. Allá cuando la sigla "PC" aún no había sido acuñada, yo trabajaba en un equipo de Digital, una VAX PDP-11 (de la que ya hablé en alguna oportunidad), e incluso llegué a utilizar una de las primera terminales VT que no tenía pantalla: el texto se iba escribiendo en una tira de papel continuo: la sensación de estar dentro de la película BRAZIL, de Terry Guilliam, era permanente.

Esas terminales, conocidas también como terminales bobas, apenas eran algo más que una pantalla y un teclado conectados a un equipo central, multitarea y multiusuario. Tuvieron su cuarto de hora y hasta los escritores de ciencia ficción imaginaron un futuro en el cual ciudades de datos albergaban los programas y la información a los cuales, desde lejos, los vaqueros de consola se conectaban.
Cuando las PC pasaron a dominar casi todos los escritorios y parecía que todo iba a terminar corriendo en estas nuevas máquinas, más poderosas e inteligentes, no fue así. Las aplicaciones de mainframe, por su robustez, su capacidad de trabajar con grandes volúmenes de datos y su lógica centralizada, siguieron resistiendo, aliadas a programas específicos, dedicados a emular aquellas terminales.

Utilizando protocolos estándar (por ejemplo TCP/IP, Telnet, SSL, SSH) estos emuladores ocuparon, por varias razones, el espacio que el viejo hardware fue abandonando, ahora como programas alojados en máquinas de escritorio.

Pero faltaba un paso más.
Con el crecimiento de Internet, las aplicaciones preexistentes escritas para mainframes también quisieron ganar su espacio en la web, ya que la disponibilidad sin límites pero con seguridad empezó a ser una necesidad, al menos de un buen sector de los usuarios. Muchas bibliotecas, universidades y organismos públicos utilizan este tipo de soluciones, al igual que aquellas empresas que pretenden disponibilidad sus aplicaciones más allá del límite de la oficina. Una solución era reescribirlas para el nuevo front-end, pero no es fácil reimplementar la lógica de una aplicación pulida durante años. La otra solución, claro, es la emulación bajo web. Los emuladores de terminal bajo web no son algo nuevo, pero hasta ahora y hasta donde conozco, los emuladores de browser suelen implementarse como componentes ActiveX o applets Java, lo que limita en muchos casos por su necesidad de instalación, el browser a utilizar (ActiveX está atado a Internet Explorer y las aplicaciones Java dependen de qué versión Java se tenga instalada).

He visto, también, algunos emuladores basados en HTML clásico, pero eran apenas algo más que prototipos. Pero ahora, con la nueva tecnología web y el centro en una interfaz HTML5, el camino vuelve a hacerse viable. Sin instalaciones, sin problemas de seguridad, sin límites en el dispositivo a usar. Un usuario típico puede usar una Mac o una PC con Windows, y a la vez utilizar un teléfono inteligente con Android, un iPad o una tableta de RIM, o la combinación que quieran imaginar. En este nuevo escenario, de múltiples dispositivos, múltiples OS, con conexión a Internet permanente, el movimiento natural nos lleva a tener un emulador de terminal que se pueda utilizar en todos ellos, indistintamente.

Imagino el siguiente escenario: voy al banco y el oficial de cuenta, en vez de ocupar su escritorio con una PC, teclado y mouse, me extiende su iPad para que veamos juntos el estado de mi cuenta. La aplicación sigue siendo la misma, y él me enseña cómo acceder, desde mi teléfono o mi propio iPad, a un resumen acotado y seguro de estos mismos datos.
Otra posibilidad sería reservar el libro que un estudiante necesita desde su propio teléfono, y usando la misma aplicación que utiliza desde una terminal dentro de su universidad.

¿No estaría bueno?

De eso se trata: Cybele Software está trabajando en un nuevo un emulador de terminal basado en HTML5, para llevar a estas aplicaciones hasta ese lugar  No hay nada que descargar. En su blog dice algo así como: "No hay nada que instalar. No hay problemas de seguridad. Sólo hay que abrir una nueva pestaña ¡y listo!".

Para más datos:

New technology sunrise: Pure-web Terminal Emulator coming soon!

viernes, 17 de febrero de 2012

De vuelta en Cybele Software

Bueno, no es en realidad noticia fresquita. Pero sí importante.
Y aprovecho para contarles del primer lanzamiento de la temporada, que va en conjunto con el reciente relanzamiento del sitio y ahora el agregado del blog.

Sobre el producto, se trata de una herramienta de acceso remoto dual, VNC-RDP para acceder a entornos Windows y que aparece como ThinVNC 3.0. Entre sus características más importantes se destacan el uso de HTML5 como base de display, por lo que no hace falta instalar NADA, sólo tomar un browser compatible y saber adónde acceder. Lo muy distinto de esta versión es que permite acceder usando RDP (tal como se hace, por ejemplo, con Remote Desktop). Cuenta, además, con un file transfer.

Ahora sí que hay algo bien liviano y sin necesidad de instalación (que se puede usar desde cualquier browser html5, incluyendo teléfonos (con buena pantalla) y tabletas.

Para más datos pueden espiar aquí.

Y estén atentos que pronto habrá más novedades.

Nos escribimos,
Daniel

miércoles, 20 de mayo de 2009

Regular Expressions para resolver consultas en Oracle

Y sí. Las expresiones regulares, aunque no son cosa nueva, siguen ganando espacios por su gran versatilidad.
¿No nos alcanza con un where ... like ...?
Pues bien, acabo de descubrir (pólvora), que Oracle incluye desde hace poco un where especial para el uso de expresiones regulares.

Les paso el link oficial, parece interesante.

Después me cuentan.

Nos escribimos,
Daniel

viernes, 20 de febrero de 2009

Cómo obtener los nombres de columna de una tabla en Oracle

Si les pasa lo que me está pasando a mí ahora, que tengo que acceder a una tabla ORACLE a través de un componente que no devuelve los nombres de los campos y no tengo el usuario de conexión ni nada por el estilo, o si por alguna razón necesitan el origen de la tabla, pueden tirar una consulta como la siguiente:

select column_name "Campo", data_type "Tipo de dato",
data_length "Tamaño", nullable "Permite nulos"
from all_tab_columns
where table_name = '[NOMBRE_DE_LA_TABLA]'


donde [NOMBRE_DE_LA_TABLA] se reemplaza por, (je), el nombre de la tabla en mayúsculas y sin los corchetes.

No estoy diciendo nada nuevo, pero lo uso de ayuda memoria, previo googleo.

lunes, 8 de diciembre de 2008

Max y Min en XPath

Antes de que me olvide: como XPath no soporta funciones que devuelvan máximos y mínimos de manera natural, lo que debemos hacer es filtrar los nodos eliminando aquellos que tienen un nodo mayor, antes (preceding-sibling) o después (following-sibling). De esa forma podemos obtener el nodo deseado.

Ejemplo:

Con un XML que contenga...

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="max.xsl"?>
<root>
<nodo id="1">12</nodo>
<nodo id="2">17</nodo>
<nodo id="3">58</nodo>
<nodo id="4">33</nodo>
</root>

y un XSL que diga...

<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="root">
root contiene <xsl:value-of select="count(node())"/> nodos.<br/>
El mayor valor es <xsl:value-of
select="nodo[not(preceding-sibling::nodo &gt; .)
and not(following-sibling::nodo &gt; .)]"/><br/>
El menor valor es <xsl:value-of
select="nodo[not(preceding-sibling::nodo &lt; .)
and not(following-sibling::nodo &lt; .)]"/><br/>
</xsl:template>
</xsl:stylesheet>

... dará como resultado...

Root contiene 4 nodos.
El mayor valor es 58
El menor valor es 12

viernes, 12 de septiembre de 2008

Del pasado (1)

Uy... Milan (Viajero) me hizo acordar de algunas cosas.
También yo, en mi pasado (hace algo más de 16 años) utilicé una vieja VAX. En realidad utilicé 2: una en un cliente para el que trabajé muchos años y otra en Ort Argentina, donde en esa época era auxiliar docente.
Las terminales que usábamos generalmente eran VT-100 y VT-220, pero había (una en cada uno de estos dos lugares) un modelo que para mí era impresionante. Era un híbrido de impresora de matriz de punto y terminal: tenía teclado y llevaba una resma de papel contínuo, y por eso mismo se utilizaba casi expresamente para generar listados impresos. Así que uno podía sentarse ante ella y hacer lo mismo que estoy haciendo ahora (interactuar con un equipo a través del teclado), aunque haciendo el output sobre papel. No era lo más común, claro, pero en aquellas madrugadas, cuando el cansancio era grande y la cantidad de programas a compilar muchos, venía muy bien contar con esa terminal.
De las terminales recuerdo que eran equipos muy sólidos, robustos, con teclados de gran calidad que contaban con un montón de funciones en el teclado numérico (que no era igual al que usamos en la PC) y una gran cantidad de teclas de función. Las terminales más bonitas que utilicé fueron las VT-220. Recuerdo que se las podía configurar, a pesar de ser sòlo terminales de texto, para usar un scroll muy suave, algo que yo usaba bastante seguido para seguir código.
Al lado de los recursos actuales, a veces todo aquello parece ridículo.