lunes, 24 de noviembre de 2008

Estudiando para el examen 70-431

Así es, la semana pasada comencé a estudiar para el examen sobre  Sql 2005 70-431 (SQL Server 2005 Implementation and Maintenance).

Hasta el momento se ve interesante, bastánte práctico y con unos cuantos tecnicismos aunque de seguro irá cambiando en la medida que avance, son 21 capítulos divididos en 838 páginas (en inglés) y el examen se divide en 6 áreas principales.

Se siente un poco raro intentar sacar una certificación alejada de todo lo que es el tema del desarrollo (en realidad la certificación está más bien orientada a los DBA) pero creo que me servirá para reforzar los conocimientos que tengo actualmente de SQL y resolver unas cuantas dudas que he ido arrastrando hasta el momento.

Espero estar dando el examen de aquí a fines de Diciembre (si, no es el mejor momento dadas las fiestas de fin de año) si es que todo sale bien.

Ahora, ¿porqué sacar la certificación de Sql 2005 y no la de 2008? pues porque el libro me había llegado hace un tiempo y sería un desperdicio no ocuparlo, además que una certificación de SQL nunca viene mal y creo que ésta tendrá una vigencia de algunos buenos años todavía.

En general el próximo año pienso empezar a sacar las certificaciones relacionadas con el Framework 3.5 y Visual Studio 2008 (como la de WPF), pero por ahora terminaré con ésta de SQL 2005 para ver que tan difícil es.

Ah y también trataré de mantener más actualizado el Blog ya que lo tengo bastante botado en general por falta de ánimo y exceso de sueño :)

lunes, 6 de octubre de 2008

De todo un poco

Hace ya más de 1 mes que no posteaba, mucho tiempo creo yo pero ya es suficiente como para retomar algunas cosillas.

Como resumen de éste tiempo he estado descansando, pasando las fiestas patrias tranquilamente con la familia y todo eso, estudiando un poco por aquí y por allá y probando algunas cosillas nuevas.

Primero que nada estuve leyendo el libro de Patrones de Diseño del GOF (Ganf of Four), me falta terminarlo todavía pero vamos bien. También le tuve que comprar de mi bolsillo más memoria para el Pc de la oficina ya que llevamos casi 1 año esperando que nos pongan memorias y las respuestas son casi siempre las mismas (vienen en camino, desde china y a pie parece) y con ésto ya le pude instalar el Visual Studio 2008 y he estado mirando algunas cosas como SilverLight y Robotics.

Me falta mirar todavía lo del MVC, LinQ, expresiones Lambda, Dynamics, JQuery, etc. pero pronto estaré metiendo las manos en todo ello.

Por otro lado ya mandé a pedir el libro para la siguiente certificación y  en este caso será la 70-431 (TS: Microsoft SQL Server 2005 – Implementation and Maintenance), decidí avanzar con la de Sql para reforzar mis conocimientos sobre su administración, en este caso trataré de sacarla lo antes posible (ojalá dentro de 1 mes) y posteriormente tengo ganas de sacar alguna de windows presentation foundation (WPF). El libro me debería llegar posiblemente ésta semana por lo que pronto estaré publicando más noticias al respecto.

Eso sería por ahora, saludos.

miércoles, 27 de agosto de 2008

Cursos Online de la MSDN

Hola, en esta ocasión vengo a comentarles que la MSDN está ofreciendo cursos en línea mediante presentaciones y videos sobre varios temas como SilverLight, introducción a C#, SQL Server 2005, SharePoint, SmartClients, etc.

Todo obviamente gratis y en español:

http://www.microsoft.com/spanish/msdn/spain/cursosonline.mspx

Que los disfruten, saludos !

jueves, 21 de agosto de 2008

Ya soy MCPD

No había escrito nada estos últimos días porque estaba calladito repasando para el examen del MCPD (Web) y haciendo hartas pruebas.

En un principio tenía pensado dar el examen éste viernes 22 pero no habían horas disponibles en la mañana así que decidí adelantarlo para hoy jueves y afortunadamente salió todo bien.

Como resumen muy corto del libro puedo comentar que me cambió la perspectiva de lo que tenía visto hasta ahora. Ya no son sólo conceptos técnicos y cómo usarlos, esto es un proceso de desarrollo completo desde la recepción de los requerimientos, su análisis, evaluación, documentación, selección y evaluación de alternativas para cumplir con los requerimientos, puesta en marcha del proceso de desarrollo, implantación e instalación y posterior soporte y mantenimiento de la aplicación.

