jueves, 18 de noviembre de 2010

Caracteres extraño en NETBEANS con ECLIPSE

En la empresa en la que laboro ahora, me encomendaron la labor de realizar unos webservices basados en java, hasta aquí, nada del otro mundo. En mi caso me gusta usar el eclipse por lo práctico y liviano que es, así que desarrolle lo que tenía que desarrollar usando el IDE mencionado. El primer inconveniente se presentó al querer subir el proyecto al CVS, en esta empresa tienen la costumbre (más no standard) de desarrollar en Netbeans, y por ende, todos los proyectos en el CVS son proyectos Netbeans por lo que se me solicitó hacer el cambio respectivo.
Pude ver que el NetBeans v6.5 tiene la opción de importar proyectos Eclipse y no solo eso, sino que una de las opciones es que ambos IDE's pueden apuntar al mismo repositorio físico de proyecto y los cambios que hagas en ECLIPSE despues lo puedes sincronizar en NetBeans (para mayor detalle: http://netbeans.org/kb/docs/java/import-eclipse_es.html).

El problema vino con las "ñ" encontradas en el código del proyecto Eclipse, en NetBeans se veían como caracteres extraños, y al solucionar en NetBeans el problema, en Eclipse aparecían los mencionados caracteres.

Un buen poco de investigación solucionó el problema, y aquí comparto la solución:

EN NETBEANS:
  1. Ubicar la siguiente ruta en donde se encuentre instalado el NetBeans:
    C:\Archivos de programa\NetBeans x.x\etc
  2. Editar el archivo netbeans.conf agregando el siguiente fragmento "-J-Dfile.encoding=UTF-8" en la línea de opciones por default del NetBeans (netbeans_default_options). Tener en cuenta que se debe agregar dentro de las comillas de la línea mencionada.
  3. En las propiedades del proyecto en el NetBeans verificar en SOURCES que el encoding este en UTF-8.
  4. Reiniciar el NetBeans.
EN ECLIPSE:
  1. En las PREFERENCIAS ubicar dentro de General > Workspace, que el "Text file encoding" este también con UTF-8, por defecto esta con con valor por default(Cp1252).
  2. En el caso de Eclipse no es necesario reiniciar.
Con esto esos problemas de sincronización de caracteres especiales debería desaparecer.
HAPPY CODING!

jueves, 11 de noviembre de 2010

Problema al trabajar PYTHON con pymssql

Para aquellos que quieran consultar una base de datos SQL, entre la baraja de opciones existentes tenemos el uso de PYMSSQL que es un paquete que consta de dos módulos de extensión para interactuar con la base de datos mencionada.
El instalador lo pueden encontrar en http://pymssql.sourceforge.net/download.php (para windows) y la instalación es sencilla... DALE AL NEXT!!!
Una vez instalado todo debería ser color de rosas, pero nuestro querido amigo Murphy indica que no todo sale como queremos, y puede que obtengan el siguiente error al tratar de importar el módulo "pymssql":

>>> import pymssql
Traceback (most recent call last):
File "", line 1, in
File "C:\Python26\lib\site-packages\pymssql.py", line 30, in
import _mssql, types, string, time, datetime, warnings
ImportError: DLL load failed: No se puede encontrar el m¾dulo especificado.
>>> import _mssql
Traceback (most recent call last):
File "", line 1, in
ImportError: DLL load failed: No se puede encontrar el m¾dulo especificado.
>>> import pymssql
Traceback (most recent call last):
File "", line 1, in
File "C:\Python26\lib\site-packages\pymssql.py", line 30, in
import _mssql, types, string, time, datetime, warnings
ImportError: DLL load failed: No se puede encontrar el m¾dulo especificado.

En este caso la solución es sencilla... en la ruta 'c:\windows\system32\', o 'c:\windows\system\' si estan trabajando con windows de64 bits, deberan copiar la siguiente dll: "msvcr71.dll". Con eso deberian tener resuelto el problema y poder trabajar. Algunos indican que es necesario "intentar" registrar la dll usando el REGSVR32 aun que salga error, pero en mi caso no fue necesario...
Como diría un amigo mío: HAPPY HACKING! Nos vemos!

Regresando de nuevo al camino

Holas a todos, desde hace buen tiempo ya deje de escribir por problemas de conectividad y tiempo, pero felizmente el tema lo tengo un tanto resuelto ahora. Y justo ahora estoy deambulando por lo caminos de PYTHON, asi que ire comentando los diversos problemas y soluciones que encuentre así como temas interesante relacionados a este poderoso lenguaje de programación...
Saludos a todos...!

jueves, 4 de febrero de 2010

Modificando eventos al paso...

Alguna vez hemos querido modificar algun evento de un objeto de forma dinamica, para hacerlo sencillo aqui la forma básica:
  • element.onEvent = mi_funcion;
Donde 'mi_funcion' seria un metodo sin argumentos como sigue:
  • function mi_function()
    {
    //statements aqui......
    }
Algo de info aqui: http://www.quirksmode.org/js/introevents.html
Saludos!

viernes, 5 de junio de 2009

