Como crear una URL canonica en ISS 7

by ryudice on August 7, 2011

Una url canonica quiere decir que su sitio solo puede ser accedido por una URL, ya sea www.susitio.com o nada mas susitio.com, este ultimo se supone que es el preferido por ser mas corto y mas facil de recordar. Por lo normal las paginas pueden ser accedidas por las dos url mencionadas, y se supone que esto es un problema para el SEO de su sitio ya que google lo puede ver como contenido duplicado y pueden ser penalizados en el ranking de su sitio, esto es porque google le da un ranking a cada subdominio, y www es un subdominio, por lo que google piensa que es un sitio distinto. Para solucionar este problema lo que se hace es un redirect permanent (codigo 301 en los codigos HTTP) cada ves que alguien acceda a su sitio usando www de esta manera el robot de google va entender que el www.susitio.com ha sido movido permanentemente a susitio.com y va dejar de escanear la URL que empieza con www.

Como hacerlo en IIS

Bueno regresando al punto del post, hay una manera facil de hacer esto en IIS 7 solo que necesitan tener el modulo de URL Rewrite instalado. Lo pueden instalar usando el Microsoft Web Platform Installer.

image

En la imagen puede ver cual es.

Ya una ves instalado solo es cuestion de agregar una entrada al web.config, dentro del tag de system.webserver:

 <rewrite>
          <rules>
              <rule stopprocessing="true" name="Enforce canonical hostname">
                  <match url="(.*)" />
                  <conditions>
                      <add pattern="^www\.susitio\.com$" negate="false" input="{HTTP_HOST}" />
                  </conditions>
                  <action url="http://susitio.com/{R:1}" redirecttype="Permanent" type="Redirect" />
              </rule>
          </rules>
      </rewrite>

Si quieren modificar la regla lo pueden hacer dentro del IIS tambien aqui:

image

{ 0 comments }

Libro gratis de programacion de Windows Phone 7

by ryudice on November 14, 2010

image

Microsoft ha sacado gratis uno de sus libros de Microsoft Press de Desarrollo para Windows Phone 7. El titulo del libro es Programming Windows Phone 7.

Descarguenlo aqui.

{ 1 comment }

Introducción a la Inyección de Dependencias

by ryudice on November 7, 2010

La inyección de dependencias, también conocida como IoC o Inversion of control, es un patrón de diseño que busca facilitar el mantenimiento de aplicaciones muy grandes dividiendo toda la aplicación en componentes separados, de tal manera que ningún otro componente sabe de la implementación concreta del otro ya que todo se hace por medio de interfaces. Forma parte del concepto de “Loose coupling” el cual consiste en que cada componente solo debe conocer la implementación abstracta de otros componentes que utilice, esto se logra usando Interfaces, de esta manera los componentes no dependen de la implementación concreta de otros componentes, ya que siempre y cuando el componente implemente la interface, podrá ser inyectado a través del contenedor de dependencias.

El contenedor de dependencias

También le dicen Kernel en algunos frameworks, y se refiere a la clase que maneja la instanciación de clases e inyección de los componentes en el constructor o a través de propiedades. Uno de los mas populares es Structuremap, pero también esta Ninject que también es bastante conocido. Voy a tratar de darles un ejemplo de en que consiste la inyección de dependencias.

La siguiente clase no utiliza el principio de Loose coupling ni inyección de dependencias:

    public class MailerService
    {
        private MembershipService _membershipService;
        private UsersManager _usersManager;
 
        public MailerService()
        {
            _membershipService = new MembershipService();
            _usersManager = new UsersManager();
        }
    }

Por que no usa inyección de dependencias ni Loose coupling? Como podrán ver, al crear instancias de mi clases para empezar que el tipo de mi variable es el tipo concreto, es decir MembershipService, al hacer esto prácticamente estamos diciendo que lo que se almacene en esa variable tiene que ser de ese tipo y ahí estamos usnado tight coupling, porque nuestro componente no puede cambiar, si en el futuro nosotros deseamos cambiar la implementación de nuestra clase tenemos que ir a cambiar a todas las clases donde instanciamos este objeto por nuestro nuevo tipo de objeto, digamos que en el futuro nuestro componente MembershipService será reemplazada por otro que se llame OracleMembershipService, esto implicaría ir a cambiar la instanciación en todas las clases lo cual aumenta el mantenimiento y también los bugs que pueden salir como resultado del cambio, ahora vamos esta misma clase pero inyectada:

 public class MailerService : IMailerService
    {
        private readonly IMembershipService _membershipService;
        private readonly IUsersManager _usersManager;
 
 
        public MailerService(IMembershipService membershipService, IUsersManager usersManager )
        {
            _membershipService = membershipService;
            _usersManager = usersManager;
        }
    }

