Etiqueta

Mostrando entradas con la etiqueta #AULAOMNIS. Mostrar todas las entradas
Mostrando entradas con la etiqueta #AULAOMNIS. Mostrar todas las entradas

19 de diciembre de 2015

Cómo verificar y/o reparar los permisos del disco en OS X Capitán

Abra la aplicación Terminal (se encuentra en /Aplicaciones/Utilidades/) y use el comando siguiente:

sudo /usr/libexec/repair_packages --verify --standard-pkgs /

Si desea comprobar los permisos de una unidad diferente, especifique el volumen correspondiente en lugar de "/".  El comando se ejecutará, mostrando las diferencias que se encuentre, del siguiente modo:

Permissions differ on "usr/libexec/cups/cgi-bin", should be drwxr-xr-x , they are dr-xr-xr-x .
Permissions differ on "usr/libexec/cups/daemon", should be drwxr-xr-x , they are dr-xr-xr-x .
Permissions differ on "usr/libexec/cups/driver", should be drwxr-xr-x , they are dr-xr-xr-x .
Permissions differ on "usr/libexec/cups/monitor", should be drwxr-xr-x , they are dr-xr-xr-x .


Si se han encontrado permisos que difieren y le gustaría para repararlos, simplemente deberemos sustituir la bandera -verify por -repair, del modo siguiente:

sudo /usr/libexec/repair_packages --repair --standard-pkgs --volume /





16 de diciembre de 2015

Acceso directo HTTP con Omnis

La técnica Omnis denominada “Cliente-Ligero” o “Ultra-thin” nos permite invocar una tarea remota o “remote task” desde un formulario HTML, sin necesidad de utilizar el cliente JavaScript o el también llamado “jsClient”. En éstos casos Omnis crea una instancia para la tarea remota particular, he invoca a su método “$construct()”. El valor de retorno, será texto HTML standard.

La invocación directa http, deberá seguir la siguiente estructura:

http://≤Servidor≥:≤Puerto≥/Cliente-ligero

≤Servidor≥ es el nombre de dominio o dirección IP del equipo en el que se esté ejecutando Omnis Studio. La dirección 127.0.0.1, será apropiada si se trata de nuestra propia máquina.

≤Puerto≥ es el número de puerto previamente fijado sobre la propiedad “$ServerPort” de Omnis Studio; de forma predeterminada es el 5912, pero puede cambiarse por cualquier otro entre 1 y 32767. La propiedad “$ServerPort” forma parte del grupo “$root.$prefs”.

Para probar esto, puede optar por descargarse la librería denominada “DirectHTTP”, la cual está disponible para su descarga gratuita desde la web de Aula Omnis, o bien créela una con ese mismo nombre y después añádale una “remote task” con el nombre “rtDirectHTTP” e inserte en su método “$construct()” el código siguiente:

; Sobre el $construct()
; Cree también la siguientes variables
; Cómo parámetro: pParams (Row)
; Como locales: fullhtml (Char 100000000) y html (Char 100000000)

Begin text block
  Text: ≤html≥ (Carriage return,Linefeed)
  Text: ≤body bgcolor="FFFFFF"≥ (Carriage return,Linefeed)
  Text: ≤title≥Hello [pParams.User] ≤/title≥ (Carriage return,Linefeed)
  Text: ≤H1≥Hello [pParams.User] ≤/H1≥ (Carriage return,Linefeed)
  Text: ≤a href="javascript:history.go(-1);"≥Go back≤/a≥ (Carriage return,Linefeed)
  Text: ≤/BODY≥ (Carriage return,Linefeed)
  Text: ≤/html≥ (Carriage return,Linefeed)
End text block
Get text block html

Calculate fullhtml as con('content-type: text/html',chr(13,10),'content-length:',len(html),chr(13,10,13,10),html)
Quit method fullhtml


La “remote task” es invocada desde dentro del formulario HTML del modo siguiente:

≤html≥
  ≤form action="http://127.0.0.1:5912/ultra" method="Get"≥
    ¿Cuál es su nombre? ≤input br="" maxlength="50" name="User" size="30" type="Text" /≥    ≤input type="Submit" name="Send" value="Send"≥
    ≤input type="hidden" name="OmnisLibrary" value="DirectHTTP"≥
    ≤input type="hidden" name="OmnisClass" value="rtDirectHTTP"≥
  ≤/form≥
