Welcome to Comunidad .NET de Cd. Juárez Sign in | Join | Help

September 2006 - Posts

Reflejando imágenes

Aunque no creo que Apple lo haya inventado, creo que es quien lo va a popularizar gracias a iTunes 7. Me refiero al efecto de reflejo de imágenes en el software. Ya casi estoy anticipando cómo la raza lo va a sobreutilizar, pero en fin. Así que si quieren estar "a la moda", ahí están un par de links que me parecieron interesantes:

El primero es una librería de javascript para obtener ese efecto en las imágenes de tus páginas web. Ridículamente sencillo de usar (quise incluir un ejemplo en este mismo post, pero Blogger hasta donde sé no te permite incluir librerías de javascript, supongo que para evitar que los hackeen con XSS). En fin, la página de la librería es suficiente para darte una idea de cómo se usa.

El otro enlace es a un artículo que muestra cómo puedes obtener el efecto utilizando Windows Presentation Foundation en tus aplicaciones Windows. Qué chido, ¿no?

Toolbars y extensiones para desarrollo Web

Quizá habrás notado en el video del post anterior el uso de una extensión de Firefox llamada Firefox Web Developer Extension. Esta herramienta, aparte de transformar requests POST a GET y viceversa como lo mostró el video, trae infinidad de cosas útiles (mis favoritas son el validador de HTML, el reporte de velocidad de tu página, el resize de tu navegador y prácticamente todo el menú de Information y CSS).



Para IE 6 hay algo llamado Web Developer Toolbar que provee funcionalidad similar. De esta herramienta mi feature favorito es View DOM que te ayuda a ver todo el árbol y valores de un documento HTML ahí mismo.



Y finalmente, otra herramienta que te puede servir--sobretodo para tener cuidado con las cuestiones de seguridad--es Live HTTP Headers, otra extensión para Firefox que te da la información en vivo de los requests y responses que vas haciendo con el browser. Así que puedes revisar fácilmente que no estés pasando información desprotegida en tus requests.


Espero te sirvan. Enjoy.

Aguas con el XSS

Ahora que se determinó que las vulnerabilidades de cross-site scritpting (XSS) son las número uno de todos los tiempos, es importante saber qué implicaciones tiene para tus aplicaciones Web hechas con ASP.NET. Afortunadamente, desde la versión 1.1, el .NET Framework trae activados por default la validación de los requests hacia tu servidor, pero aún así esto no es suficiente.

Ah, y si crees que la injección de tantito javascript no es peligrosa, ve este video. Está grandecito, pero vale la pena (127Mb, QuickTime).

Vista, Round 3

Con Vista RC1, le di una segunda oportunidad a la versión x64, pero me temo que todos los issues siguieron igual más uno nuevo: dado que esta versión require que los drivers estén firmados, ni siquiera pude instalar los drivers de nVidia correspondientes. Ugh. Ni modo. No 64-bit for me.

Y como dijo el Paul Thurrot:
How come x64 is so horrible? Does Microsoft want Apple to make it look silly again? Those foolish enough to install an x64 version of Windows Vista will become pretty surly when they realize none of their applications will work, none of their existing drivers mean diddly-squat anymore, and, most humorously, that x64 PC you bought probably doesn't support more than 4 GB of RAM anyway. OK, that last one isn't Microsoft's fault, but seriously. It's all part of the malaise that is the x64 "ecosystem."
La experiencia con la versión x86 fue más placentera. De cajón detectó todos los drivers, incluyendo la tarjeta wireless y los dispositivos del motherboard, aunque para el audio sigue marcando el siguiente mensaje hostigoso cada vez que abro el Control Panel (a pesar de haberlos instalado):



El efecto Glass seguía sin aparecer... grrr. Lo que averigüé es que mi tarjega GeForce 6100 solo tenía 64Mb de RAM y el resto lo estaba tomando de la memoria de sistema, y con un monitorsote tan grande pues jamás se iba a dar abasto. Así que al llegar el día de paga me sobraron 80 dolarillos para una tarjeta GeForce 7300GS con 256Mb.

