Google Closure: nueva librería Javascript hecha por Google

November 9th, 2009 § 0

Google Closure es una nueva libreria javascript la cual google ha hecho Open source hace unos dias. Esta es la misma libreria que se ha utilizado en aplicacion con javascript intensivo tales como Gmail o Google Docs. La libreria esta compuesta por 3 componentes basicos:

Closure compiler
Este es un optimizador de javascript el cual minifica (reduce el tamanio del archivo de javascript) y optimiza los archivos javascript para que se ejecuten lo mas rapido posible en todos los navegadores. Tambien cheque la sintaxis y advierte de errores en el codigo.

Closure Library
Google comenta que a diferencia de otros lenguajes como C++ y Java que tienen sus propios SDK’s o Librerias, Javascript no cuenta con una y ese es el objetivo de Closure Library, servir como una libreria Standard para Javascript.

Closure Templates
Este es un sistema de plantillas pre-compilado, segun Google funciona tanto en Java como en Javascript.

La librería la pueden obtener por medio de subversion.

Post office de Google

Tip: Como usar un enum como datasource en C# y ASP.NET

November 7th, 2009 § 0

Hace poco tuve un problema en el que mi aplicacion utilizaba un enum, y tenia un metodo que recibia un parametro del mismo tipo que el enum, pero el problema era es que necesitaba que elusuario seleccionara en un combobox el enum y luego eso se pasaba como parametro a mi metodo. Basicamente lo que hice fue utilizar el enum para generar los items del combobox. A continuacion les voy enseniar como resolvi mi problema.

Bueno empezemos por crear el enum:

public enum TipoReporte
{
Departamento,
Empresa,
UbicacionGeografica,
CentroDeCosto
}

Este enum representa el tipo de filtro para aplicar al reporte. Ahora agreguemos un Drop Down List a nuestro Web Form, y cargamos los items del enum de la siguiente manera:

if (!IsPostBack)
{
DropDownList1.DataSource = Enum.GetNames(typeof (TipoReporte));
DropDownList1.DataBind();
}

Lo pueden agregar en el evento pageLoad si quieren.

Ahora vamos a crear nuestra funcion para comprobar el enum que se selecciono:

private void PrintEnum(TipoReporte tipoReporte)
{
switch (tipoReporte)
{
case TipoReporte.CentroDeCosto:
Response.Write(”Centro de costo”);
break;
case TipoReporte.Departamento:
Response.Write(”Departamento”);
break;
case TipoReporte.Empresa:
Response.Write(”Empresa”);
break;
}
}

Ahora en el evento SelectedIndexChanged de nuestro Drop Down List agregamos lo siguiente:

PrintEnum((TipoReporte) Enum.Parse(typeof(TipoReporte),DropDownList1.SelectedValue));

Explicacion
Este codigo se ve un poco complejo pero es sencillo en realidad. Lo primero que hacemos es utilizar la funcion Enum.Parse para convertir el SelectedValue del dropdownlist a un objeto. La funcion Enum.Parse lleva como primer parametro el tipo del Enum al que queremos convertir el string, y como segundo parametro el string. Esta funcion nos devuelve un objeto del tipo Object, ahora como nuestra funcion acepta un objeto del tipo de nuestro enum, el cual es TipoReporte, tenemos que hacer un case, esto lo hacemos usando “(TipoReporte)” y asi llamamos nuestra funcion.

7 Plugins indispensables para wordpress

November 3rd, 2009 § 0

Esta es una recopilación de los mejores plugins que conozco para wordpress, todos los utilizo en este blog. Yo se que hay listas con mas cantidad de plugins pero mi objetivo es hacer una lista de plugins que estoy seguro que desearan instalar.

All in One SEO

Si de verdad quieres ser indexados por Google u otros buscadores este plugin tienen que tenerlo instalado. Mejora el SEO de todo su blog pero lo mas importante es que se deshace de los titulos de paginas duplicados con los cuales el wordpress viene por defecto. Los titulos (el tag <title>) son muy importantes para el ranking de los buscadores ya que si su sitio tiene muchas paginas con el mismo titulo serán penalizados en el ranking.

