miércoles, 27 de febrero de 2013

Detectar dispositivo móvil


Para detectar un dispositivo móvil en xpages, podemos insertar el siguiente código en el evento affertPageLoad.

var agente = context.getUserAgent().getUserAgent();
if (agente.match("iPhone")!==null || param.platform=="iphone") ||
   (agente.match("Android")!==null || param.platform=="android") ||
   (agente.match("iPad")!==null){
    context.redirecToPage("/movil.xsp", true);

}else{
    context.redirecToPage("/index.xsp", true);
}

viernes, 22 de febrero de 2013

Problema cache xpages en Mac y Linux

 Una aplicación de xpages funciona muy bien en Internet explorer aunque es raro pero bueno funciona, firefox, chrome en equipos con windows. Pero he observado que desde los navegadores de un Mac o Linux no refresca la xpages a no ser que las forcemos.

Y he utilizado la etiqueta de No chache en el head de la página, he utilizado la propiedad de xsp.application.forcefullrefresh=true, pero nada de nada.

Al final he hecho lo siguiente y funciona bien.

Pasos: 

1.- Primero insertamos en el evento de la xpages beforePageLoad el siguiente código 

// Importamos paquete de java que vamos a utilizar 
importPackage( org.restoy.cache ); 

//Capturamos la respuesta de la xpages 
var ec = facesContext.getExternalContext(); 
var response = ec.getResponse(); 
var writer = response.getWriter(); 

// Iniciamos headers y ponemos el tiempo que caducará 
var now = new Date(); 
response.setDateHeader("Expires", 
now.getTime() + (1000)); 
response.setHeader("Cache-Control", "public"); 


// Iniciamos response cache header 
var reqParam = facesContext.getRequestParameters(); 
var resCH = new SHResponseCacheHeader(); 
reqParam.setResponseCacheHeader( resCH ); 

//Imprimimos un test 
writer.write( "Ahora esta página no utiliza la cache del navegador: " ); 
writer.write( now.getTime().toString() ); 


2.- Ahora creamos una clase de Java con el paquete org.restoy.cache 

// Con esto utilizamos el ResponseCacheHeader para inicializar el "expire" y evitar que la xpage ponga -1 y por tanto se inicializará con la fecha que nosotros le digamos. 
package org.restoy.cache; 

import javax.servlet.http.HttpServletResponse; 
import com.ibm.xsp.context.RequestParameters.ResponseCacheHeader; 

