miércoles, 22 de julio de 2009

Logs tipo Apache NCSA en framework Restlet... y con DailyRollingFileAppender

El servidor web (ej: jetty) del framework Restlet arroja logs de los requests en formato Apache (NCSA) al logging estándar del JDK.

Para capturar esos logs, colocar en el main de la aplicación:


java.util.logging.Handler fh = new NCSAFileHandler();
java.util.logging.Logger.getLogger("").addHandler(fh);


La clase NCSAFileHandler es sencilla, sólo sobreescribe 1 método de su padre Handler:



public class NCSAFileHandler extends Handler {
...
private static Logger log = Logger.getLogger(NCSAFileHandler.class);;
@Override
public void publish(LogRecord logRecord) {
log.info(logRecord.getMessage());
}
}


Al método publish de NCSAFileHandler le llegarán todos los records (record = mensaje con el resumen del roundtrip de un request) de Restlet. Con publish botamos los records a log4j.

Para que el log de NCSAFileHandler quede en un DailyRollingFileAppender de log4j, en el main de la aplicación:


File ncsaLogFile = new File("/tmp/http_ncsa.log");
DailyRollingFileAppender ncsaAppender = new DailyRollingFileAppender();
ncsaAppender.setFile(ncsaLogFile.getAbsolutePath());
ncsaAppender.setName("DailyRollingFileAppenderNCSA");
ncsaAppender.setDatePattern("'.'yyyy-MM-dd");
ncsaAppender.activateOptions();
PatternLayout ncsaLayout = new PatternLayout("[%t] %m%n");
ncsaAppender.setLayout(ncsaLayout);
Logger ncsaLogger = Logger.getLogger(mipackage.ncsa.NCSAFileHandler.class);
ncsaLogger.addAppender(ncsaAppender);

sábado, 4 de julio de 2009

No me hagas pensar - ¿Cómo usamos realmente la web?

No leemos las páginas, las hojeamos
  • Tenemos prisa
  • Sabemos que no hay que leerlo todo
  • Somos buenos para hojear (ej: periódicos)

Satisficing: No tomamos decisiones óptimas, es suficiente
  • Tenemos prisa
  • Errar -> Atrás
  • Adivinar es más divertido
No leemos el manual, nos las arreglamos
  • No nos importa
  • Si funciona, seguimos con ello
  • Ej: docenas de personas escriben las url en la búsqueda de yahoo. "Yahoo es la Internet"...
Ref: No me hagas pensar - Una aproximación a la usabilidad en la Web, Segunda edición. Steve Krug.

viernes, 3 de julio de 2009

No me hagas pensar - Clics evidentes

¿Dónde harías clic para ver detalles de la oferta de compras de 3 a 12 cuotas que aparece en el banner?



Al colocar el ratón, sólo se podía hacer clic en la zona en verde oscuro...

Otro caso de facebook:



Al colocar el ratón encima de "Name", cambia el puntero, ¿A dónde me lleva?, no aparece nada abajo en el status bar del browser, al presionarlo me di cuenta de que lleva al mismo lado que al hacer clic en "change".

Ref: No me hagas pensar - Una aproximación a la usabilidad en la Web, Segunda edición. Steve Krug.

lunes, 29 de junio de 2009

No me hagas pensar - Primera norma de la usabilidad de Krug

"Si algo es complicado de utilizar, simplemente no lo uso demasiado" (esposa del autor)

Facilidad de uso no es:
  • 2 clics de distancia
  • usar el lenguaje del usuario
  • ser coherente
sino:
¡No me hagas pensar!

Usuario sin pensar:
  • Esto es...
  • Y eso es ...
  • Y eso es lo que quiero!

Usuario pensando:
  • ¿Por dónde empiezo?
  • ¿Por qué esto se llama así?
  • ¿Puedo hacer clic en esto?
  • ¿Puedo navegar por aquí o me llevará a otro sitio?
  • ¿Por qué está esto aquí?
  • ¿Estos dos vínculos me llevan al mismo lado?

Haz clic en las sgtes imágenes y evalúa si pensaste o no:





Ref: No me hagas pensar - Una aproximación a la usabilidad en la Web, Segunda edición. Steve Krug.

lunes, 1 de junio de 2009

Tiempo (temperaturas) de Chile en el celular

Para construir una página WAP para revisar el tiempo de Santiago, se puede obtener datos desde la sgte url:

http://www.meteochile.cl/js/reg05m.js

y luego Parsear las sgtes líneas:
temperaturas['Santiago Sector Oriente']='/24|7/18|9/15|6/14|4/16';
pronosticos['Santiago Sector Oriente']='Despejado|Escasa nubosidad|Nublado|Nublado variando a escasa nubosidad|Despejado';
iconos['Santiago Sector Oriente']='sol.gif|parcialalta.gif|cubierto.gif|cubierto.gif|sol.gif';
fechas['Santiago Sector Oriente']='Lunes 01|Martes 02|Miércoles 03|Jueves 04|Viernes 05|Sábado 06|Domingo 07';

Para viña del mar:

http://www.meteochile.cl/js/reg05.js
temperaturas['Viña del Mar/Valparaíso']='/22|12/14|12/14|8/14|5/17';
pronosticos['Viña del Mar/Valparaíso']='Despejado|Nublado y llovizna|Nublado y llovizna|Escasa nubosidad|Despejado';
iconos['Viña del Mar/Valparaíso']='sol.gif|llovizna.gif|llovizna.gif|parcialalta.gif|sol.gif';
fechas['Viña del Mar/Valparaíso']='Lunes 01|Martes 02|Miércoles 03|Jueves 04|Viernes 05|Sábado 06|Domingo 07';


Siempre viene una línea con:

var redaccion= 'Información redactada el día Lunes 01 a las 5:48 hrs'

miércoles, 27 de mayo de 2009

OpenOffice - Readonly Content Cannot Be Changed

Ir a editar el Indice de Contenidos, on the first tab you have an option "protected against manual changes". When you disable it, (save and reopen) the document becomes read/write again.

martes, 26 de mayo de 2009

Cómo iniciar DHCP en arranque, no luego del login

pablo@pablo-desktop:~$ more /etc/network/interfaces
auto lo eth0
iface lo inet loopback
iface eth0 inet dhcp