jueves, 20 de agosto de 2009

Unicode vs. ANSI; ¿qué debo instalar?

Al instalar las versiones de Meta4 (desde la v7.1 Sp1) se te pregunta que tipo de codificación se usará. Siempre he tenido dudas así que he buceado un poco por Internet y he encontrado un montón de referencias que me han ayudado. Os expongo mis conclusiones, si alguien sabe algo más, pues que me lo diga. Aunque siempre se puede consultar el archivo que Meta4 incluye en los CD de Tecnología “Configuración_Unicode.pdf”.

Lamentablemente, hasta la versión 7.1sp1 PeopleNet no ofrece soporte a Unicode.

[Según el archivo “Configuración_Unicode.pdf”]

Por regla general, siempre que se necesite que una instalación de PeopleNet sea capaz de gestionar cadenas de caracteres pertenecientes a más de una página de códigos será necesario el uso del soporte Unicode de PeopleNet.

Así, por ejemplo, si se tiene un escenario donde sólo se gestiona un idioma: inglés, español, francés, alemán, griego, hebreo, chino, etc. No será necesario utilizar el soporte a Unicode de PeopleNet. Bastará con que se seleccione la página de códigos adecuada en cada capa de la aplicación: cliente, servidor, base de datos, etc. Mientras la página de códigos sea la misma en todas ellas los datos serán tratados correctamente y no se perderá información.

Tampoco será necesario hacer uso del soporte Unicode de PeopleNet si se utilizan varios idiomas, pero todos ellos pueden ser representados por una sola página de códigos. Este sería el caso de utilizar inglés y español, alemán y francés, etc. Ya que se puede utilizar la página de códigos ISO-8859-1 para representar todos ellos. Siempre se puede utilizar una página de códigos para representar inglés y cualquier otro idioma.

Existe una excepción a las reglas anteriores, ya que a día de hoy PeopleNet presenta limitaciones en el tratamiento de idiomas que no sean representables con el conjunto de caracteres de Europa occidental (ISO-8859-1). Así, por ejemplo, la ordenación o paso a mayúsculas y minúsculas en la página de códigos hebrea o china no se producirá correctamente si se realizan a través de ln4 (lenguaje de programación de PeopleNet).

Así pues, si se tiene un escenario en el que distintos usuarios de PeopleNet pretenden manipular ciertas cadenas de texto en distintas páginas de códigos, por ejemplo español y chino, será necesario configurar la aplicación para hacer uso del soporte Unicode de PeopleNet.

¿Cuál es la diferencia, a nivel bajo, entre Unicode y ANSI?

En pocas palabras, la versión de un programa de Unicode se ejecuta levemente más rápido que la de un ANSI, pero sólo se ejecuta en Windows NT.

¿Qué es ANSI y Unicode?

ANSI