Pero después de instalarla seguía sin aparecer. Mi experience index seguía en 3.0. Cabisbundo y meditabajo--y un poco encabronado--recordé un checkbox en una de las cajas de diálogo que me topé desde que comenzó mi lucha por Aero Glass: Enable transparency (y antes que me digan "duh! ¡zopenco!", activar este checkbox no funcionaba con la tajeta de video anterior)

Y voilà. Finally.

Entonces comencé a calar las aplicaciones que trae y algo que no logro entender es porqué diablos el Windows Mail que viene pre-cargado no maneja Hotmail. Aunque jamás he sido fan de Outlook Express, era el único chiste que tenía.


Tuve que descargar Windows Live Mail Desktop Beta. Y este sólo comenzó a funcionar cuando me cambié de Hotmail a Windows Live Mail, lo cual le da un poco en la torre a la necesidad de usar la versión Desktop. (En fin, que al cabo que esa cuenta solo lo uso para junkmail).

Apenas voy a comenzar a atacarle más software de todo tipo, comenzando por Visual Studio y las herramientas para desarrollar con el Framework 3.0.

Por ahora puedo decir que Skype, iTunes y Flock jalan de perlas, y que Norton Antivirus decididamente no:




Update: La tarjeta nueva de video parece haber resuelto también la bronca de que la máquina no se recuperaba del pseudo-shutdown o cuando se suspendía por inactividad. ¿Qué cura, no?

Enlaces hacia los juguetes del .NET Framework 3.0 RC1

Este post de Paul Andrew contiene enlaces a todo lo que necesitas para jugar con el .NET Framework 3.0 RC1.

Dependiendo de lo que quieras calar (WF, WCF o WPF), es probable que necesites bajar hasta 6 cosas distintas.

Enjoy

Hacer lo "duh"

Estaba leyendo este artículo hoy de Kathy Sierra y me llamó especialmente la atención uno de los últimos párrafos:
When people ask for the secret sauce guaranteed recipe for success, we say that it's quite simple: just do the "duh" thing. The Big Secret is not about knowing what magical thing to do--it's about taking the "duh" things seriously enough and actually doing them. If you could pick just one "duh" thing to work on, what would it be?
¿Qué demonios tiene que ver con el desarrollo de software?

Muchos de nosotros hemos oído de prácticas que son buenas para mejorar la calidad del software que producimos--metodologías de desarrollo ágil, técnicas para modelación y orientación a objetos, patrones de diseño o herramientas que nos pueden ayudar a automatizar y ser más pragmáticos. Para mi estos son "DUH!".

Pero ¿cuántos en realidad las ponemos en práctica? ¿Por qué no lo hacemos?

En el grupo de estudio me he estado topando con muchas personas que quieren aprender, o que quieren hacerse "expertos" en .NET y obtener su certificación. Pero pocos de ellos están dispuestos a invertir el tiempo necesario para practicar. Me parece increíble, pero es cierto. Muchos de ellos creen que el escuchar un mono hablarles de cierto tema o que con leer un libro , que ya con eso saben. Pero si los comienzas a poner a prueba, o si les haces preguntas recién que cerraron la portada del libro patinan de volada.

Creo que no que es suficiente con ser blog-junkie o podcast-junkie. No es suficiente que te chutes 1 o 2 libros al mes para aprender algo y llegar al siguiente nivel de expertise. Todo esto ciertamente ayuda--sobretodo a ampliar tu campo de visión y conocer cosas nuevas--pero al final del día, si quieres incrementar tu nivel en cierto lenguaje o tecnología pues no te queda más que sentarte un rato y tirar código o jugar con la tecnología que te interesa.

A menos que seas superdotado, no creo que puedas aprender a andar en bicicleta con leer un libro, no importa qué tan bueno sea.

Así que propongo el siguiente modelo que voy a tomar prestado de Mastery With Women de David DeAngelo, pero traducido para la raza que programa:

private void SerMaster()
{
    while (true)
    {
        EscogeLoQueQuieresAprender();
        Practicalo();
        AprendeDeLoQueHiciste();
        DecideCualEsElSiguientePasoEnTuEvolucion();
    }
}

Bueno, al final de todo creo que a mi también me salió un artículo "duh".

Where Workflow Foundation really shines

Rocky tiene unas ideas bastante interesantes de cómo encaja Workflow Foundation en la arquitectura de un sistema. Vale la pena echarle el ojo.

