Hello Project Natal, Adios Nintendo Wii

Just look at this: Read More!

What does DNN have to do with WebForms vs. MVC?


Recently everyone out there has been voicing their opinion about how MVC or WebForms is better/easier/faster than the other. In fact a lot of A+ developers have gotten into the action, particularly on the side of MVC.

The other day ScottGU also had his say in the matter.

Well, Recently Shawn Walker had a great (depending on who you ask) blog post about why DotNetNuke will be kept with WebForms for the time being instead of migrating to MVC. It is definetly worth reading, please go ahead. Read More!

Foto del nuevo Apple Tablet

Read More!

ASP.NET MVC 2 Beta Source Code



En el dia de hoy Phil Haack, Program Manager del equipo de ASP.NET MVC publico el codigo fuente del Beta 2 de ASP.NET MVC en CodePlex.

Adicionalmente publicaron los Futures, los cuales son una serie de funcionalidades que aun no llegan a ser parde del producto pero que estan siendo consideradas. Read More!

Generar la base de datos a partir de un Modelo del Entity Framework

Uno de los features mas esperado de la proxima versión del Entity Framework es poder crear el Modelo primero. Con el Visual Studio 2010 Beta 2 tenemos un nuevo CTP que introduce este cambio. Esto nos permite crear nuestro modelo de objetos y luego a partir de este generar automaticamente la base de datos!.

Les mostrare una breve introducción de sobre las pasos a realizar.

1) Debemos agregar un nuevo modelo de datos del Entity Framework



2) Hay que seleccionar la opción Empty Model



3) Aqui procedemos a agregar todas nuestras entidades y sus asociaciones





4) Luego debemos seleccionar la opción "Generate Database from Model". Lo cual traera correra un Wizard donde seleccionaremos la conexion a la BD y producira un archivo DDL para la creacion de los objetos.





5) Finalmente corremos nuestro Script conectados a nuestro servidor de BD y veran como tenemos todos nuestros objetos creados.





Esta es una buena forma de poder comenzar el desarrollo creando nuestro modelo de objetos, en vez de la vieja practica de comenzar con el diseño de la base de datos. Read More!

Ejemplo de como Utilizar el ModelMetadata de MVC 2

Cuando estamos creando un View en MVC, generalmente usamos una serie de filas como esta:

   1:  <p>
   2:      <label for="NombreEmpleado">NombreEmpleado:</label>
   3:      <%= Html.TextBox("NombreEmpleado")%>
   4:      <%= Html.ValidationMessage("NombreEmpleado", "*") %>
   5:  </p>


Para presentar las diferentes propiedades de un objeto, incluso, mucha gente simplemente las deja asi mismo como las genera la herramienta de "AddView" de Visual Studio.

El problema esta en que si se fijan el valor que sale puesto en el label es exactamente el nombre que le pusimos a la propiedad del objeto, sin espacios y sin formato alguno. Generalmente es el nombre del campo de la Base de Datos, especialmente si utilizamos LINQ2SQL o Entity Framework para generar las clases.

Lo que siempre terminamos haciendo es ir y manualmente cambiar el contenido del label para que se vea mas presentable nuestro formulario:

   1:  <label for="NombreEmpleado">Nombre del Empleado:</label>


Pero esto se vuelve una tarea muy repetitiva y muy aburrida luego de que tengamos que cambiar la misma propiedad una y otra vez en varios sitios.

Como ya mencione en mi post anterior sobre los DataAnnotations en MVC 2, ya existe una manera en la que podemos incluir metaData que esta relacionada a nuestros objetos en una capa separada, la cual es luego utilizada por el motor de MVC.

Tomaremos este caso sencillo, en el cual queremos que nuestros objetos tengan los nombres apropiados en todos los lados que se esten utilizando, pero no queremos tener que digitarlos una y otra vez.

Primero, debemos crearle una clase parcial con la metaData que este asociada a nuestros objetos y utilizar la propiedad DisplayName:

   1:  [MetadataType(typeof(EmpleadoMetaData))]
   2:  public partial class Empleado
   3:   {
   4:       public string NombreEmpleado {get; set;}
   5:   
   6:   } 
   7:  class EmpleadoMetaData
   8:  {
   9:      [Required(ErrorMessage = ("El nombre es un campo requerido"))]
  10:      [DisplayName("Nombre del Empleado:")]
  11:      public string NombreEmpleado {get; set;}
  12:  }


