Wednesday, March 28, 2007

hora de actualizar tu lector de archivos PDF

Si aun no estas usando Foxit reader deja de hacer lo que estas haciendo y bajatelo de volada, ahora que si ya lo habias usado y te habia dado problemas con ciertos archivos pdf, pues ahora es el momento de darle una segunda oportunidad, acaban de sacar la version 2.0 y al menos en mi experiencia ya he podido abrir los archivos que antes no podia abrir

Foxit reader es muchisimo mas rapido que el acrobar reader, y no te instala nada de porquerias adicionales, simplemente lo que uno esperaria de un "lector de archivos pdf"... es lo unico que hace, y (ahora) lo hace bien

Sunday, March 18, 2007

arreglar el caching de RadWindow

Este articulo aplica especificamente al componente RadWindow de Telerik

El cual es un wrapper* buenisimo para crear ventanitas dentro de tus aplicaciones asp.net, solo que tiene un problema; cachea* contenido automaticamente; me tomo algunas horas encontrar la solucion, pero es muy sencillo, solo basta una propiedad:

radW:RadWindow
ID="WindowAttachFile"
runat="Server"
NavigateUrl="AttachFile.aspx"
ReloadOnShow="true"
Height="230px"
Width="410px" Modal="true"

Espero que le sea de utilidad a algun alma perdida
salu2
* como se dicen esas palabras en cristiano y que se oiga decente?

Thursday, March 15, 2007

google reader esta siendo actualizado... inquietante

Han cambiado algunos links a botones y algunas otras cosas mas, pero de pronto me doy cuenta que tengo muchas cosas en google, y "un dia sin google" me afectaria bastante, y a ustedes que tal les iria?

Por cierto, checando mi google analytics me di cuenta que alguien de Moscu y alguien de Shangai me visitan a este blog en español, va un saludo y gracias por visitar

salu2

Saturday, March 10, 2007

tres simples preguntas para un buen manejo de excepciones

Se han dicho muchas cosas sobre el manejo correcto de excepciones, pero yo creo que todo se puede resumir en 3 simples preguntas:

Que?
Cuando?
Donde?

que paso y que datos causaron esto?, Esta es probablemente el area donde los desarrolladores tienen mas problema; frecuentemente lo unico que contestan es "que paso?", pero eso no es suficiente; vamos a ver porque:

digamos que tenemos codigo de manejo de errores y...

la aplicacion nos da este mensaje de error (o se guarda en un log): "La informacion del empleado es incorrecta"

el error me dice que paso, pero es demasiado abierto, la descripcion es demasiada vaga, hay muchisimas cosas que podrian estar mal con la informacion del emploeado

Ok, entonces vamos a mejorar el mensaje de error, solo para este ejemplo, digamos que validamos la ciudad; cambiamos el codigo y ahora el error es:

"el valor del campo Ciudad no es valido"

Este mensaje es mucho mejor que el anterior, al menos ya se donde especificamente tengo el problema; la cuestion es que este mensaje de error solo me sirve en el momento en el que sucede, y solo le sirve a la persona/proceso al que le sucedio

Asi que vamos a mejorar aun mas:

"[ILEGIBLE] no es una ciudad valida"

AH!!... ahora se exactamente que paso, y que es lo que lo esta causando, aun si yo solo estuviera leyendo el error en un LOG file, sabria exactamente que paso, lo que es mas, puedo analizar la lista de errores y si veo que este error es muy comun, podria cambiar/mejorar las reglas en la aplicacion basado en la informacion que tengo; tambien me podria dar cuenta de situaciones que si no tuviera esta informacion pues simplemente no sabria, y los usuarios de mi aplicacion "aprenderian" como se tiene que usar la aplicacion, en vez de que se mejorara el proceso, los usuarios tendrian que hacer algo talvez mas lento porque mi aplicacion no da la informacion necesaria

Cuando? siempre debes incluir fecha y hora con cada error

Donde? Esto es casi automatico con esto del stack trace, pero muchas veces el mismo codigo se usa (por ejemplo) desde una aplicacion web y desde un servicio web (estoy haciendo eso mismo ahora) y seria bueno que el mensaje de error tuviera un campo que me indicara de donde se genero el error, si de la aplicacion web o del servicio web

Esto ultimo yo lo he solucionado teniendo un campo adicional en mi tabla de errores llamado "Origen", entonces en la capa mas alta, capturo los errores y lo mando grabar a mi tabla pasando el origen de donde se genero el error, web o servicio web

En resumen, pongan especial atencion al "que?", recuerden que el saber que paso no me dice mucho, los mensajes de error deben contener los datos que causaron el problema, tal como #Empleado, #Producto, propiedad especifica que causo el problema, etc

He visto innumerables veces programadores que tienen que correr una aplicacion varias veces para reproducir el problema, o lo que es peor, el (tristemente) clasico "hableme cuando vea el error otravez!", simplemente porque el log error no contiene informacion que les diga donde es que y que causo el error y que hacer para arreglarlo.

las excepciones deberian ser algo como

el derecho de [Escritura] no se encontro para el empleado [101]

en vez de

No se pudo grabar el registro!

Con la informacion de este ultimo ejemplo que les doy, yo puedo ir a la base de datos inmediatamente y darle derechos de escritura al empleado 101 y se acabo el problema!

Hay un mar de diferencia de un mensaje de error a otro, y ese mar de diferencia es lo que los va a hacer programadores mucho mas productivos a la hora de mantener su mismo software.

El software siempre va a tener bugs, la diferencia es cuanto tiempo les cuesta arreglar un bug cuando estos salen a la vista

Thursday, March 01, 2007

Yo quiero una Mac!


Hace buen rato he tenido la curiosidad de comprarme una Mac, me he detenido mas que nada por el precio, pero ahora definitivamente me voy a comprar una =o)
Una de las razones principales es parallels. Ya hemos visto maquinas virtuales desde hace buen tiempo, en las cuales el sistema operativo "invitado" vive en su propia ventana (hasta ahi todo normalito).

bueno, pues Parallels lleva esto a otro nivel, te permite integrar la Mac y el sistema operativo en el mismo escritorio de trabajo! de tal forma que te puedes cambiar de una app mac a una app de windows en el mismo escritorio, eso es increible!

checate la foto para que veas mas detalle, las aplicaciones Mac y Windows se "mezclan" naturalmente como si fuera un solo OS, aunque las aplicaciones vivan en OSes diferentes,
Las aplicaciones que corren en Windows se muestran dentro de la "barra" de la Mac.
Incluso te permite copiar y pegar entre los dos (y segun me cuenta Justin tambien te permite hacer "drag and drop")

Esto es buen software.

dude!, I'm getting a Mac... solo me espero a que salga Leopard =o)