De su artículo:
Today we all write these non-interactive processes in code. Maybe with a set of objects working in concert, but more often as a linear or procedural set of code. If a change is needed to the process, we have to alter the code itself, possibly introducing unintended side-effects, because there's little isolation between steps.

Personally I think this is where WF fits in. It is really good at helping you create and manage non-interactive processes.

Yes, you have to think about those non-interactive processes in a different way to use WF. But it is probably worth it, because in the end you'll have divided each process into a set of discrete, autonomous steps. WF itself will invoke each step in order, and you have the pleasure (seriously!) of creating each step as an independent unit of code.

From an OO design perspective it is almost perfect, because each step is a use case, that can be designed and implemented in isolation - which is a rare and exciting thing!

¡Quiero mis 64 bits!

Con el problemita de hacer jalar mi tarjeta wireless con Vista Beta2 x64, comencé a considerar seriamente comprar otra tarjeta wireless que tuviera drivers de 64-bits. Digo, si no hay drivers, la culpa no es de Microsoft, sino del fabricante ¿verdad? Digo, mi tarjeta tiene como 1 año y por lo que sé Belkin no tiene planes de sacar drivers nuevos, y el semi hack de usar los de RaLink no funcionó del todo.

Así que me puse a buscar tarjetas que soportaran drivers de 64-bits en el Google-espacio y ¿qué crees? no soy el único. Lo más acercado a una lista fue esto, y la mayoría son USB.

¿Sabes cuántas tarjetas wireless PCI encontré en esa lista que explícitamente tuvieran drivers en su sitio de 64-bits? Una. Y no la puedo comprar en El Chuco porque al parecer ni CompUSA ni la PeorCompra la venden. Tendría que pedirla por web, pagar shipping y... ya fue mucho esfuerzo. Además, ¿porqué necesito comprar hardware nuevo, si el que tengo hace su chamba?

Pero todo esto me puso a pensar:
¿qué más hardware que tengo no va a funcionar bajo Vista x64?
¿Mi iPod? No ma...keyu... Ahí si me rajo.
¿Cuántos fabricantes harán como Belkin y de plano consideren hardware de hace 1 año como "viejo" y que no vale la pena para invertirle en drivers de 64 bits?
¿Y porqué si el RC1 de Vista ya salió, y la versión final sale en 2 o 3 meses, no estoy viendo hardware "Vista Ready" en las tiendas?
¿Estamos volviendo a la era de tener que buscar drivers por todos lados?
¿Y cómo le hace Ubuntu x64 para correr todo esto en la misma PC sin (casi) ningún problema?
¿En realidad vale la pena?

Ya sé que me estoy poniendo dramático, pero el dilema de 32 vs 64-bits lo traigo desde que compré mi PC, específicamente con un chip AMD Athlon 64 chidota. En aquellos días ya andaba rondando por ahí Windows XP x64, pero no me aventé con eso porque ya sabía que tenía mucho software que no iba a jalar con esa versión (incluyendo mi suscripción anual de Stardock para todo el eye-candy).

Así que como muchos, decidí esperar a que saliera Vista. Un día me topé un documento (Is Windows XP 64 Right For Me?, Mayo 2006) de Charlie Russel, un MVP en cosas de x64. El documento, en resumidas cuentas, dice que las cosas que hay que cuidar en la movida a Windows x64 son:

En cuanto a software
  • Drivers y software que depende de drivers de 32-bits--como antivirus, utilerías para particionar y defragmentar, etc.
  • Programas que hacen uso de las extensiones al Windows Explorer--como WinZip, o cualquier programa que te ponga cosas en los menúes del Explorer. Los programas van a funcionar, la bronca nomás son con las extensiones.
  • Aplicaciones de 16-bits (¿aún hay alguien que las use?)
En cuanto a hardware (debido al requerimiento y falta de drivers de 64-bits), los más latosos son:
  • Scanners
  • USB y tarjetas de red wireless
  • Dispositivos Bluetooth
  • Impresoras
Del documento:
But USB network devices, including cable and DSL modems, are still a major area of missing drivers, as are add-in wireless devices, especially PCI wireless devices and PC-Card wireless devices that support 802.11a/b/g. There have been some beta-quality, unsupported, wireless device drivers for the most common three-protocol chipsets that are available, but I’ve seen no indication when a final driver version will be made public. (pp. 12-13)
[...]