Luego, en nuestros views debemos asegurarnos que en vez de utilizar:

   1:  <label for="NombreEmpleado">NombreEmpleado:</label>


usemos:

   1:  <%= Html.LabelFor(t => t.NombreEmpleado) %>


Y listo, como podran ver, al utilizar el helper de HTML.LabelFor, se busca la metaData que tiene asociada ese objeto y se presenta en nuestro View el texto que queremos, y ahora lo tenemos todo concentrado en una capa separada, donde podemos modificarlo facilmente sin mucho esfuerzo. Read More!

IntelliSense para JavaScript y jQuery en VS2010 Beta2

Si por alguna razon en VS2010 siente que le falta algo muy importante cuando esta escribiendo codigo JavaScript o jQuery, no se preocupe, no esta solo.

Visual Studio 2010 Beta 2 tiene un bug en donde en algunas instalaciones se "desparace" el IntelliSense para JavaScript, ya sea parcialmente o por completo. Tiene que ver con un bug en el proceso donde se importan los settings de una versión anterior.

Para arreglarlo es bien facil, solo tiene que ir a Tools --> Import and Export Settings y darle a la opción que dice "Reset all settings". No saquen backup!, deben eliminarlas y seleccionar nuevamente cual es su ambiente preferido para el codigo.



Gracias a Rick Strahl por este tip. Read More!

jQuery event binding en ASP.NET MVC

A veces son las cosas pequeñas que nos trancan el juego y nos hacen perder mucho tiempo cuando estamos desarrollando, especialmente cuando estamos usando algo que es relativamente nuevo, para el cual no hay mucha documentación disponible.

Hoy me tope con un caso muy sencillo en una aplicación asp.net mvc en donde yo estaba generando un textbox de la siguiente manera:


   1:  <%= Html.TextBox("Ejemplo")%>


A esto le queria agregar una llamada a una funcion de JavaScript, pero no tenia claro donde deberia ponerle el onkeyup="SumaEjemplo()" para que el html que fuera generado quedara de la siguiente manera:


   1:  <input type="text" id="Ejemplo" onkeyup="SumaEjemplo()" />


Al final decidi no perder mucho tiempo y fui a stackOverflow, donde en minutos obtuve mi respuesta.

Debi haberlo puesto asi:


   1:  <%= Html.TextBox("Ejemplo",string.Empty,new{onkeyup="SumaEjemplo()"})%>


Pero al final tampoco esa era la forma mas idonea de hacerlo, lo que se debio usar fue una llamado con jQuery y usar el event binding de la siguiente manera:


   1:  $(function(){
   2:      $("#Ejemplo").onkeyup(SumaEjemplo);
   3:  });
   4:   
   5:  function SumaEjemplo(eventInstance){
   6:      // handle onkeyup event
   7:  }



!!!.. Read More!

ASP.NET MVC 2 - DataAnnotations

Una de las nuevas funcionalidades que tiene el Preview 2 del ASP.NET MVC 2 es la implementación de DataAnnotations (System.ComponentModel.DataAnnotations).

DataAnnotations nos permite escribir nuestras validaciones en un solo lugar, en nuestra clase de validación, de esta forma nos apegamos al concepto DRY (Dont-Repeat-YourSelf), ya que de lo contrario hubiesemos tenido que tener logica de validación mezclada tanto en la capa de presentación (nuestros Views & codigo jQuery/Ajax) y dentro de nuestros objetos de negocio.

Vamos a ver como funciona todo esto. Lo primero que debemos tener es un modelo, para esto vamos a usar algo bien simple, una clase de Empleado:Esta primera clase la pudieron haber creado con el modelo u ORM que usan habitualmente: LINQ2SQL, Entity Framework, nHibernate, lo unico que debe tenerse en cuenta es que debe ser una clase parcial ya que en el proximo paso vamos a tener que extenderla.


   1:  public partial class Empleado
   2:  {
   3:      public string Nombre {get; set;}
   4:      
   5:      public int DepartamentoId {get; set;}
   6:  }



