Reunión de la Comunidad .NET del D.F. del mes de noviembre

Estimados amigos de la comunidad:

Sólo para recordarles que el próximo martes 30 de Octubre a las 7 de
la noche tendremos otra reunión de la comunidad .Net la cual se
llevara a cabo en Alfonso Esparza Oteo Exterior 144 Despacho 608 Col
Guadalupe Inn.

En ella tendremos la siguiente agenda:

Windows Azure (Diego Vasconcelos, Gregorio Marciano)

Razor en asp.net mvc 3 (Ivan Gonzalez)

NOTA: Se recomienda confirmar su asistencia a
con el fin de agregarlos a la lista de
acceso en la puerta para que los dejen pasar.

Liga del mapa:
http://maps.google.com/maps/ms?ie=UTF8&hl=en&msa=0&msid=116219923599100851688.000478d723dedcd1ddbc3&z=19

Referencias: Está a una cuadra del metrobus olivo.

Esperamos contar con su valiosa asistencia y que inviten a sus amigos
y conocidos, les mandamos un cordial saludo.

Reunión de la Comunidad del mes de Octubre

Estimados amigos de la comunidad, sólo para recordarles que el próximo
martes 26 de Octubre a las 7 de la noche tendremos otra reunión de la
comunidad .Net la cual se llevara a cabo en Alfonso Esparza Oteo
Exterior 144 Despacho 608 Col Guadalupe Inn.

En ella tendremos la siguiente agenda:

Introducción a Data Warehouse con SQL Server 2008 (Ponente: Pablo
Monroy)

ASP.NET MVC desde arquitectura hasta desarrollo en Visual Studio 2010.

NOTA: Se recomienda confirmar su asistencia con el fin de agregarlos a
la lista de acceso en la puerta para que los dejen pasar.

Liga del mapa:
http://maps.google.com/maps/ms?ie=UTF8&hl=en&msa=0&msid=116219923599100851688.000478d723dedcd1ddbc3&z=19
Referencias: Está a una cuadra del metrobus olivo.
Esperamos contar con su valiosa asistencia y que inviten a sus amigos
y conocidos, les mandamos un cordial saludo.

Out of memory exception usando el ReportViewer en modo local

Si estas usando el control Report Viewer en una aplicación Web en modo local y el reporte que estas utilizando carga grandes cantidades de datos o tiene muchas expresiones. Debes considerar que estos escenarios no son recomendados en Local Mode. Ya que por diseño el comportamiento del Report Viewer aloja objetos en variables de sesion, cada vez que el visor de reportes es refrescado. Provocando que tarde o temprano tengas un System.OutOfMemoryException.

Si ya estas enfrascado en el problema, lo ideal seria migrar tus reportes a Reporting Services o usar otro reporteador. Pero en el inter el siguiente Workaround me ha dado resultados.

NOTA: Puede no funcionar para todos los escenarios.

En el page_load event, agrega lo siguiente,

VB.NET

If Session.Count > 0 Then

For i As Integer = 0 To Session.Count – 1

If Session(i).GetType().ToString() = “Microsoft.Reporting.WebForms.ReportHierarchy” Then

Session.RemoveAt(i)

End If

Next

End If

C#,

if(Session.Count > 0)

{

for (int i = 0; i < Session.Count; i++)

{

if (Session[i].GetType().ToString() == “Microsoft.Reporting.WebForms.ReportHierarchy”)

{

Session.RemoveAt(i);

}

}

}

Fuente: http://blogs.msdn.com/b/selvar/archive/2008/07/18/getting-system-outofmemoryexception-when-using-reportviewer-contol-in-local-mode.aspx

La nube y el futuro del computo.

Mucho es el escepticismo sobre el tema del computo del futuro. Mientras que algunos auguran que nadie necesitara tener sites llenos de servidores para mantener su información, otros en cambio identifican como imposible soltar su valiosa información fuera de los limites de su organización.