The good news on the device-driver front is that it’s getting better every month, and the problem areas will be much better in Vista. Because the Windows Vista logo requirements mandate that a device work under 64-bit Windows Vista to get the Designed for Windows Vista logo, manufacturers and IHVs have a strong incentive to provide 64-bit drivers, and end-users will be able to easily identify hardware that is 64-bit capable.

Another important criterion for Windows Vista is that all 64-bit kernel drivers must be signed. This requirement will help improve the security and reliability of the operating system and will make 64-bit Windows Vista the operating system of choice. (p 13)

Ah, entonces no estoy alucinando.

Para ahorita quizá estés diciendo, "bueno, 'inche Charlie, pos ya nomás usa Vista de 32 bits y sé feliz."

Pues sí pero cuando Microsoft anuncia que algunos features solo los va a tener la versión de 64-bits, me pone nervioso. No porque yo algún día vaya a usar contenido "protegido" en mi PC, sino porque me hace preguntar ¿qué más no voy a poder hacer con Vista 32-bit?

Ahora, como desarrollador, es muy probable que en un futuro cercano se me ofrezca codificar algo para 64-bit, y cuando Bill Gates dice que pa' allá va la cosa [video], pues es buena idea prestar atención y ponderar estos temas.

Y si ya de plano me pongo en términos prácticos, el factor que me atrae más de x64 son las mejoras en el manejo de memoria. En estos momentos solo tengo 1Gb de RAM, pero hoy justamente me llegaron otros 2Gb que pedí desde hace como 3 semanas online.

¿Pa' qué quiero esa memoria? Pues por ahora porque se me ofrece comunmente correr máquinas virtuales para jugar con distintas herramientas y plataformas, y las mejoras al manejo de memoria virtual junto con la memoria adicional hacen un chorro de diferencia. ¿Quieres más? (Hasta donde sé) No puedes correr máquinas virtuales de 64-bits cuando tu Windows es de 32.

En fin, espero que ahora comprendas mi dilema.

No me cuesta nada esperar más tiempo a ver si mejora la cosa, pero ¡no quiero! ;)

Blog de bugs de Blogger Beta

¡Ah que wey soy!
(eso nadie lo discute)

Si estás usando Blogger beta como yo, sí puedes postear en blogs que no han sido convertidos. ¿La solución? No uses tu identidad de Blogger (osea usa la opción "other")

:/

(sorry Edgar, me apen)

De hecho hay un blog sobre las broncas del Blogger beta, así que ya voy a dejar de gastar tecleadas y los refiero a él:

http://knownissues.blogspot.com/
Posted from El otro lado del Kamikaze | 0 Comments
Filed under:

UTC y zonas horarias con Web Services

Este post es en respuesta a este caso de Edgar. Desafortunadamente no lo pude poner como comentario en su blog porque Blogger beta me dió este hermoso mensajito al intentarlo:

Así que esta es mi respuesta:

No estoy seguro si esto es más bien un problema de lógica/programación, más que del framework en sí.

Mi primera recomendación cuando tienes apps que varían significativamente en la zona horaria es que tanto el servicio como el cliente hablen en UTC (Coordinated Universal Time). De esa forma te olvidas de plano de conversiones de zona horaria.

El .NET Framework (desde v1.0) trae un soporte bastante robusto para manejar esto en el tipo DateTime--ve los métodos ToUniversalTime() y ToLocalTime().

Ahora si por "problema que ya se resolvió en .NET 2.0" te refieres a los cambios hicieron a la forma en que se serializan los tipos DateTime a XML, entonces échale un ojo a este artículo, que contiene algunos workarounds para tu situación.

En resumen: si usas tiempo local en v1.0 y 1.1 siempre se serializan DateTime con todo y timezone, incluso cuando solo usas la fecha. Y aunque sí hay workarounds--medio feos--para ello, te ahorras muchas más broncas si usas UTC. Esto podría no ser posible de acuerdo a impacto, restricciones de tiempo/presupuesto o de qué tanto control tengas sobre el web service.

En fin, espero te de un norte.
Posted from El otro lado del Kamikaze | 0 Comments
Filed under: ,