En el proximo paso lo que vamos a hacer es crear una clase nueva donde se van a guardar todas las reglas para las validaciones sobre las propiedades y atributos de nuestras clases.



   1:  [MetadataType(typeof(EmpleadoMetaData))]
   2:  public partial class Empleado
   3:  {
   4:  public string Nombre {get; set;}
   5:   
   6:  public int DepartamentoId {get; set;}
   7:  }
   8:   
   9:  class EmpleadoMetaData
  10:  {
  11:  [Required(ErrorMessage = ("El nombre es un campo requerido"))]
  12:  public string Nombre {get; set;}
  13:   
  14:  [Required(ErrorMessage = ("Debe especificar un departamento"))]
  15:  public int DepartamentoId {get; set;}
  16:  }



Lo que hemos hecho aqui es crear una clase nueva para poder tener toda nuestra logica de validacion separada y en un solo sitio y luego utilizando el atributo MetadataType hemos asociado ambas clases.

El proximo paso es incluir los archivos necesarios para que nuestras vistas generen la logica de validación necesaria del lado del cliente.

En el codigo de la vista (preferiblemente en el MasterPage) incluyan estas declaraciones:


   1:  <script type="text/javascript" src="../../Scripts/jquery-1.3.2.min.js">script>
   2:  <script type="text/javascript" src="../../Scripts/jquery.validate.min.js">script>
   3:  <script type="text/javascript" src="../../Scripts/MicrosoftMvcJQueryValidation.js">script>



El ultimo paso es especificarle al view que genere la logica de jQuery, esto lo hacemos con solo una linea de codigo adicional!!!:



   1:  <% Html.EnableClientValidation(); %> 



Listo. Con esto ya tenemos validación del lado del cliente generada automaticamente con la libreria jQuery, y para aquellos usuarios curiosos que apagan el JavaScript aun permanece la validación del lado del servidor. Read More!

Cómo aprovechar las nuevas carácteristicas y herramientas de Windows 7 para lograr aplicaciones más seguras


 


En el dia de hoy salio publicado mi nuevo ScreenCast en el MSDN Media Center, hecho para la campaña de Windows 7x7, que soporta el lanzamiento de Windows 7. El tema que toque es uno que he trabajado durante muchos años, la seguridad en el desarrollo de Software.


Pueden ver el ScreenCast en linea aqui.

Read More!

Anteproyectos Imagine Cup 2009‏


En el dia de hoy comenzo el proceso de evaluación para los proyectos participantes en el Imagine Cup 2009 en lo que Microsoft denomina Multi Country Américas. Hoy a nosotros los jurados nos llegaron por email 15 anteproyectos para ser evaluados.

Espero ver muchas ideas interesantes este año al igual que en años anteriores, suerte a todos!!!...

Enlaces Relacionados:
Read More!

Small Basic




Se acuerdan de QBasic?, GWBasic?. Bueno, no es lo mismo pero las personas de Microsoft Labs nos pusieron un juguete nuevo para nosotros, se trata de SmallBasic, es un lenguaje de programación basado en el .Net Framework con su propio IDE.

Es bien sencillo, tiene solo 15 palabras claves y el IDE cuenta con un Intellisense muy chulo. Si tienen tiempo extra para jugar bajenselo y delen una vuelta, se los recomiendo.

Pueden descargarlo aqui.

Read More!

Internet Explorer 8 RC1



Hoy Microsoft lanzo una nueva versión del Internet Explorer 8, esta vez el Release Candidate 1. Puede descargarlo aqui.

Segun Microsoft es una versión casi final y habrá muy pocos cambios entre esta y la versión RTM.
Read More!

Microsoft MVP Trophy

 100_0991

Dicen que una foto vale mil palabras, asi que no dire mas nada!!!!!……

Read More!

Imagine Cup 2009

El lema del Imagine Cup 2009 es "Imagina un mundo donde la tecnología ayude a resolver los problemas más resistentes que enfrentamos hoy".

A través de Imagine Cup, Microsoft invita a los estudiantes a realizar una experiencia tecnológica real, motivarlos a innovar, competir y conectarse con sus pares del resto del mundo. En la edición pasada participaron más de 200.000 estudiantes de 120 países.

El año pasado en el Imagine Cup 2008 el equipo de Republica Dominicana gano la competencia regionales y representaron a toda CCA en francia.

Suerte a todos!...
Read More!

Follow me on twitter @HectorMinaya

New  Year, new things, Follow me on twitter @HectorMinaya


Año Nuevo, cosas nuevas, Sigueme en twitter @HectorMinaya

Read More!