XML Sitemap

Este es otro plugin para SEO, sirve para poder enviar un sitemap de su sitio en formato XML a los buscadores, esto hace que la indexacion de los navegadores para su sitio sea mucho mas rápida. Otra ventaja de este plugin es que cada ves que vayan agregando posts o paginas automáticamente envía el sitemap a los buscadores mas comunes(yahoo, bing, google) para que se indexen las nuevas paginas.

Wordpress Database Backup

Este plugin sirve para hacer respaldos automáticos de la base de datos de wordpress. También es de mucha utilidad si quieren hacer una copia local de su blog, ya que facilita la exportación de la base de datos.

Yet Another Related Post Plugin

Cuando alguien llega a nuestro blog por primera ves lo que menos queremos es que se vaya, este plugin nos ayuda a lograr eso mostrando al final de cada posts otros posts relacionados al que acaba de leer el usuario. Créanme que funciono, aumenta las paginas vistas del blog en un 20%.

Wassup

Este plugin es para ver estadisticas bastante detalladas, yo me he vuelto adicto a ver todas las estadisticas que este plugin muestra. Si quieren ir viendo detalladamente el crecimiento de su blog no pueden dejar de instalar este plugin.

Wordpress.com Stats

Este es otro plugins para stats, es un poco diferente wassup en que ensenia estadisticas de otros tipos, es bastante util tambien.

AdSense Manager

Si quieren poner anuncios en su blog utilizando Adsense este plugin les va hacer la vida mas facil, es bastante simple de utilizar tambien.

Ejercicios de programación: Project Euler

November 2nd, 2009 § 0

Project Euler es un proyecto cuyo propósito es recopilar una gran cantidad de ejercicios matemáticos y de programación, el objetivo es que los problemas sean resueltos usando programación aunque hay distintos tipos de problemas. Hasta ahorita hay 262 problemas, y se puede ver cuantas personas han resuelto cada problema, los problemas mas difíciles solo han sido resueltos por menos de 1000 personas mientras que los mas fáciles por mas de 50000. La solución puede ser programada en su lenguaje favorito. Aqui esta el link a la pagina.

ASP.NET MVC es el futuro de ASP.NET

October 30th, 2009 § 0

Quiero expresar mi frustración sobre lo ciego que estan la mayoria de programadores en latinoamerica. Mis respetos hacia aquellos que si se mantienen actualizados. Probablemente es debido al sistema educativo o a nuestra cultura pero por alguna razon nos tardamos tanto en adoptar nuevas tecnologias, puede ser el idioma tambien, la verdad en mi pais casi todos hablan ingles y por eso no lo veo como un obstaculo.

Quiero hacer énfasis en una nueva tecnología de Microsoft llamada ASP.NET MVC de la cual ya hay un tutorial en este sitio. En lo personal creo que Microsoft ha dado un gran paso al desarrollar este framework. Por ahi decian que microsoft al fin entiende como debe ser el desarrollo web.

Este framework en parte ha sido inspirado por Ruby on Rails, otra tecnologia relativamente nueva que esta tomando un gran auge, y que almenos en mi pais no se ensenia en ninguna universidad, es mas yo creo que el 90% de los profesionales de IT no sabe que es, y el 99% nunca lo ha usado. Estos dos frameworks son el futuro de la web, agilizan el desarrollo tanto, y lo simplifican a la ves.

Muchos programadores tienen miedo de probar cosas nuevas pero los invito a aprender al menos alguno de estos dos frameworks, una ves los entiendan no se van arrepentir, obviamente no es tan facil de aprender ya que utilizan paradigmas de programacion que son unicos de la Web, y hasta ahora, no eran muy comunes, aunque han estado en Java desde hace mucho.