Aventuras en Betalandia: Vista, Round 2

J Sawyer, el mono que dió la plática de Workflow Foundation en El Paso dijo bastante entusiasta y cotorronamente que "Vista will ship this November, not in 2007... it just takes us a while to burn 50 billion frikin' DVDs, put them into little boxes and get it out to customers".

"Ah chinga' eso es en 3 o 4 meses. Más vale que le dé una checada a eso".

Así que saliendo de la plática me acordé que había bajado el CTP de Julio (Windows Vista Beta 2 x64 July CTP) desde hace 2 o 3 semanas y que se me había olvidado instalarlo después de todo el fiasco con Ubuntu x64 en mi PC--que de eso luego les cuento.

Llegué a mi casa casi a las 10:30PM. Y como dice el programa, Ocurrió Así:

La instalación
Definitivamente me fue mucho mejor con la instalación que la vez pasada, aunque aún así tardó aproximadamente de 45 minutos en terminar. Escogí instalarlo en una segunda partición del primer disco (donde también vive Windows XP Pro), lo cual instaló el nuevo bootmanager que arrogantemente le puso la etiqueta genérica de "Earlier Windows Version" a mi instalación de XP.

Algo que se me hizo chistoso es que ahora el bootmanager trae ahora una opción para que pruebes la memoria de tu compu, igualito que el memtest86 que traen las distros "live" de Linux como Knoppix y Ubuntu. Sin embargo, a diferencia de estas, no te reporta los resultados de las pruebas sino hasta que entras a Windows (?!)

El arranque
El proceso de login ahora trae unos efectos de fade-out y fade-in muy nice. El sidebar tardó un rato en cargar todo el mugrero, pero no quita tanto espacio como esperaba--aunque para ser justos mi monitor está corriendo a su resolución nativa de 1600x1200.

De las primeras cosas que noté es que el performance de video no estaba nada bueno y que las ventanas no presentaban el efecto Glass que tanto le han hecho ruido. La pantalla de bienvenida me mostraba prominentemente que mi "Experience Index" era de 2.5 a pesar de que cuando corrí el Windows Vista Upgrade Advisor en XP me había dicho estos features estaban soportados :/

Windows Vista Upgrade Advisor, corriendo en Windows XP

Así que inmediatamente sospeché de los drivers de video.

"Ah pos deja nomás le doy un clic derecho a My Computer para sacar el Device Manager y... ah canijo... ¿Y MY COMPUTER?" (Rápido: encuéntrenlo en menos de 5 segundos)

Where's Waldo... digo... My Computer?

Pues no miento, pero me tomó como 3 o 4 minutos encontrarlo... quizá porque andaba ya medio dormido para esta hora... pero cuando finalmente lo logré, pude ver que en efecto, los drivers de video no estaban bien instalados, y de pilón la tarjeta wireless tampoco. Ahora ambos son bastante comunes. La "tarjeta" de video es una nVidia GeForce 6100 que viene integrada al mobo y la tarjeta de red es una Belkin Wireless 802.11g.

Tengo los discos originales para ambos, pero en este caso no me servían de nada porque 1) son para Win XP y 2) son de 32-bits y yo necesito para x64.

Pues entonces a rebootear a la instalación de XP y encontrar los drivers apropiados, pero oh sorpresa...

El reboot
Resulta que el botón de shutdown ya no hace shutdown, sino que intenta poner la máquina en un estado de standby. En el caso de mi máquina de plano no funcionó: mi pantalla mostraba caracteres extraños--me sentía como en The Matrix me cae--y nomás no pude lograr que mi maquinita reviviera graciosamente. Finalmente tuve que recurrir al tremendo botonazo.

El botón de shutdown que no hace shutdown


Encontrar drivers para el video no fue difícil, despues de todo la tarjeta estaba en el HCL, y marcada como Vista Ready. Así que una surfeada leve y me llevó a esta página donde pude bajar los drivers para Vista Beta 2 (x64) desde el sitio de nVidia.

Los drivers de red fueron más show, porque al parecer Belkin ni siquiera los tiene. Pero como es más común que corriente (usa el chipset Ralink RT2500), logré encontrar estos que según esto jalan con XP x64 y con Vista x64.