MVP de Microsoft 2009!!!



Este año recibi un obsequio temprano de parte de Microsoft, se trata del premio de MVP de Microsoft® de 2009 (Most Valuable Professional). Este es mi cuarto año consecutivo donde recibo este galardon y me siento muy orgulloso de que sean tomados en cuenta todos mis aportes a las diferentes comunidades de desarrolladores.

Feliz año nuevo a todos.....

Parte del mensaje de Microsoft:



Estimado/a Hector Minaya,


Enhorabuena. Nos complace presentarle el programa de nombramiento MVP
de Microsoft® de 2009. Este nombramiento se concede a los líderes
excepcionales de la comunidad técnica que comparten de forma activa su
experiencia de alta calidad y de la vida real con otras personas.

El programa de nombramiento de MVP de Microsoft nos proporciona una
oportunidad única de celebrar y reconocer sus aportaciones importantes,
así como de decir “Gracias por su liderazgo técnico”.



Toby Richards

Director general

Servicios de soporte técnico a la comunidad
Read More!

Proyectos OpenSource al estilo Microsoft....

CodePlex


Una forma de contribuir codigo es participar en proyectos de codigo abierto (OpenSource). Microsoft tiene un servicio excelente para las personas que desean crear o participar en proyectos opensource, se llama CodePlex. A traves de codeplex podras manejar tu proyecto completo incluyendo el codigo fuente, las tareas, los usuarios, el hosting y mucho mas.


Uno de los feature que mas me gusta es que te provee un ambiente para hostear tu codigo fuente y luego puedes conectarte con un sin numero de clientes para acceder al mismo y trabajar en equipo, yo utilizo el Visual Studio Team Explorer y me permite trabajar en equipo como si tuviera mi propio Team Foundation Server.


Actualmente estoy participando en dos proyectos que estan hosteados en esta comunidad:



Animate y participa!.

Read More!

Se complica la relación entre Firefox y Google



John Lilly, CEO de Firefox anuncio que la relación entre Firefox y Google se a vuelto mas complicada despues de que Google lanzo su propio browser.

Hasta el momento Mozilla viene dependiendo de Google para obtener la mayoria de sus ingresos de acuerdo con un pacto que ambos firmaron y que concluye en el 2011. Adicionalmente sus ingenieros trabajan cercanamente con los ingenieros de Google para el desarrollo de Firefox.

Recientemente google tambien anuncio que sustituiria a Firefox por Chrome como el browser por defecto en su Google Pack.
Read More!

jQuery Intellisense en Visual Studio 2008



jQuery es una libreria de JavaScript que simplica el manejo de HTML, eventos, animación, AJAX y javascript en general para el desarrollo web.

Una de las cosas que mas me gusta sobre jQuery es que solo pesa 15KB!, asi que no tiene un overhead al agregarla a tu proyecto. La libreria de jQuery tambien trabaja en conjunto en la misma pagina con asp.net Ajax y el asp.net Ajax Control Toolkit.

Ahora veremos como habilitar Intellisense para jQuery en Visual Studio 2008:

Primero, debemos instalar Visual Studio 2008 SP1

Segundo, Debemos instalar un parcho (KB958502) para poder soportar Intellisense en archivos "-vsdoc.js"

Luego deben bajar la libreria jQuery-vsdoc.js desde aqui y agregarla a su proyecto al lado de la libreria de jQuery.

Para referenciarla en su proyecto basta con agregar un elemento de html como el siguiente:

Read More!

Search Engine Optimization Blogs

Continuando con el tema de Search Engine Optimization aqui les dejo otros dos blogs en los que estoy escribiendo sobre el tema:

Google SEO Tools
http://www.GoogleSEOtools.net

En este Blog estoy escribiendo sobre las herramientas que tenemos a nuestra disposición para la labor de SEO, inicialmente estoy publicando sobre las herramientas que nos brinda Google para esto, pero luego voy a incluir herramientas de otros proveedores.

Blogger SEO
http://BloggerBlackHatSEO.blogspot.com

Muchas personas tienen Blogs en Blogger.com y enfrentan dificultades para que sus Blogs sean encontrados por los Search Engines. En este blog recopilo algunas tecnicas para ayudarlos a lograr esta meta.
Read More!

Internet Explorer vs. Firefox vs. Google Chrome vs. Etc...