Lo que para mi es claro, es que en el futuro, todas las empresas tendrán una combinación de ambos elementos.

Por ejemplo, hace mas de 10 años, casi ninguna organización de mediana para arriba delegaba su correo electrónico empresarial a un tercero.

Hoy muchas empresas entienden que administrar internamente su correo electrónico no es el negocio de su organización y en muchos de los casos han delegado dicha responsabilidad en terceros, con resultados interesantes. Ya que a una empresa le es costoso mantener un 24/7 de disponibilidad, mientras que a a un prestador de servicios dedicado a eso, el costo representa parte de su negocio. Y muchos de ellos brindan sus servicios directamente en la nube.

Lo que es mas interesante todavía, es el hecho, que gran parte de las empresas que han optado por estas alternativas, han realizado dichas transacciones, casi por completo en linea. Sin la intervención directa de responsables de ventas.

Se que para este momento sueno extravagante. Pero solo basta ver a quien delegamos muchas de nuestras actividades informáticas.

Por ejemplo, durante el mundial múltiples empresas, en vez de invertir millones de pesos en infraestructura para montar servidores de streaming de video, se montaron sobre YouTube para presentar sus campañas.

Otro ejemplo clarísimo es el seguimiento a las quejas de los clientes que realizan diversas empresas por medio de Twitter.

Y uno pensaría, que no se supone que es información que queremos mantener dentro de las fronteras de la empresa. Y la realidad es, que si queremos mantenernos competitivos, usaremos los medios a nuestro alcance para llegar al cliente. Y solo es necesario mantener dentro de nuestras fronteras aquello que por su naturaleza necesitamos proteger, ya sea porque estamos obligados, o porque así convenga a los intereses de la empresa.

Pero al final, muchos proyectos que no verían la luz, debido a la inversión inicial que requerirían. Terminaran dando sus primeros pasos en la nube y en algunos casos serán mucho mas rentables, que aquellos en los cuales una organización tuvo que invertir millones de dólares para salir al aire.

Es por ello que veo una progresiva migración a la nube, la cual no será total para todas las organizaciones.

Pero definitivamente tendrá un espacio importante en gran parte de ellas.

Ahora solo es cuestión de tiempo para ver el resultado.

Foros de Microsoft

Muchas veces me han preguntado porque en las páginas de comunidad se tarda mucho en dar respuesta o simplemente esta no llega. Y la realidad es porque muchas veces el número de personas que leen dichas páginas, es mucho menor, que páginas como los foros de Microsoft.

En los foros de Microsoft, se reúnen muchísimas personas que responden a las inquietudes de los demas.

Es por ello que les comparto las ligas de los que considero mas relevantes:

ASP.NET
http://forums.asp.net/

C#
http://social.msdn.microsoft.com/forums/en/csharpgeneral/threads/

WPF
http://social.msdn.microsoft.com/Forums/en/wpf/threads/

Saludos

Como aprender C# 4.0

Muchas veces cuando estamos buscando información de como aprender un lenguaje en especifico, nos detenemos por no conocerlo o no tener en ese momento un libro o documentación al respecto.

Y lo mejor de todo es que no debes gastar un peso para conseguirlo.

Ya que la especificación de C# la puedes descargar desde el sitio de Microsoft. En la siguiente liga.
Especificación de C# 4.0

Espero que les sirva.

Saludos

CSS Selectors

Los selectores en css, son reglas con las que puedes aplicar estilos a elementos en un documento html.

1.- Tu puedes aplicar estilos a cualquier elemento usando el “*”.

2.- Tu puedes aplicar estilos a todos los elementos del mismo tipo indicando nombre del tipo del mismo.

ej:
div {}  <- Aplica el estilo a todos los divs
ol {} <- Aplica el estilo a todos los ol

3.- Tu puedes aplicar un estilo a todos los elementos que cumplen con un selector que están dentro de otro selector independientemente de los niveles de profundidad separándolos por un espacio.