El mayor cambio es que ahora usamos interfaces en ves de implementación concretas de nuestros objetos, las cuales pasamos a través del constructor. El contener de inyección de dependencias se encarga de inyecta al constructor las implementaciones concretas que nosotros definamos. En este caso si nosotros queremos cambiar la implementación concreta de MembershipService, solo creamos una nueva clase que implemente nuestra interfase IMemebershipService y cambiar la configuración de contenedor de dependencias para que utilice la nueva clase al inyectar.

Para poder inyectar automáticamente las dependencias la instanciación de nuestra clase deberá hacerse utilizando el contenedor de dependencas, por ejemplo con structuremap se hace de la siguiente manera:

IMailerService mailerService = ObjectFactory.GetInstaces<IMailerService>();

La clase mailerService resultante es inyectada automáticamente con la implementación concreta definidas en la configuración de structuremap.

En otro post voy hablar específicamente de structuremap y como configurarlo, por el momento espero que hayan entendí sobre este patrón. Tengan en consideración no es necesario que en cualquier aplicación utilicen inyección de dependencias, como les mencione es un patrón de disenio que se utiliza en aplicaciones muy grandes para facilitar el mantenimiento de estas, utilizarlo en un proyecto pequeño no tiene ningún o poco beneficio.

La inyección de dependencias también sirve para utilizar TDD(Test driven development), ya que todo el código es completamente testeable, esto también es tema para otro post.

{ 0 comments }

Como inyectar jQuery en cualquier pagina

by ryudice on November 5, 2010

Estaba desarrollando un script de greasemonkey que modifica la pagina del banco agricola, y necesitaba utilizar jQuery para hacer unas pruebas pero la pagina del banco no utiliza jQuery asi que no podia usar la consola del firebug para ejecutar la funcion de jQuery, al buscar un poco en google encontré este bookmarklet para poder insertar jQuery en cualquier pagina, para usarlo solo arrastren el link de abajo a su barra de favoritos y hagan clic en el en cualquier pagina a la que le quieran inyectar jQuery.

jQuerify

Tambien existe un plugin de Firebug en el que se pueden utilizar selectores de CSS para halllar elementos en el DOM, se llama FireFinder.

Vean el video para un ejemplo:

{ 0 comments }

Entrena tu cerebro con Lumosity

by ryudice on October 21, 2010

Hace poco descubri esta pagina y la verdad estaba un poco esceptico, sin embargo lo quiero compartir en este post porque de verdad funciona. Lumosity es un experimento que termino siendo una aplicacion web creada por  cientificos de stanford y otras universidades reconocidas, expertos en ciencia cognitiva. Lumosity es un sitio web que contiene varios ejercicios diseniados para aumentar la capacidad de tu cerebro en ciertas areas como solucion de problemas, atencion, flexibilidad, tiempo de reaccion y un par mas. Esta misma pagina la usa el ejercito de estados unidos para tratar a los soldados con PTSD, eso dice la pagina pero la verdad al probar los ejecicios creo que es verdad, tambien tiene una aplicacion para iPhone que es con la que yo me inicie, pero no tiene tantos ejercicios como la pagina.

Algunos ejercicios son gratis y creo que hay una modalidad de trial, aprovechenla y vean los resultados, desfortunadamente los demas ejercicios son pagados y la suscripcion no es tan barata, vale 16 dolares mensuales si quieren pagar mes por mes y si pagan todo un anio de un solo vale 6 por mes. Yo no la he pagado pero para serles sincero lo estoy considerando porque siento que funcionan. Los ejecicios tienen efectos parecidos a los que experimentarian si practicaran la meditacion constantemente pero es mucho mas facil con los juegos de la pagina, yo a veces paso una hora jugando sin darme cuenta.

Otra caracteristica interesante es que pueden compararse con otros usuarios de lumosity para ver que tan desarrollados estan en cada una de las areas que comprenden los ejercicios.

Visitar Lumosity.com

{ 1 comment }

NuPack: Gestion de dependencias en .NET

by ryudice on October 16, 2010

No saben con cuanta alegría escribo este post ahora que al fin .NET tiene lo que Java ha tenido por mucho tiempo, un buen administrador de dependencias, en el caso de Java este es Maven, y en .Net ahora es NuPack, creado directamente por Microsoft y lanzado como open source en codeplex.

Es un dolor de cabeza estar administrando las dependencias de un proyecto a mano y no tener un repositorio donde almacenar las librerias. Si no saben que es una dependencia, es cualquier librería que una aplicación necesita para ejecutarse, por ejemplo, una aplicación que utiliza NHibernate tiene una dependencia sobre NHibernate, asimismo cualquier otro DLL que su aplicación necesite es una dependencia. Estar administrando esto es un dolor de cabeza en entornos donde varios programadores trabajan un solo proyecto porque se crea un desorden entre las versiones que cada desarrollador tiene y aparte de eso cada ves que se incorpora un desarrollador nuevo al equipo hay que estarle pasando las librerías.