≤/html≥


Deberá cambiar la dirección IP y el puerto 5912 para que se conforme a su configuración, la dirección IP y el número de puerto indicados anteriormente son los usados por Omnis como valores por defecto.

A continuación, abra el formulario HTML en un navegador, introduzca un nombre y haga clic en “Send”. Esto provocará la invocación del método “$construct” de la tarea remota “rtDirectHTTP”, pasándole el parámetro denominado “User”, que contendrá el texto introducido en el formulario. La llamada http completa es la siguiente:

http://127.0.0.1:5912/ultra?User=Santa&Send=Send&OmnisLibrary=DirectHTTP&OmnisClass=rtDirectHTTP

La “remote task” procesa los valores del formulario y devuelve al navegador texto HTML estándar, como se muestra a continuación:




9 de diciembre de 2015

Uso de “sockets” seguros con Omnis.

Existen dos formas de hacer que nuestro servidor “Omnis App Server” soporte conexión segura para los clientes, el primero (más extendido) es mediante el uso de un prefijo en el “WebServerURL” que para páginas HTML es el “https://”. Éste modo asegura que el servidor web y sus clientes transfieran la información en modo seguro, durante todo el tiempo que permanezcan conectados. En éste caso no es necesario hacer uso de la propiedad de las “remote task” “$issecure”.

En el segundo método que proponemos, usaremos la propiedad de que disponen las “remote task” denominada “$issecure”. En primer lugar hacer notar, que dicha propiedad pude ser cambia dinámicamente, lo que posibilita su uso sólo cuando realmente sea necesario, como por ejemplo, en el momento de tener que enviar el número de una tarjeta de crédito, para después retornar a su estado anterior o “no seguro”, lo cual permite reducir al mínimo la sobrecarga adicional en la que incurre el uso de los “secure sockets”.

Al contrario de lo que ocurría con el primer método, no existe indicación alguna de que el cliente se este ejecutando en modo seguro, además las diferencias en cuanto los tiempos de conexión segura y “no segura” (al usarse de modo dinámico) son apenas apreciables. De modo que el navegador Web puede mostrar un estado de “no seguro”, pero internamente el cliente estar ejecutándose en modo seguro.

La propiedad indicada puede ser cambiada mediante el comando siguiente:

Do $ctask.$issecure.$assign(kTrue)

Como se trata de una propiedad de la “remote task”, el uso del método “$changeform()” no afectará a su estado.

2 de diciembre de 2015

jsClient: uso de “assignpdf” y “showpdf”

Desde la publicación de la versión 6 de Omnis Studio, ha sido posible imprimir y visualizar archivos PDF mediante el componente PDFDevice y sus métodos javascript “addignpdf” y “showpdf”. Pero debido a un ajuste de seguridad (publicado en la nota ST/WT/1860) el uso de éstos métodos puede generar un error de tipo “You are not allowed to get the file D:/temp/test.pdf using the getpdf command”. ¿Cómo podemos resolver este problema?

La solución, pasa por realizar un pequeño cambio en su archivo “Config.json” a fin de especificar en él, qué carpetas o directorios deben ser accesibles a la función “GetPDF()”. Éste archivo lo podremos encontrar bajo la carpeta “Studio” dentro del directorio raíz de instalación de Omnis.

Concretamente, deberemos incluir, bajo su sección “Server” algo como lo siguiente:

"getpdfFolders": ["c:\\Temp", "c:\\MyPDFFile"]

Deberemos asegurarnos de que no quede ningún separador de los usados en los nombres de directorios sin ser “escapado” y de que estén encerrados entre comillas dobles. Esto permitirá el uso de los documentos PDF ubicados en las carpetas referenciadas.

25 de noviembre de 2015

Cómo cancelar un proceso desde un “remote form”.

En éste artículo describimos como implementar un botón “Cancelar” en un “remote form” que permita al usuario cancelar o abortar un proceso que está ejecutándose en el servidor Omnis. Haremos uso de la propiedad “$alwaysenabledobject”.