Respecto al examen en sí éste consta de 40 preguntas y te dan 2 horas y media para completarlo, como siempre el tiempo es holgado pero las preguntas en ésta ocación fueron más orientadas a si las soluciones propuestas satisfacían los requerimientos indicados, también un poco de seguridad y acceso a datos.

¿Que se viene ahora? Pues yo creo que al menos una semana de descanso y de ahi ver con que sigo, en uno de mis posts anteriores planteé varias cosas que tengo pendientes por estudiar, es muy probable que las empieze a revisar ya con más calma o tal vez me dedique a sacar otra certificación entre las cuales podría ser la 70-529 (aplicaciones distribuidas) o la 70-526 (aplicaciones windows), también tengo pendiente sacar alguna de Sql Server 2005 ojalá, bueh el tiempo dirá por ahora sólo quiero descansar un poco.

Ahora puedo usar éste logo:

20061107_MCPD

Cualquier duda me comentan, saludos !

martes, 12 de agosto de 2008

Microsoft en las olimpíadas

Sólo unos pocos se habían dado cuenta de la prescencia de Microsoft en las olimpíadas pero como siempre hay gente con mucho tiempo libre para dedicarse a revisar hasta los más mínimos detalles de eventos como este.

Y como siempre nuestra querida amiga BSOD no quiso quedarse afuera de tan magno evento y realizó una visita fugaz a la inauguración de los juegos olímpicos (click en las fotos para agrandar):

BSOD

BSOD

BSOD

viernes, 8 de agosto de 2008

Compresión de contenidos vía Deflate o Gzip

Hola, en esta ocasión explicaré un poco este tema de cómo comprimir los contenidos generados por nuestras páginas.

El objetivo a lograr es reducir el peso del contenido HTML generado por nuestras páginas, de ésta forma se pretende aumentar la performance de nuestra aplicación al reducir los tiempos de espera usados para que se dibuje la página en el cliente y el transporte del contenido entre el cliente y el servidor sean menores.

Un beneficio directo de esta técnica es alivianar la carga existente para la red de la empresa si nuestra aplicación funciona sobre una intranet y en caso contrario (internet) mejorar el tiempo de descarga del contenido para los clientes. Otro beneficio indirecto es que se aprovecha la capacidad de los clientes al usar la descompresión automática de contenidos soportada por la mayoría de los clientes (browsers) actuales.

Desde la versión de IIS 6 en adelante es posible habilitar la compresión automática de contenidos, para habilitarla sobre el IIS 6 podemos ver el siguiente ejemplo en inglés:

http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/502ef631-3695-4616-b268-cbe7cf1351ce.mspx?mfr=true

Y también tenemos éste ejemplo en español:

http://www.mygnet.net/articulos/iis/comprimir_archivos_http_en_iis_6_dot_0.271

El problema viene cuando nuestro ambiente de producción no tiene habilitada la compresión automática de contenidos, esto puede pasar por diferentes razones como por ejemplo que en la misma máquina estén funcionando otras aplicaciones además de la nuestra y las otras aplicaciones no sean compatibles con ésta compresión de contenidos o también puede pasar que simplemente no tengamos acceso a las máquinas de producción.

Para revisar si nuestra aplicación en ambiente producción (suponiendo que es visible desde internet) tiene habilitada la compresión automática de contenidos podemos usar la siguiente aplicación donde pondremos la dirección de nuestra aplicación:

http://www.aspnetresources.com/tools/httpcompression.aspx

Si el resultado del análisis nos entrega lo siguiente:

Content type: UTF-8
Page size: 46,775 bytes
Served uncompressed

Significa que no está habilitada la compresión automática de contenidos por lo tanto podríamos intentar usar la compresión manual.

Para implementar la compresión manual de contenidos en ciertas páginas podemos hacer lo siguiente, primero crearemos un método que nos indicará si el cliente soporta la compresión, primero probaremos con el método deflate y luego con gzip, básicamente porque el método deflate se comporta mejor que gzip en cuanto a tiempo de respuesta:

/// <summary>
/// Determines if GZip is supported
/// </summary>
/// <returns></returns>
protected static bool IsGZipSupported()
{
    string AcceptEncoding = HttpContext.Current.Request.Headers["Accept-Encoding"];
    if (!string.IsNullOrEmpty(AcceptEncoding) &&
 (AcceptEncoding.Contains("deflate") || AcceptEncoding.Contains("gzip")))
return true;
    return false;
}