¿Cual es tu browser preferido? De acuerdo a las estadisticas de net Applications para Octubre tenemos lo siguiente:



Read More!

Nueva URL para mi blog http://blog.HectorMinaya.com

Siempre me e encontrado que el URL de mi blog es muy largo o dificil de recordar. Recientemente estoy utilizando un nuevo URL el cual estoy redireccionando a mi blog, de esta forma mantengo todo el contenido anterior en su mismo sitio.

El nuevo URL es: http://blog.HectorMinaya.com
Read More!

DotNetNuke SEO

DNN SEO

¿Que es SEO? SEO son las siglas en inglés de "optimización de motores de búsqueda" (Search Engine Optimization) o de "optimizador de motores de búsqueda" (Search Engine Optimizer). Hace casi un mes comenze mi segundo blog DotNetNuke SEO, es un lugar donde podran encontrar información sobre Search Engine Optimization especificamente para la plataforma de DotNetNuke. Echate un vistazo y dejame saber tus comentarios al respecto....


 


Posts relacionados:



 

Read More!

SQL Injection, Curso en linea

Quieres aprender sobre SQL Injection? Cuales son las tecnicas que utilizan los hackers? Como me puedo proteger?. Estoy organizando un curso en linea sobre SQL Injection. Si estas interesado deja un comentario en este post, publicare mas información en breve....


Update: Si deseas colocarte en la lista de espera para la proxima fecha de este curso enviame un correo a cursos @ hectorminaya.com con:


Tu nombre
Email
Lugar de Trabajo
Pais


Mas info:



  • La duración del curso es de 2 semanas,

  • El formato es en linea totalmente,

  • Tendran todo el material de apoyo, ejemplos practicos, etc.

  • El costo por persona es de US$25.00, puede ser pagado por PayPal. Puedes obtener un descuento al referir otra persona

  • Cupo Limitado asi que anotate ya...


 


SQL Injection

Read More!

Windows Vista Upgrade Advisor

Otro tema que me preguntan con frecuencia es donde conseguir una herramienta para saber si su PC puede soportar Windows Vista, para esto Microsoft provee el Windows Vista Upgrade Advisor, es totalmente gratis.


Ya no tiene excusa, asi que vaya y comience la migración hacia Windows Vista si aun no lo ha hecho......


Read More!

SQL Server 2005 sp2

Esto es noticia vieja ya, pero es algo que me preguntan mucho, me preguntan donde pueden bajar el SP2 de SQL Server 2005. Lo pueden encontrar en: http://www.microsoft.com/downloads/details.aspx?FamilyId=d07219b2-1e23-49c8-8f0c-63fa18f26d3a&displaylang=en


Post relacionado: http://msmvps.com/blogs/hminaya/archive/2007/02/20/sql-server-2005-service-pack-2.aspx


Read More!

Windows Live ID se integrara con OpenID

El 27 de Octubre Microsoft anuncio que Windows Live ID va a soportar el framework de OpenID, para esto anuncio publicamente que esta disponible un CTP del Windows Live ID OpenID Provider. Esto quiere decir que muy pronto vas a poder utilizar tu Windows Live ID para loggearte a cualquier Website que utilice el standard de OpenID.


Read More!

Windows Azure


Se acuerdan de Microsoft Hailstorm?. Yo tampoco, hace alrededor de 7 años que Microsoft hablo sobre esa iniciativa de SaaS. Ahora tienen una nueva iniciativa en el area de SaaS, se llama Windows Azure ypromete ser todo un exito.


Esta vez Microsoft no solo controlara el sistema operativo, sino que tambien controlara los servidores y los Data Center donde van a estar instalados. Es decir que nos va a proveer un ambiente completo no solo una plataforma para nosotros hostear nuestras aplicaciones remotamente. Es algo en lo que otros competidores como Amazon han estado trabajando durante mucho tiempo, pero no han logrado una aceptación masiva.


 









Read More!

Windows 7

Microsoft esta buscando desligarse de la mala imagen que le trajo Windows Vista con su nuevo sistema operativo, Windows 7. Hasta ahora no hemos visto nada revolucionario que va a traer este nuevo sistema operativo, pero estamos a la espera de que sea todo un exito.


Aqui un breve video: http://www.computerworld.com/action/article.do?command=viewArticleBasic&articleId=9119378&pageNumber=2#video1


Read More!