ANSI vino primero. ANSI (http://www.ansi.org/) es una organización que normaliza diversas áreas y ámbitos, tanto públicos como privados. Es un acrónimo para American National Standards Institute o Instituto Nacional de Estándares Americano. ANSI ha normalizado muchos áreas y ámbitos de la informática. Una de las normas en los equipos fue el conjunto de caracteres (letras, números y símbolos) que utiliza un ordenador. Esta norma fue llamado ASCII (American Standard Code for Information Interchange o Código Estándar Americano para el Intercambio de Información). Esta norma proveía 256 símbolos diferentes que puede utilizar un ordenador. Es rápido, eficiente y fácil de implementar. Todos los sistemas operativos modernos comprenden completamente ASCII.

Unicode

Uno de los principales problemas de usar ASCII es que sólo se pueden tener 256 caracteres diferentes. Sin embargo, hay idiomas, como el japonés o el árabe, que disponen de miles de caracteres, así que ASCII no puede funcionar en estas situaciones. El resultado, para evitar estos problemas, fue Unicode que permite hasta 65.536 caracteres diferentes. Como Unicode es más complejo que ASCII, no se puede aplicar en muchos sistemas operativos. La familia de Microsoft; Windows NT, Windows 2000, Windows XP y Windows 2003, admiten Unicode así como todas las futuras versiones de Windows.

Así que la cuestión pasa a ser ahora, si Windows NT es compatible tanto con ASCII y Unicode, ¿por qué los programas en Unicode se ejecutan con mayor rapidez? Para responder a esta pregunta hay que entender la propia estructura de Windows NT. El kernel de Windows NT está escrito en Unicode, y por lo tanto, sólo entiende de Unicode. Cuando un programa ANSI se ejecuta en Windows NT, el sistema operativo debe convertir las cadenas de ASCII a Unicode. Esto consume un tiempo en la conversión y, además, hace necesario que la memoria almacene los dos ejemplares (ASCII y Unicode). Considerando que un programa Unicode "ataca" directamente al núcleo es más rápido. En los ordenadores modernos que funcionan a velocidades de giga hercios y con cientos de megas de RAM esta diferencia de velocidad es mínima, pero sí existe.

La última área a analizar es, ¿por qué sólo programas Unicode se ejecutan en Windows NT y no en otros sistemas operativos como Windows 95/98/ME? La respuesta se remonta, de nuevo, al Kernel de estos sistemas operativos. Windows 95/98/ME están diseñados para ser un sistema operativo "ligero" y sencillo para el usuario general y su kernel está escrito en ASCII. Microsoft podría haber puesto en práctica un sistema de conversión similar al de Windows NT, pero esto consumiría una gran cantidad de recursos tanto de memoria como de disco duro. Windows 95/98/ME pueden funcionar en un sistema de gama baja, con tan solo 4 megas de RAM, mientras que Windows NT requiere un mínimo de 16 megas de RAM. En la mayoría de los ordenadores que tienen 64 megas de memoria RAM o más, esto no es tan importante. Esta es una de las razones principales por la cual el código de Windows 95/98/ME está cerrado.

Resumen "muy resumido"
  • Si sólo se ejecuta en equipos con Windows NT/2000/XP podrás usar las versiones de Unicode, pero las versiones ANSI tambien funcionan.
  • Si sólo se ejecuta en equipos con Windows 95/98/ME sólo podrás usar la versión ANSI.
  • Si se ejecuta en equipos con Windows 95/98/ME y en equipos con Windows NT/2000/XP, deberás usar la versión ANSI.

viernes, 14 de agosto de 2009

[Colaboración de Dailos Herrera Bencomo - General de Software de Canarias (GSC) - Grupo Microfusión] Número a letra desde Ln4

Dailos Herrera Bencomo de General de Software de Canarias (GSC) - Grupo Microfusión (http://www.gsc.es), me ha enviado la información necesaria para crear un post que creo que os resultará muy interesante. Se trata de poder transformar un campo moneda (número) a letra desde LN4.

Exite en la aplicación un formato que se puede usar en reports/informes que permite el cambio número a letra, pero sólo se puede usar desde allí. ¿Qué pasa si queremos sacarlo en un Word, en un Excel o incluso en una presentación? Pues bien, Dailos ha buscado la forma y me ha permitido publicarlo en blog:

En un access adjunto (7.1Sp2), podeis encontrar los objetos y los transfer necesarios:

Meta4Object: CGC_MONEDA_A_LETRAS
Estructura de Nodo: CGC_MONEDA_A_LETRAS

Métodos:

  1. CGC_NUM_A_LETRA: Hace el cambio de moneda a letra
  2. CONVERTIR_A_LETRA: Hace la llamada al método anterior y formatea la salida según los argumentos:
  • ARG_MONEDA: Moneda a convertir
  • ARG_CASE: "U" o "L" formatea la salida en Mayúsculas o Minísculas, respectivamente, "U" por defecto
  • ARG_CURR: "1" o "0" muestra o no la palabra "EURO/S - CENTIMO/S", respectivamente, "0" por defecto (Si se elije mostrar EUROS/CENTIMOS acaba en "UN" y si se elije NO mostrar EUROS/CENTIMOS acaba en "UNO")
  • ARG_SIGNO: "1" o "0" muestra o no la palabra "MENOS", respectivamente, si se trata de un número negativo, "0" por defecto.
Aquí teneis el enlace al Fichero de MsAccess

Espero que os sea útil.

martes, 11 de agosto de 2009

Meta4 en los medios

He encontrado una serie de accesos a nuevos canales de comunicación que ha tenido a bien en proponer Meta4, junto con la salida de la nueva web de España

Blog: http://blog.meta4.com/

Facebook: http://www.facebook.com/pages/Meta4/109359669709

Linkedin: http://www.linkedin.com/groups?gid=80655

Twitter: http://twitter.com/Meta4_Global_HR

YouTube : http://www.youtube.com/meta4hr

Saludos a todos!