Normalmente, y siempre que desde un “remote form” ordenamos la ejecución de un proceso en el servidor, mostramos un mensaje de “Trabajando…” al cliente, mientras todos los controles del “remote form” permanecen desactivados hasta completarse la tarea y el servidor vuelva a responder, momento, en el que todos los objetos del “remote form” son de nuevo habilitados. Habitualmente, hacemos esto con el fin de controlar la cola de procesos en ejecución sobre el servidor para ese cliente.

Sin embargo, podemos optar por implementar un botón “Cancelar” el cual permanezca siempre activo, con el fin de permitir al usuario cancelar un proceso activo en el servidor, mediante simplemente hacer clic. Para conseguir que un botón permanezca en estado de “siempre activado”, disponemos de una propiedad disponible para los botones, denominada “$alwaysenabledobject”. Dicha propiedad permite que incluso, cuando se ha iniciado la ejecución de un proceso de larga duración sobre el servidor, el usuario pueda optar por cancelar el proceso, liberando al servidor.

Por ejemplo, imaginemos que vamos a enviar una lista amplia documentos al servidor, el esquema de implantación para éste proceso,  podría ser el siguiente.
  1. El usuario inicia el proceso 
  2. for x = 1 to findocumentos
  3.   enviar documento al servidor y esperar respuesta
  4.   documento siguiente 
  5. end for


Disponer de un botón “Cancelar” en modo “siempre activado” nos permitiría introducir una modificación en el esquema anterior, que permita la cancelación del bucle, tal como sigue:
  1. El usuario inicia el proceso
  2. for x = 1 to findocumentos
  3.   si se ha pulsado el botón “Cancelar” detener el bucle
  4.   enviar documento al servidor y esperar respuesta
  5.   documento siguiente
  6. end for

18 de noviembre de 2015

Omnis Data Access Modules (DAM) (Parte 3 de 3)

En éste artículo mostramos una tabla con las conexiones a bases de datos soportadas actualmente por Omnis Studio, atendiendo a la plataforma, software adicional requerido y si ofrecen o no, soporte para su uso en modo desatendido.
DAM
Base de Datos
Software adicional
Win32
MacOSX
Linux
Modo Desatendido
DAMOMSQL
Omnis Data (.df1, .df2, etc)
-
SI
SI
SI
-
DAMSQLITE
SQLite3 (.db)
-
SI
SI
SI
SI
DAMODBC
Fuentes ODBC
Administrador
ODBC
SI
SI
SI
SI
DAMJDBC
Driver JDBC
(API v2.0 o superior)
Java 1.4.1 o superior y Driver JDBC
SI
SI
SI
SI
DAMORA8
Oracle 8i (o supeior)
Oracle 9i release 2 (o superior)
SI
SI
SI
SI
DAMSYBSE
Sybase ASA9...12
Sybase ASE11...15
Sybase Open Client 12.5 (o superior)
SI
SI
SI
SI
DAMDB2
IBM-DB2 v5 (o superior)
DB2 Runtime Client 7.2 (o superior)
SI
-
SI
SI
DAMMYSQL
MySQL 4.1 (o superior)
-
SI
SI
SI
SI
DAMPGSQL
PostgreSQL 8.1 (o superior)
Librearía PostgreSQL API libpq.xxx
(incluida)
SI
SI
SI
SI
DAMOBASE
OpenBase 7.0.7 (o superior)
-
SI
SI
SI
-
FRONTBASE
OpenBase 7.0.7 (o superior)
DAM disponible desde www.frontbase.com
SI
SI
SI
-
DAMAZON
Amazon SimpleDB
Requiere cuenta Amazon Web Services y Studio 5.1 o superior
SI
SI
SI
-
Dirver Omnis ODBC (sólo lectura)
Omnis Data (.df1, .df2, etc)
Administrador
ODBC
SI
SI
-
-

11 de noviembre de 2015

Omnis Data Access Modules (DAM) (Parte 2 de 3)

Los plug-in DAM Omnis, aportan conexión nativa y multi-hilo con un gran número de diferentes sistemas de gestión de bases de datos. En éste artículo mostramos una tabla de las bases de datos soportadas, según plataformas y el software adicional requerido.

Windows (disponibles en versión 32 y 64-bit)