Como ya tenemos el método que nos indicará si la compresión es soportada a continuación creamos el método que usaremos para realizar la compresión propiamente tal:


/// <summary>
/// Sets up the current page or handler to use GZip through a Response.Filter
/// IMPORTANT: 
/// You have to call this method before any output is generated!
/// </summary>
protected static void GZipEncodePage()
{
    if (IsGZipSupported())
    {
        HttpResponse Response = HttpContext.Current.Response;
 
        string AcceptEncoding = HttpContext.Current.Request.Headers["Accept-Encoding"];
        if (AcceptEncoding.Contains("deflate"))
        {
            Response.Filter = new System.IO.Compression.DeflateStream(Response.Filter,
                                      System.IO.Compression.CompressionMode.Compress);
            Response.AppendHeader("Content-Encoding", "deflate");
        }
        else
        {
            Response.Filter = new System.IO.Compression.GZipStream(Response.Filter,
                                      System.IO.Compression.CompressionMode.Compress);
            Response.AppendHeader("Content-Encoding", "gzip");
        }
    }
}

Lo ideal es tener este par de métodos en alguna clase base o de utilitarios de manera que podamos invocarlos de la forma más fácil que podamos, en éste caso ambos métodos los puse en una clase base y como son estáticos basta con llamar al método que realiza la compresión en el Page_Load de la página donde lo vamos a usar:


protected void Page_Load(object sender, EventArgs e)
{
    GZipEncodePage();
if (!IsPostBack)
    {

Como restricción para usar esta técnica es que debemos usar la llamada al método de compresión (en nuestro caso GZipEncodePage) en la primera línea del método Page_Load de la página donde lo usemos.

Una buena razón para usar la compresión manual es que podremos realizar una compresión selectiva de las páginas a las que queremos aplicarles compresión.

Debemos considerar que el uso de compresión crea un consumo extra de tiempo de CPU a la hora de usar ésta técnica aunque es mínimo y realizado por el cliente si es que lo soporta, por lo tanto lo ideal es implementar la compresión en aquellas páginas que consideremos como buenas candidatas para ésta técnica, un buen ejemplo son aquellas páginas que generan mucho contenido HTML.

Para ejemplificar mejor lo que podremos conseguir con ésta técnica podemos ver a continuación una página de ejemplo sin la compresión habilitada:

Prueba_Gzip-antes-mini

Como podemos ver el contenido HTML de la página es de 54.6K con un tiempo de respuesta de 12.04s.

Ahora veremos los resultados de la misma página pero con la compresión habilitada:

Prueba_Gzip-despues-mini

Como podemos ver pasamos de 54.6K a 13.2K de contenido HTML con un considerable ahorro de datos transportados entre el cliente y el servidor y aún mejor el tiempo de respuesta que bajó de 12.04s a 5.917s, si imaginamos resultados similares con muchos clientes concurrentes podemos hacernos una idea de las mejoras que podremos obtener con nuestra aplicación.

Como mencioné anteriormente si ésta técnica es bien usada donde corresponde puede ayudar a alivianar un poco la carga de datos entre el cliente y el servidor pero no debe ser interpretada como una fórmula mágica.

Como referencia usé este artículo de Rick Strahl (MVP):

http://www.west-wind.com/weblog/posts/10564.aspx

Ojalá les sirva, saludos.


Pd.: Sorry por el código si se ve mal formateado.

lunes, 4 de agosto de 2008

Cursos sobre el FW .Net 2.0 y SQL 2005 gratuitos para estudiantes

Para los que sean estudiantes y estén pensando sacar alguna certificación relacionada con el FrameWork 2.0 de .Net y/o con SQL Server 2005 les comento que Microsoft con su programa Student Partners está ofreciendo una serie de cursos y workshops gratuitos.

Los cursos están orientados a los siguientes 5 ámbitos:

  • Windows Developer
  • Web Developer
  • Database Developer
  • Windows Server IT Professional
  • Windows Client IT Professional

Se ven bastante buenos especialmente los workshops sobre web ya que según la lista me parecen muy similares a lo que tuve que estudiar para el examen 70-528.

Link: Microsoft Student Partners – LATAM

Fuente de la noticia: Blog de Jesús Gonzales

jueves, 31 de julio de 2008

¿Alcanza el tiempo para estudiar todo?

Esta es la pregunta que me vengo haciendo hace tiempo casi todos los días.

Mientras me preparo para sacar mi siguiente certificación (que por cierto va bastante bien: capítulo 8 de 17 y hasta el momento sigo encantado con el libro) siempre voy leyendo otras cosillas en mis tiempos de compilación y en mis ratos libres en la casa y por lo general voy juntando materiales con cosas que más adelante intentaré leer con más calma (videos, presentaciones, textos, blogs, libros en pdf o chm, etc.).

Normalmente cada cierto tiempo m¿Que estudiar?e voy dando cuenta que la carpeta de documentos y videos guardados sigue y sigue creciendo sin parar mientras trato de darle una pincelada a cada cosa que pillo por ahi para no quedar tan perdido si alguien me pregunta sobre un tema o tecnología específica y finalmente me termino sintiendo un poco agobiado al darme cuenta que mientras más trato de aprender más cosas me van faltando o voy dejando pendientes.

Es complicado el tema de tratar de distribuir el tiempo libre si tienes una familia y un trabajo que no puedes dejar de lado cuando se te dé la gana, menos aún cuando nadie más que tu mismo eres el que te motiva a estudiar.

Bueno, para no desviarme tanto del tema en cuestión quiero hacer una lista de temas que me gustaría leer y profundizar más apenas termine con mi actual certificación (o entremedio si se puede), para hacerlo más fácil separaré la lista en temas con prioridad y otros no tan urgentes según mi criterio:

Temas prioritarios

  • Framework 3.0 y 3.5
  • Terminar algunos materiales que dejé a medias sobre patrones de diseño, metodologías de desarrollo, estimaciones de tiempo y cosas sobre arquitectura de aplicaciones
  • Posiblemente sacar las certificaciones 70-526 y 70-529
  • También me gustaría tratar de sacar alguna certificación sobre SQL 2005
  • WPF (windows presentation foundation), WCF (windows communication foundation), WWF (windows workflow foundation), Linq, SilverLight
  • MVC (model view controller)

Temas no tan prioritarios pero interesantes

  • Mono (.Net para Linux)
  • jQuery, JSon, últimas versiones de Ajax
  • IronPython, IronRuby, Java, además de cómo montar apache sobre Ubuntu con Postgre o MySql
  • Microsoft Dynamics (incluyendo mobile y AX)
  • NHibernate y otros ORM’s
  • Test Units y mejoras al proceso de pruebas
  • Microsoft Robotics
  • Entity Framework
  • Sharepoint, Biztalk
  • Virtualización de máquinas
  • XNA

Creo que es una buena lista, sacando cuentas el abanico de posibilidades es enorme y con mucho potencial, muchas mezclas tal vez entre tecnologías y metodologías pero allí están las cosas que me andan dando vuelta en la cabeza normalmente mientras se van llenando mis discos duros con información a la que tal vez ni siquiera valga la pena dedicarle tiempo, sin duda en alguna de ellas estaré metido en los próximos meses.

Y a ti, ¿te alcanza el tiempo?

Saludos.

viernes, 25 de julio de 2008

Windows Live SkyDrive

Si, ya se que es medio antiguo a estas alturas, pero recién hoy lo vine a probar y me gustó bastante.

SkyDrive es a modo resumido un espacio personalizado para subir tus documentos, fotos, videos, pornografía, etc., cuenta con un espacio de 5Gb completamente gratuitos y la gracia es que integra automáticamente con tu cuenta de Windows Live, de ésta forma te evitas tener que estar registrándote y todo eso.

La otra ventaja es que por defecto viene pre-personalizado con 3 tipos de carpetas las cuales se dividen en carpetas personales donde sólo tu tienes acceso, las carpetas compartidas donde puedes compartir archivos con quienes tu quieras y las carpetas públicas donde cualquier persona puede ver su contenido.

Click para agrandar

Ojalá les sirva, saludos !

miércoles, 23 de julio de 2008

Registra tu dominio gratis por 1 año

Esto es un poco off-topic pero creo que es una buena oportunidad para quienes quieran registrar su dominio completamente gratis por 1 año.

El registro es un poco complicado pero funciona:

http://indycarrewards.com/


Ahora pueden ver mi blog directamente en:
http://www.darkspy1976.com/

Edit: Ya no funciona, parece que sólo era una estrategia comercial :(