Tengo planes de publicar tutoriales de Rails en el sitio ya que no me gusta apegarme demasiado a Microsoft.

Tutorial de ASP.NET MVC

October 25th, 2009 § 1

Que es ASP.NET MVC?

ASP.NET MVC es un nuevo framework creado por Microsoft, las siglas MVC provienen del patrón de diseño llamado MVC, el cual quiere decir Model View Controller. Las bases de este framework están, hasta cierto punto, basadas en Rails (Ruby on Rails), el cual es un framework para Ruby bastante popular por su sencillez y total control sobre el código HTML que se genera.

En mi opinion, ASP.NET MVC  es el futuro de ASP.NET, tiene varias ventajas sobre ASP.NET clasico entre las cuales podemos mencionar:

  • No hay viewstate
  • Control total sobre el HTML
  • Facilidad para implementar pruebas unitarios e inyeccion de dependencias.
  • Completamente basado en el patron MVC

Una ves lo entiendan se van a dar cuenta de lo sencillo que es, el problema a veces es que no es tan facil entenderlo, espero que este tutorial los ayude a lograrlo.

Paso 1. Descargar e instalar ASP.NET MVC

NOTA: NECESITAN TENER YA INSTALADOR VISUAL STUDIO, PUEDEN DESCARGAR LA VERSION EXPRESS AQUI.
Como uno de los requisitos es necesario tener instalado el framework 3.5 con el Service Pack 1. El framework de ASP.NET MVC lo pueden descargar aquí.

Paso 2. Creando un nuevo proyecto

Creamos un nuevo proyecto del tipo ASP.NET MVC Web Aplicación. Tomen en cuenta que para crear proyectos ASP.NET MVC no seleccionamos “Nuevo sitio web” como es en el caso de las aplicaciones ASP.NET normales, si no que seleccionamos “Nuevo Proyecto”.

image

Al crear el proyecto notaran que nos crea una estructura de folders automáticamente.

Sobre la estructura de folders de ASP.NET MVC

Como se abran dado cuenta, se creo una estructura de folders automáticamente.

La carpeta “Content” es para guardar imágenes, archivos css, u otro tipo de archivos.
La carpeta “Controllers” es para guardar los controladores.
La carpeta “Views” es para guardar las vistas.
La carpeta “Models” es para guardar nuestras clases, generalmente, la de acceso a datos.
La carpeta “Scripts” contiene nuestros archivos de javascript, como podrán ver, ya viene incluido jQuery.

Paso 3. Creando un controlador

Vamos a crear un controlador para nuestra aplicación llamado “MiControlador”, para hacer eso, hacemos clic derecho sobre la carpeta “Controllers” y luego seleccionamos Add->Controller o (Agregar->Controller) y aparecerá esta ventana

image

Como podrán notar automáticamente nos agrega el sufijo “Controller” al nombre del controlador. Por el momento no chequeen la casilla para agregar los action methods.

Este es el resultado:

image

El solo nos agrega la Acción “Index”. Se acuerdan que les mencione que cada controlador esta compuesto por varias acciones? bueno la acción Index es la que se llama por defecto si no se especifica ninguna acción.

La única línea de código de la acción “Index” (return View()) como podrán ver retorna una vista. La función View es una funciona de la clase Controller, de la cual hereda nuestro controlador, se utiliza para poder desplegar la vista después de que mi acción realiza lo que quiero que haga. Cuando la función View no lleva ningún parámetro, la función busca automáticamente una vista que tenga el mismo nombre de mi acción y retorna esa vista, en cualquier otro caso, podemos mandar como parámetro el nombre de la vista que deseamos mostrar.

Paso 4. Agregando una nueva acción

Bueno vamos agregar nuestra querida acción  llamada “Saludar”, generalmente las acciones llevan nombres de verbo, no es obligación que sea así pero así debería de ser. Este es el código e nuestra acción:

public ActionResult Saludar()
{
ViewData["Mensaje"] = “Hola ASP.NET MVC”;
return View();
}