public class SHResponseCacheHeader implements ResponseCacheHeader { 

public SHResponseCacheHeader(){} 

public boolean initResponseCacheHeader(HttpServletResponse arg0){ 
return true; 



3.- Ya estaría todo terminado, ahora si lo comprobamos con navegadores de mac o en linux, y vemos el header podemos comprobar que ya no utiliza la cache del navegador, puesto que expira a con la misma fecha que cuando se carga y el navegador entenderá que ya esta caducada y la solicitará de nuevo al servidor. 

Bueno todo esto es lo que he tenido que hacer para que funcione correctamente, me hubiera gustado encontrar una solución mas sencilla, pero por ahora creo que esta es la única solución. Y si estáis diseñando aplicaciones de mantenimiento con xpages como lo hago yo últimamente, tener en cuenta que desde cualquier navegador en mac o linux vais a tener un problema si no controláis la cache. ya que documentos que por ejemplo hayáis eliminado, se seguirán viendo en las vistas, teniendo una sensación de muy mala aplicación.

Podcast sobre Macintosh


Hoy quiero recomendar un podcast que sigo desde hace años y es muy interesante, habla de todo lo relacionado con el mundo apple.

Este podcast se llama Puromac, lo dirigen Flavio Guinsburg y Federico Hatoum, y como ellos dicen es el programa donde "hablamos de las computadoras Macintosh y de todos los productos de apple" desde Puerto Rico y New York.

Un saludo a los dos y espero que sigan durante muchos años con el podcast.


Texto enriquecido en vistas



¿Cómo podemos insertar un campo de texto enriquecido en una vista Lotus Notes?

Los campos de texto enriquecido de Lotus Notes son un poco especiales comparados con el resto de campos, éstos pueden almacenar cualquier tipo de objeto y texto con formato.

Si alguna vez necesitamos visualizar el contenido del campo de texto enriquecido en una columna de una vista, nos daremos cuenta de que no se visualiza nada.

La solución a este problema pasa por utilizar la formula @Abstract() que mediante algunos parámetros podemos extraer sólo el texto de dicho campo.

Si nos situamos en una columna de una vista de lotus, a continuación insertamos el siguiente código:

@Abstract([TextOnly]; 500; ""; campotextoenriquecido)

De esta forma conseguimos sacar hasta 500 caracteres del campo de texto enriquecido y lo más importante es que se visualiza en la columna de la vista.

Podemos completar la formula comprobando si el campo esta vacío:

@If (campotextoenriquecido != ""); (@Abstract([TextOnly]; 500; ""; campotextoenriquecido))

sábado, 6 de agosto de 2011

Errores Mac Os X Lion

Voy a realizar una lista con todos los errores que voy encontrando en Mac Os X Lion.

Lista de Errores:

1.- En ocasiones y misteriosamente el puntero del ratón cambia de ubicación.

2.- Cuando estamos en la ventana de inicio de sesión el ratón pierde su configuración, con lo cual se vuelve  muy lento.

3.- Ahora cuando inicias tu mac, no detecta el ratón hasta que hagas un click, teniendo que esperar hasta que se conecte. Esto no se si será un defecto o que apple habrá querido que sea así.

4.- Otras veces me ha pasado que tanto el Magic Mouse como el Magic trackpad, pierden los gestos y sólo funciona el puntero del ratón. Particularmente me ha pasado teniendo mail a pantalla completa, visualizando un pdf, en este momento se me han deshabilitado los gestos.

5.- Tarda unos 20 segundos más en arrancar que snow leopard.


Son pequeños detalles que hacen que te dejen un sabor agridulce del rey de la selva.

Si utilizáis vuestra máquina para trabajar, no actualicéis hasta que salga la revisión. A parte de que hay muchísimos programas que dan problemas "parallels, checkpoint,autocad, adobe...".

jueves, 28 de julio de 2011

Parallels 6 en Mac Os X Lion

Si eres de los que has actualizado a Lion, y habitualmente utilizas parallels 6 para virtualizar windows, te habrás dado cuenta de que ha dejado de funcionar.


Pues bien existen dos posibilidades para solucionar el problema:

1 .- Actualizar parallels

2 .- Realizar cambios mediante el terminal.

Si el punto 2 es tu caso, para poder hacer funcionar de nuevo parallels debemos seguir los siguientes pasos

1.- Abre el terminal.

2.- Teclea lo siguiente.


sudo kextutil "/Library/Parallels/Parallels Service.app/Contents/Kexts/10.6/prl_hypervisor.kext"
sudo kextutil "/Library/Parallels/Parallels Service.app/Contents/Kexts/10.6/prl_hid_hook.kext"
sudo kextutil "/Library/Parallels/Parallels Service.app/Contents/Kexts/10.6/prl_usb_connect.kext"
sudo kextutil "/Library/Parallels/Parallels Service.app/Contents/Kexts/10.6/prl_netbridge.kext"
sudo kextutil "/Library/Parallels/Parallels Service.app/Contents/Kexts/10.6/prl_vnic.kext"


open -a "/Applications/Parallels Desktop.app"


Ahora podrás comprobar como parallels 6 funciona perfectamente. Para mayor comodidad te puedes crear un fichero ejecutable de la forma siguiente. parallels.sh


#!/bin/sh


sudo kextutil "/Library/Parallels/Parallels Service.app/Contents/Kexts/10.6/prl_hypervisor.kext"
sudo kextutil "/Library/Parallels/Parallels Service.app/Contents/Kexts/10.6/prl_hid_hook.kext"
sudo kextutil "/Library/Parallels/Parallels Service.app/Contents/Kexts/10.6/prl_usb_connect.kext"
sudo kextutil "/Library/Parallels/Parallels Service.app/Contents/Kexts/10.6/prl_netbridge.kext"
sudo kextutil "/Library/Parallels/Parallels Service.app/Contents/Kexts/10.6/prl_vnic.kext"


open -a "/Applications/Parallels Desktop.app"


Y para ejecutarlo directamente en el terminal tecleamos sh parallels.sh

"Perooooo" esto tiene el inconveniente de que cada vez que iniciamos el mac tenemos que ejecutar este fichero a mano. En la próxima entrada publicaré como poner un dichero ejecutable para que se inicie automáticamente cada vez que arranque el mac, así evitaremos tener que ejecutarlo cada día manualmente.

 Otro problema que he encontrado en parallels en Lion, es que si en Snow Leopard tenias asignado un escritorio al parallels en Lion no se visualizará la máquina virtual, sólo la verás momentaneamente cuando pases de un escritorio a otro. Para solucionarlo tenéis que ir al icono de parallels, botón derecho - opciones y marcar todos los escritorios o ninguno.




Bueno en la próxima entrada publicaré como lanzar automáticamente el fichero parallels.sh, para que parallels funcione igual que en Snow Leopard.

viernes, 25 de marzo de 2011

Iconos vistas Lotus Notes


Siempre que necesito poner algún icono en las vistas nunca me acuerdo de donde los tengo así que desde aquí siempre estará disponible. Están ordenados por su código correspondiente.