miércoles, 14 de agosto de 2013

Collection.emptyList() + java.lang.UnsupportedOperationException

Es común utilizar el método estático emptyList() de la clase Collection cuando se requiere retornar una lista vacía del estilo List<T>
Utilizando este método se gana en performance ya que el mismo no tiene el overhead de crear una nueva lista cada vez, sino que siempre devuelve la misma. Es por tal motivo que la lista es inmutable (no se puede modificar, ni agregar elementos etc.).
Por tanto cuando se usa algo del estilo:
Hay que estar seguro de no querer luego modificarla, en caso de intentar realizar algo como:
Se obtiene una excepcion java.lang.UnsupportedOperationException en RUNTIME.

Mas referencias de la clase Collection: aqui

sábado, 20 de julio de 2013

PrimeFaces PickList + RemoteCommand example

Hace unos días trabaje con el componente PickList de PrimeFaces combinándolo con el componente remoteCommand.
La idea era procesar una lista de archivos, de a uno por vez e ir mostrando el avance al usuario.

Lo primero fue definir el markup de la vista.
Primero definimos un growl y un dialogo, para mostrar el orden de proceso y avisar del procesamiento respectivamente. Luego el componente p:pickList Y por ultimo, un commandButton para iniciar el procesamiento y un remoteCommand para invocarlo mediante js desde el Bean.

Del lado del servidor vamos a ejecutar la acción y si aun quedan elementos por procesar volveremos al cliente para actualizar la lista e invocamos nuevamente
Un vídeo del ejemplo  aquí

Unable to display content. Adobe Flash is required.
El código lo bajan desde aquí


domingo, 24 de marzo de 2013

Servidor utilizando DynDns + SSH mobile

Hace unos días encontré en mercado libre un Servidor Dell Poweredge 2650 con dos procesadores Xeon que estaba en precio y lo compramos con un amigo.
Luego de tenerlo en casa y terminar de asombrarme por el peso,las dimensiones y el ruido del nuevo juguete, me dispuse a instalar un Ubuntu Server y dejarlo funcionando. Como mi conexión a Internet no tiene una IP fija, cree una cuenta en DynDns para lograr tener un nombre de dominio estático que me permita acceder al server, el servicio ya lo eh probado anteriormente y funciona realmente bien.

Existe la posibilidad de actualizar nuestra dirección IP utilizando una aplicación que se instala en windows o linux y también existen algunos routers como el mio (Linksys WRT120N) que tiene en su configuración la opción para actualizar automáticamente el IP en cada re-conexión para DynDNS y TZO.

Lo ultimo es configurar el reenvió de los puertos para poder acceder desde el exterior de mi LAN.

La configuración quedo así.




Luego que tenia todo funcionando estuve probando varios clientes SSH para usar con la Galaxy Tab2. Después de probar 4 o 5 encontré lo que necesitaba. Server Auditor La mayoría de los que probé tenían lo básico pero este ultimo destaca por lo siguiente:

  • Desplazar para tener el histórico de comandos  
  • Posibilidad de utilizar la tecla TAB con un double touch lo cual es muy util.
  • Es fácil utilizar las teclas CTRL, ALT, ESC, F#.