Con NuPack todas las dependencias de un proyecto se guardan en un repositorio de dependencias y son descargadas automáticamente por el administrador de dependencias, en este caso NuPack, de esta manera todos los programadores tienen la misma versión y no hay que estar creando carpetas "lib” para guardar todas las librerías.

Aparte de descargar las librerías también las configura, por ejemplo en el blog post original Scott Hanselman muestra como NuPack descarga y configura automáticamente ELMAH, una librería para logeo de errores en ASP.NET la cual es bastante tediosa de incorporar, pero NuPack hace todo el trabajo por nosotros.

NuPack es una extensión que desafortunadamente solo esta disponible para Visual Studio 2010, del cual pueden bajar una demo de 60 dias si gustan.

Definitvamente Microsoft esta tomando el camino correcto con ASP.NET MVC 3 y NuPack.

Descargar NuPack

Como usar NuPack

Bueno existen dos formas de usarlo, yo les voy a mostrar la fácil (la que no requiere estar escribiendo comandos de consola). La fácil es hacer clic derecho sobre nuestro proyecto en el explorador de soluciones:

image

Y luego hacer clic en “Add Package Reference” para obtener la siguiente ventana:

 image

En esta ventana pueden ver todas las librerias que se encuentran en el repositorio principal de NuPack, pueden encontrar las librerias mas conocidas como NHibernate, StructureMap, etc.

Para instalar una librería en el proyecto actual solo le dan clic a “Install”

{ 0 comments }

En lo personal yo es raro que necesite proteger la información ya que soy el único que usa mi computadora, no la comparto con nadie, pero este programa me llamo la atención al verlo porque es bastante fácil de usar y si llegara a tener que proteger con contraseña alguna carpeta de mi computadora definitivamente lo usaría. Secure Folders es una aplicación con la que pueden ponerle contraseña a carpetas en su computadora simplemente haciendo clic derecho y seleccionando una opción del menú contextual.

El programa usa una contraseña maestra para desbloquear así que es una sola contraseña para desbloquear cualquier folder que protejan.

Descargar Secure Folders

 

image

{ 0 comments }

Introducción a Microsoft Enterprise Library

by ryudice on August 30, 2010

Enterprise Library es un conjunto de bloques de aplicaciones desarrollados por Microsoft para el .net framework. Un bloque de aplicación es código que puede ser reutilizable entre varios proyectos, generalmente en una aplicación siempre existe código que puede ser útil en otras aplicaciones como son en el caso de :

  • Logeo de errores
  • Cache de datos
  • Inyección de dependencias
  • Validación

Microsoft ha creado bloques de aplicaciones para estas áreas y como resultado ha nacido Microsoft Enterprise Library, basándose en las mejores practicas de la industria y la misma experiencia que tiene Microsoft.

Es necesario saber al menos del conocimiento que existe esta librería, hay muchas alternativas a cada uno de los bloques de aplicación que contiene el Enterprise Library, por ejemplo, para logeo podemos utilizar NLog o log4net, para inyección de dependencias podemos usar structuremap, o ninject, sin embargo la ventaja de usar el EntLib es que todo viene en un solo paquete, al final es decisión de ustedes si lo quieren usar o no.

Les dejo el link del enterprise library, en ese mismo sitio pueden encontrar laboratorios prácticos de como utilizar cada uno de los bloques, son bastante buenos lo único malo es que solo están en ingles.

Por cierto, la ultima versión al momento de este post es la 5.0 para el framework 3.5.

Sitio official de Microsoft EntLib en codeplex.

{ 1 comment }

Ausencia

by ryudice on July 27, 2010

Solo quería informarles que no he podido postear (y probablemente no pueda por una semana mas) debido a que a todas mis computadoras se han arruinado y lo único que me queda es mi iPhone. De un solo quiero decirles que las fuentes de laptop genéricas(no originales) arruinan los motherboard así que no las usen, y tampoco maltraten el disco duro de su computadora de escritorio porque el mío se canso de tanto maltrato. Voy a estar mas activo en twitter durante este tiempo así que me pueden seguir en twitter para updates, mi usuario es ryudice. Bueno me despido ya que no es tan agradable escribir textos largos en un teléfono celular.

{ 0 comments }

Relájate en el trabajo usando MoodTurn.com

by ryudice on July 21, 2010

image

Si necesitan relajarse en su trabajo o concentrarse mejor les recomiendo esta aplicación web llamada MoodTurn.com. MoodTurn es una pagina donde pueden escuchar música de ambiente, ustedes pueden seleccionar si quieren sentir que están en la selva, en el mar o en el bosque, todos los sonidos son relajantes. La pagina rota continuamente la musica por lo que pueden ingresar a cualquier hora.

Ir a MoodTurn.com

{ 0 comments }


Get Adobe Flash player