Sobre la línea que ven que dicen ViewData: el viewdata se utiliza para enviar información a nuestra vista, esta no es la única forma de hacer esto y generalmente no se usa mucho, dentro de poco les voy enseñar el otro método.

Paso 5. Creando nuestra vista

Bueno ahora que ya tenemos nuestra acción solo nos queda agregar nuestra vista.
Para hacer eso solo hagan clic dentro de la función “Saludar” y luego seleccione “Add View”
image

Dejamos todo como esta y hacemos clic en Addimage

Ahora dentro de nuestra vista agregamos esta línea:

<h1><%= ViewData["Mensaje"] %></h1>

Se acuerdan del ViewData que agregamos en nuestro controlador? este es el mismo, como les mencione, cualquier objeto que pasemos a traves del viewdata lo podemos accesar desde nuestra vista.

Para que quede así:

image

Y por el momento esto es todo, quiero que se familiaricen con el concepto del Patrón MVC, para luego poner tutoriales mas avanzados, voy escribir una parte donde donde vamos a usar una herramienta ORM para accesar a la base de datos.

Ahora podemos correr nuestra aplicación presionando CTRL+F5. Cuando corran la aplicación los va llevar al Home, para ir a nuestro controlador modifiquen la dirección para que quede así:

image

Reemplacen el numero de puerto por su numero de puerto. Este debería de ser el resultado:

image

Ultimas palabras

Haciendo un repaso de lo que hicimos y tratando de resolver dudas, recorramos el tutorial otra ves.

Lo primero que hicimos fue crear el Controlador, con una acción que se llama “Saludar”, para llamar esta acción accedamos a la URL http://localhost:897/Hola/Saludar, el esquema por defecto para accesar acciones es:

image

Así que “Hola” es el nombre del controlador y “Saludar” es la acción que quiero ejecutar.

Luego agregamos una vista, automáticamente al agregar una vista, se crea en la carpeta de “Views” que vimos al comienzo en la estructura, a la misma vez, dentro de la carpeta “Views” se creo una nueva carpeta con el nombre de nuestro controlador, “Hola”, y dentro de esta carpeta se guardo la vista que creamos.

En un tiempo voy a publicar una parte 2 donde vamos a usar una herramienta ORM para accesar nuestra base de datos, y vamos a usar la función de scaffolding de ASP.NET MVC para generar los mantenimientos automáticamente.

Convertir codigo C# a VB y viceversa

October 25th, 2009 § 0

Telerik tiene una pagina donde pueden convertir codigo de C# a VB o viceversa facilmente, yo rara ves he tenido que hacer esto pero para cuando les toque a ustedes aqui esta la pagina.

Con que funciona YouTube

October 23rd, 2009 § 0

Youtube es el 4 sitio mas visitado del mundo, dicho esto, YouTube necesita tener una infraestructura muy avanzada para poder servir todas las millones de peticiones que recibe cada dia, en este articulo voy a describir algunas de las tecnologias que utiliza Youtube para lograr esto.

El stack de aplicaciones de youtube esta formado completamente por programas open source:

Apache como servidor Web
Python como lenguaje de programacion
Psyco para mejor el rendimiento de python
LightHttpd para los videos
Linux (Varias distribuciones)  como sistema operativo
MySQL como base de datos
Google FileSystem
Google Big Table

Obviamente es mas que seguro que todos estos programas estan modificados para mejor el rendimiento.

Como ustedes ya sabran, Python es un lenguaje interpretado, es decir no se compila, los lenguajes interpretados son mucho mas lentos que los compilados, para contrarestar esta desventaja los arquitectos de youtube decidieron utilizar Psyco, el cual es un programa que compila a codigo C los programas Python.

El MySQL esta completamente modifcado. Usan un esquema de particionado de tablas y computacion distribuida para poder completar las peticiones, aparte de esto tambien usa Google FileSystem.