PostgreSQL 8.1 o superior
Librería de acceso PostgreSQL; “libpq.dll” (incluida).
MySQL 4.1 o superior
No requiere software adicional.
SQLite (versión 3)
No requiere software adicional.
Amazon SimpleDB
No requiere software adicional.
OpenBase 11.x
No requiere software adicional.
FrontBase 4.x o superior
No requiere software adicional.
(Debe ser adquirido desde www.frontbase.com)
Oracle 8i o superior
Oracle Instant Client 11g 11.1.0.7 o superior
(Oracle Client 9i 9.2.0.1 o superior)
DB2 UDB 7.1 o superior
DB2 Run Time Client 7.2 (DB2 v8 max)
DB2 Express 9.0 o superior
DB2 Express-C Client 9.0 (DB2 Express-C /v9)
Sybase ASE 12.5 o superior
Open Client 15.0 o superior
(Open Client 12.5 o superior)
Sybase ASA 9.0 o superior
El uso de Open Client 12.5 con Studio 4.3 requiere un DAM específico
(ODBC) Sybase ASA 9 o superior
SQL Anywhere ODBC Driver (incluido con ASA)
(ODBC) SQL Server 7/ 2000
Microsoft SQLServer2000 Driver 2000
(ODBC) SQL Server 2005
Microsoft SQL Server Native Client 2005
(ODBC) SQL Server 2008
Microsoft SQL Server Native Client 10.0
(ODBC) Microsoft Access
Microsoft Access Driver 4.00 o superior

Mac OS X (i386)


PostgreSQL 8.1 o superior
Librería de acceso PostgreSQL; “libpq.dll” (incluida).
MySQL 4.1 o superior
No requiere software adicional.
SQLite (versión 3)
No requiere software adicional.
Amazon SimpleDB
No requiere software adicional.
OpenBase 11.x
No requiere software adicional.
FrontBase 4.x o superior
No requiere software adicional.
(Debe ser adquirido desde www.frontbase.com)
Oracle 8i o superior
Oracle10g Client 10.1.0.3 o superior (i386)
Para Studio 4.3 y PPC se necesita un DAM específico.
Sybase ASE 12.5 o superior
Open Client 12.5.2  o superior
Para Studio 4.3 y PPC se necesita un DAM específico.
(ODBC) Sybase ASA 9 o superior
SQL Anywhere, un driver “dbodbcX_r.bundle”
(Por ejemplo: “dbodbc11_r.bundle”)
Studio 4.3/5.0 requiere un DAM ODBC específico.
(ODBC) SQLServer 7 o superior
OpenLink SQL Server Express Driver v6.1 (Unicode)
OpenLink SQL Server Lite Driver v6.1 (Unicode)
Actual Technologies SQL Server Driver v2.8f o superior (El driver ODBC de Actual Technologies puede ser adquirido en www.actualtech.com)
(ODBC) Microsoft Access
OpenLink 5.1 Generic Multi-tier ODBC Driver
(El ODBC Openlink puede ser adquirido en www.openlinksw.com)

Linux (i386)


PostgreSQL 8.1 o superior
Librería de acceso PostgreSQL; “libpq.dll” (incluida).
MySQL 4.1 o superior
No requiere software adicional.
SQLite (versión 3)
No requiere software adicional.
Amazon SimpleDB
No requiere software adicional.
OpenBase 11.x
No requiere software adicional.
FrontBase 4.x o superior
No requiere software adicional.
(Debe ser adquirido desde www.frontbase.com)
Oracle 8i o superior
Oracle11g Instant Client 11.1.0.6 o superior
DB2 UDB 7.1 o superior
DB2 Run-Time Client v7.1 o superior
Sybase ASE 12.5 o superior
Open Client 15.0 o superior
Para usar el Open Client 12.5 con Studio 4.3 se necesita un DAM específico.
(ODBC) SQLServer 7 o superior
FreeTDS ODBC Driver 0.82 (Sólo para non-Unicode)
Data Direct 5.0 SQLServer Wire Protocol Driver
EasySoft ODBC-ODBC Bridge v1.4.0
El acceso ODBC ha sido testado con el administrador de driver’s unixODBC v2.2.11 (libodbc.so.1.0.0)