Más logros de mi gente de la UNI...

Me dio bastante gusto enterarme que esta semana, una ex-compañera mas de Arquitectura de la UNI ha logrado sustentar su tesis con éxito, logrando obtener la insuperable calificación de 20, me refiero a nada mas y nada menos que mi amiga, la Arq. Angélica Huapaya, quien se suma a la creciente lista de profesionales que han dado este gran paso: Arq. Norma Medina y el Arq. Miguel Ortiz.

Mis más sinceras felicitaciones a todos ellos y que sigan los éxitos...

viernes, 24 de abril de 2009

Customizando mensajes del Websphere Portal

Hace poco se me pidió que customizara una mensajes que emitía el portal al momento que caducaba la sesión, entre las opciones que habían estaba la de crear un nuevo archivo *.properties y leer de ahi los mensajes que se requerían; pero también esta el otro tema de la internacionalización, con lo cual, se debia entonces crear un *.properties por cada idioma en el que se requiriera se visualize el portal. Esto implica, que se debía crear un *.properties por cada uno de los idiomas requeridos con lo mensajes que se vayan a mostrar.

Hasta aqui, la solución parece buena, pero por que crear un *.properties por cada idioma, cuando el portal ya tiene esto implementado, y en todo caso, el trabajo se vería reducido a modificar los mensajes según se requiriera y agregar los nuevos que fueramos a usar.

Sere breve de aqui en adelante, el portal hace uso de un *.jar que contiene todos los mensajes y textos que se usarán en el portal, tanto en botones como en labels. Este archivo lo podemos ubicar en la ruta /portal/IBM/WebSphere/PortalServer/ui/wp.ui/shared/app con el nombre de wp.ui.jar.

Una vez que abrimos el jar ubicamos la carpeta nls y dentro tendremos lo properties que tanto necesitabamos encontrar.

Para tener una idea de como usar estos properties, podemos darle un vistazo al siguiente tag ubicado en el archivo ErrorSessionTimeout.jsp del portal (archivo que muestra el mensaje de sesión caducada):

<portal-fmt:text key="error.timeout" bundle="nls.engine"><portal-fmt:textparam><portal-fmt:text key="link.home" bundle="nls.engine"></portal-fmt:text></portal-fmt:textparam></portal-fmt:text>


Aqui vemos 3 palabras clave, la que indica que archivo usara para ubicar el mensaje es: nls.engine, podran observar que entre todos lo properties que tenemos existe un conjunto de archivos con la siguiente terminologia: nls.engine_xx.properties, donde "xx" corresponden al idioma (es: español; en: ingles; fr: frances... y asi sucesivamente).

Adicionalmente vemos el key="error.timeout" que es el que indica que mensaje se obtendra del archivo de recursos que hemos ubicado según el idioma del browser, para este caso error.timeoput corresponde a: "La sesi\u00f3n del portal ha superado el tiempo de espera por falta de actividad. Inicie una nueva sesi\u00f3n en el portal {0}." Y aqui podemos apreciar que esperamos un parámetro: "{0}", este es recuperado del código mostrado con el key="link.home" (este mensaje tmb se encuentra en el mismo archivo).

Con esto es fácil ya modificar un mensaje según nuestra necesidad o mejor aún, crear uno nuevo para nosotros. Siguiendo lo leído, para crear el mensaje: "Esto es todo amigos" solo necesitariamos hacer lo siguiente:

EN ESPAÑOL
  1. Ubicar el archivo nls.engine_es.properties
  2. Crear el key "msg.despedida" con el valor del mensaje: "msg.despedida = Esto es todo amigos.". Adicionalmente si quieren recuperar un parametro añadan "{0}".
EN INGLES
  1. Ubicar el archivo nls.engine_en.properties
  2. Crear el key "msg.despedida" con el valor del mensaje: "msg.despedida = That's all folks.". Adicionalmente si quieren recuperar un parametro añadan "{0}".
Y asi sucesivamente por cada idioma que sea necesario. Una vez hecho esto grabamos, y copiamos el archivo en la sgte. ruta:
Luego reiniciamos el servidor de aplicaciones del portal o en su defecto el mismo portal y ya podremos acceder a los nuevos textos que hemos creado. Luego, llamamos en nuestra página de portal al nuevo mensaje del siguiente modo:
<portal-fmt:text key="msg.despedida" bundle="nls.engine"/>
</portal-fmt:text>

Y si quieren mandarle un parámetro:
<portal-fmt:text key="msg.despedida" bundle="nls.engine"><portal-fmt:textparam>[Mi parámetro]</portal-fmt:textparam></portal-fmt:text>

Espero que les sea de utilidad, proximamente algunos tips para generación de themes y skins personalizados.

Saludos.

lunes, 20 de abril de 2009

Detectar versión Internet Explorer - JavaScript

Para los interesados aqui un útil script que permite detectar la versión del Internet Explorer que se esta usando.

Script:
function vIE()
{return (navigator.appName=='Microsoft Internet Explorer')?parseFloat((new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})")).exec(navigator.userAgent)[1]):-1;}