De vuelta en Vista, y con los drivers nuevos instalados, la cosa no mejoró mucho. Volví a correr el evaluador del Windows Experience, que sólo levantó el índice de mi máquina a un 2.7, con todo y los drivers de video nuevos. Y de pilón, el Welcome Center se encargaba de recordarme esto cada vez que iniciaba la máquina:

El efecto Glass seguía ausente, aunque lo demás parecía funcionar bien, incluyendo Flip3D, el cual sí está chido (aunque sea puro eye-candy).


Al intentar probar la red, era casi imposible abrir cualquier página común... incluso para páginas de Microsoft. Siempre obtenía el mismo error:


Y cuando daba clic en "More Information" siempre me decía que era algo respecto al DNS. Pero incluso intentando el viejo truco para que no cacheara los errores de DNS, no fue lo suficiente para poder abrir Blogger y postear desde ahí. Le di clic en "Diagnose Connection Problems" y el diagnóstico fue que el que la estaba cajeteando era el Windows Firewall (!), pero aún deshabilitándolo la cosa no mejoró. Después, me decía que no podía encontrar problemas con la conexión.
Hmm... Intenté incluso depurar la lista de entradas del DNS, pero aquí la seguridad lo impidió diciéndome que requería más privilegios, y aún no sé cómo indicarlos en un command prompt:


Para investigar lo que alegaba del Windows Firewall, fui al Security Center quien me alertó que no tenía un antivirus instalado.

¿Antivirus? ¿Qué es eso? ¿Apoco se necesita con Vista?

Le di clic al botón de "Find a Program" y me llevó--a gritos y sombrerazos--a esta página para mostrarme todos (por no decir que el único) antivirus disponible: PC-cillin de Trend Micro. Ochenta y pícole megas más tarde, se instaló y no solo comenzó a protegerme de los viruses, sino también del Windows Firewall:


"Ah, pos igual y eso arregla el detallito del DNS o Firewall y ya deja de dar lata... Nop. Ni maiz paloma".

Incluso al darle clic a "Update now" para actualizar las definiciones de antivirus me daba este otro hermoso error:


Así que con eso terminaron mis ganas de seguir jugando con el Interné'.

Curiosidades y críticas finales
Claramente un Beta significa que aún tiene cosas que van a cambiar. Por ejemplo, jugando con la configuración del taskbar mostraba imágenes de XP... y como que alguien del equipo de Windows Media Player andaba de hax0r:


En esta corta experiencia hubo muchas cosas que no me gustaron. La trabada de la máquina cada vez debido al "standby"--por el pseudo shutdown o por que se suspendía automáticamente a los X minutos de inactividad--eran definitivamente críticas.

Claramente el soporte tanto de video como de red dejó mucho que desear. Y aunque le podríamos echar la culpa a los drivers, no estoy del todo convencido porque sé que re-escribieron tanto el stack de red como el de video.

Además, Vista parece tragar recursos a lo loco, usando uno de los gadgets del sidebar, pude ver que la utilización de CPU andaba casi siempre entre 15 y 35%, y el uso de memoria alrededor de 50-64% (de 1Gb de RAM) sin que estuviera ningún programa cargado. Aunque no investigué a profundidad--y obviamente si le quitamos las cosas nice como gadgets, efectos y demás se compondría--, me parece mucho para una compu que está en un estado donde en realidad no está haciendo nada.

¿Qué, no hay gadget para el clima?

Compáralo con mi instalación de XP, que ya tiene un bonche de mugreros en memoria--antivirus, iTunes, Skype, programas para efectos/skins, etcétera:

Pero de todo lo que más me desilusionó--y van a decir que qué payaso y superficial soy--fue que nomás no jalara el efecto Glass. Digo, si la misma máquina soporta todos esos efectos visuales en XP desde el año pasado--gracias a Object Desktop de Stardock--¿por qué no en Vista?

La razón por la que estoy (tan) ansioso por tener los efectos visuales en Vista.
¿Ves los efectos de transparencia por todos lados?


Pa' mi suerte, justo ahora que acabo de instalar Vista Beta 2 y bloguear sobre el tema, acaban de poner el CTP de agosto en MSDN y aparte anunciaron que la próxima semana ya sale el RC1. En fin. Habrá que bajarlo y jugar con él también para ver si se componen las cosas.