ej:
div ol {} <- Aplica el estilo a todos los ol dentro de un div, independientemente de la profundidad. En este caso si un div tuviera un hijo que fuera otro div y dentro de el existiera un ol. Le aplicaría el estilo.

div > ol {} <- Aplica el estilo a todos los ol dentro que son hijos directos de div, independientemente de la profundidad. En este caso ol deberá ser hijo directo de ol.

Si quieres mas información de selectores css, revisa la siguiente liga:

http://www.w3.org/TR/CSS2/selector.html

Deshabilitando identity map en Linq to Sql

Nota: Identity Map es un patrón de diseño que es parte fundamental del funcionamiento de cualquier ORM, deshabilitarlo tiene sus consecuencias ya que es necesario cuando vas a hacer actualizaciones a la base de datos.

Para mas información al respecto, puedes leer:
http://codebetter.com/blogs/ian_cooper/archive/2008/03/09/architecting-linq-to-sql-applications-part-7.aspx

Martin Fowler’s Patterns of Enteprise Application Architecture

Por favor, si no entiende las consecuencias de lo que aquí recomiendo, o no le gusta leer, no siga los siguientes pasos.

Para que se usa el Identity Map:
El objetivo de Identity Map consiste en siempre devolver la misma instancia del objeto, aun cuando sea el resultado de 2 operaciones distintas de nuestro DataContext (en el caso de linq). Lo cual significa que la primera vez que se obtiene una entidad de la base de datos esta es persistida en el mapa de identidad y en próximas consultas, en lugar de crear una nueva instancia devuelve la que ya tienes en memoria. Esto es realizado así con el fin de mantener la unidad de trabajo (patron: unit of work), de tal manera que no pierdas los cambios que hayas realizado al objeto en memoria.

Cuando esto puede tener un efecto no deseado:
Cuando quieres obtener el valor tal cual esta en la base de datos, mismo que pudo haber sido modificado en el management studio, por otro sistema u otro usuario en tu mismo sistema.

Que puedo hacer
Si tu objetivo es la lectura exclusivamente de información de la base de datos.  Puedes indicarle a tu contexto que no de seguimiento a los objetos.

ObjectTrackingEnabled=false

O si tu objetivo es solo para el objeto u objetos que vas a utilizar, existe un metodo Refresh en el DataContext que te permite actualizar la entidad en el identity map con los valores de la base de datos.

La importancia de las redes Wifi en las preferencias del consumidor

En los últimos meses hemos visto un crecimiento contundente en el acceso a las tecnologías, y el impacto de las redes sociales en la comunicación entre las personas. Hace tan solo un par de años, encontrar a un amigo de la infancia en Hi5 o Facebook, era un acontecimiento raro, si no te dedicabas al rubro de la tecnología.

Ahora no son raras las reuniones de viejos amigos que se pusieron de acuerdo por una red social. Y tampoco es raro ver en un restaurante a un grupo de amigos con algún dispositivo para conectarse a las mismas.

Y es por eso que me cuestiono, cuanto tiempo tardaran las cadenas de restaurantes que aún no lo han hecho, en percatarse que algunos de sus comensales han decidido comer en otro lugar, por el simple hecho de que no cuentan con Internet.

Si bien es cierto que la gente va a los restaurantes a ingerir sus alimentos, muchos de ellos tienen la necesidad de enviar un correo desde su computadora portátil o quieren reportarle al mundo entero que se encuentran en su restaurante a cambio de un batch de foursquare.

Hoy en día mas de una vez he dejado de comer en Toks o el Charco de las Ranas, solo porque no tienen Internet. Prefiriendo lugares que cuenten con acceso al mismo, de manera gratuita. Aunque su comida en algunos de los casos no la disfrute tanto.

Es por ello que me he dado a la tarea de publicar este post, con el único fin de contribuir a que mas empresas consideren esto como una necesidad.

O digame estimado lector, cuantos clientes esta dispuesto a perder por no darle importancia a la tecnología.