Por si nunca han oido de Lighthttpd, es un servidor web ligero, como su nombre lo dice, y sencillo, para evitar la sobrecarga de apache, este se utiliza para servir los videos.

Google BigTable es una base de datos porpietaria de Google de la que no se sabe mucho, hay rumores de que no es relacional.

Por ultimo, el MySQL usa un engine personalizado y corre bajo el sistema de archivos propietario de Google.

El Patron MVC (Modelo Vista Controlador)

October 23rd, 2009 § 1

Que es MVC?

El patron MVC es una tecnica de desarrollo que se usa bastante en la mayoria de los frameworks de desarrollo web actuales, ya sea en PHP, .NET, JAVA, Python o Ruby, todos estos lenguajes tienen frameworks que usan este patron. Si quieren ejemplos son:

PHP

CakePHP
Code igniter
Zend Framework

ASP.Net

ASP.NET MVC
Castle

JAVA

Spring
Java Server Faces
Struts

Ruby

Rails

Python

Django

Bueno esto solo era por curiosidad por si quieren investigar alguno, regresando el punto, el patron MVC consiste en dividir nuestra aplicacion en 3 capas principales, las cuales son Modelo, Vista y Controlador.

Modelo

El modelo se refiere al modelo de datos, generalmente se generar con una herramienta ORM http://es.wikipedia.org/wiki/ORM) y es un conjunto de clases que vamos a utilizar para comunicarnos con nuestra base de datos. En algunos casos se usa otro tipo de modelos, un modelo puede ser cualquier clase que utilice nuestra aplicacion, no necesariamente tiene que ser una clase de acceso a datos.

Vista

La vista es la capa de la aplicacion que ve el usuario, en otras palabras, es nuestra interfase grafica. En el ejemplo de una pagina web, nuestra vista seria el documento HTML que se le generar al usuario.

Controlador

El controlador es la capa que controla todo lo que puede realizar nuestra aplicacion, y esta compuesto por acciones que se representan con funciones en una clase. Por ejemplo, yo tengo mi controlador llamado “Clientes”, y este controlador puede realizar las acciones “Crear”,”Editar”,”Listar” entre otras. Se podria decir que el controlador es lo que comunica los modelos con las vistas

La popularidad de este disenio se debe mas que todo a que es mucho mas facil organizar aplicaciones grandes.

Caso Practico

Probablemente ahorita no entienda muy bien como funciona el modelo, la verdad a mi me paso lo mismo, hasta que lo vi en la practica utilizando ASP.NET MVC. Voy a tratar de explicarles mejor sin tener que llegar a un ejemplo practico (el ejemplo practico sera en otro post).

Ejemplo de la vida real

Modelo

Un ejemplo de la vida real de un modelo seria una clase llamda Cliente, la cual tiene las mismas propiedades de una tabla cliente en mi base de datos

Controlador

Un controlador seria el Controlador Cliente, generalmente las clases Controladoras llevan el sufijo “Controlador”, asi que en nuestro caso se llamaria ClientesControlador.

El controlador llevaria las acciones que nosotros podemos realizar en un cliente como por ejemplo, agregar, borrar, modificar,agregarorden, etc.

Vista

La vista es el mas facil de entender, simplemente es nuestra pagina html. A traves de la accion de nuestro controlador nosotros especificamos a que vista queremos enviar el resultado de la accion de nuestro controlador. En algunos casos es necesario pasar informacion a nuestra vista desde nuestro controlador, esto se logra facilmente en el codigo de la accion.

Pack de iconos para usar en sus sistemas

October 19th, 2009 § 0

Unos buenos iconos dentro de sus grids van hacer que se vea mejor todo el sistema. Este pack iconos incluye varios iconos que pueden utilizar en sus grids, en ves de utilizar botones o texto para las acciones de editar,borrar o actualizar. Se los recomiendo, van hacer que todo se vea mejor. Aqui les dejo la direccion http://www.monofactor.com/free-vector-icon-set-1-25-icons/. Son gratis.