Presentación de FluentViewModel

Hola nuevamente. No me pude esperar, así que decidí presentarles mi proyecto para ASP.NET MVC: FluentViewModel. Espero subirlo a GitHub en un futuro cercano (es decir, no muy lejano, jejeje…), para que esté disponible para todo el mundo, y quien lo quiera mejorar pueda hacerlo.

¿Qué es FluentViewModel?

FluentViewModel es una interfaz fluida para definir modelos de vista en ASP.NET MVC usando C#, construida sobre FluentValidation.

FluentViewModel permite mapear las propiedades de un modelo existente a plantillas de editores de formulario y vistas, aprovechando las ventajas de las clases genéricas, notación lambda y la funcionalidad de autocompletar de Visual Studio, para facilitar a los programadores la creación de modelos de vista.

Por otra parte, FluentViewModel hace uso de las funcionalidades de FluentValidation para definir las validaciones necesarias a realizarse para los objetos.

¿Cómo funciona FluentViewModel? (a grosso modo)

Creo que la mejor forma de explicar cómo funciona, es con un ejemplo: Sigue leyendo

Imprimir reporte de ReportViewer desde otro navegador web que no sea IE

Nota: Existe una nueva “versión” de esta alternativa para impresión desde ReportViewer, pueden verla aquí.

El título es algo largo, jejeje, pero tenía que ser explícito. Si ya han usado el control ReportViewer en alguna aplicación o sitio web de ASP.NET, habrán notado que el botón de imprimir no se muestra en navegadores web como Mozilla Firefox o Google Chrome, sino solamente en Internet Explorer. ¿Por qué sucede esto? Muchos sostienen que es una artimaña del imperio para obligar al público a usar IE. Sin embargo, la versión que sostienen otros es que se debe a que para hacer uso de este botón se requiere que el navegador soporte ActiveX.

¿Qué podemos hacer al respecto, si definitivamente no queremos utilizar IE? Bueno, después de buscar en google y hacer algunas pruebas sin éxito, surgió la solución que describo a continuación, y que requiere el uso de la librería jQuery: Sigue leyendo

SQL Server Snippets – Aproximación de valor real a N-ésimo decimal superior/inferior

Supóngase que se tiene un valor real o float, que se quiere aproximar al N-ésimo decimal superior. Por ejemplo:


DECLARE @valor FLOAT
SET @valor = 1.9011

Para aproximar al 3er decimal superior, basta usar la función mátematica integrada de T-SQL llamada CEILING, de la siguiente forma:


SELECT CEILING(@valor*1000)/1000

El resultado de la operación es 1.902. Observemos paso a paso lo que sucede: Sigue leyendo

Nuevo proyecto: Juego para Android

Después de algunos sucesos, me he sentido motivado y animado a iniciar un proyecto a mediano-largo plazo, que consiste en un juego para Android. El único detalle está en que jamás en mi vida he hecho un juego, y mucho menos un programa para Android, jejeje… Lo más que hice fue una guardar una tabla de resultados para un proyecto en la materia de Gráficos por Computadora de la universidad. Pero me gusta correr antes que caminar (en este caso en particular), así que quiero hacer un juego 3D. A continuación describo mis ideas. Sigue leyendo

SQL Server Snippets – Columna de fecha de última modificación en SQL Server

Supongamos que por cuestiones de control de modificaciones y auditoría, se quiere contar con un campo de fecha de última modificación en todas las tablas de una base de datos de SQL Server.

El inconveniente es que SQL Server no posee nativamente un tipo de dato que guarde la fecha de última modificación de un registro, el cual se actualice automáticamente al modificar una fila de datos. Por ello, una alternativa a esto es definir una columna de tipo datetime en cada tabla que se actualice cada vez que se modifique uno o más registros de esta, a través de un trigger. Sigue leyendo

Futuros nuevos posts…

¡Howdy! No pude resistirme, tengo varios posts en mente, pero no he tenido el tiempo de escribirlos, así que para mientras, quiero comentarles mis ideas, que espero alguna vez publicar:

  • Técnicas DRY para SQL Server: Son varias ideas para evitar código repetitivo en SQL Server.
  • Más SQL Server Snippets:Sé que tengo un par más por allí…
  • El regreso de las ventanas DIV: Ventanas DIV móviles, con sombra y otros efectos.
  • Symfony 2 y casos especiales de Symfony 1.4: Casi siento que he traicionado a Symfony por MVC, pero espero retomar el tema en este año, y compartir algunas cosas interesantes sobre la vieja y confiable versión 1.4.
  • Instalación de Oracle en Ubuntu: Ya tengo el PDF, y me gustaría publicarlo. Fue una tarea que hicimos en conjunto con unos amigos para la materia de Administración y Seguridad de Bases de Datos en la universidad. Ha sido el proyecto de computación más frustrante que he hecho hasta la fecha, creo que repetimos la instalación al menos unas 15 veces en dos semanas, hasta que sirvió… Menos mal que existía VirtualBox, porque si no, nos hubiera tocado formatear la computadora de pruebas 15 veces, jajaja…
  • FluentViewModel: La cereza de mi sundae, jejeje. Es un proyecto en C# que hice, que consiste en una interfaz fluida para la definición de Modelos de Vista (View Models) en MVC Framework, que hace uso de clases genéricas y expresiones lambda. Está basado en FluentValidation para .NET. Espero publicar el código fuente como Open Source algún día.

Espero publicar estos posts en un futuro cercano, ojala lo logre…

Saludos, feliz viernes 🙂

Viejos posts publicados

Minientrada

Saludos a todos. Estuve revisando un poco mis documentos y encontré algunos posts que ya tenía listos para publicar desde hace varios años. Un par de ellos fueron colaboraciones al blog de un amigo de la universidad, y otros en realidad son manuales que escribí para acordarme cómo hacer las cosas. Les dejo abajo los enlaces a dos de estos posts, y espero posteriormente incluir otros más:

Conexión a fuente de datos (PostgreSQL) en iReport 3.7.3

PLT Scheme – Verificar que una cadena contiene solo letras minúsculas

Para finalizar esta entrada, les dejo una frase un tanto soberbia de Nikola Tesla, con respecto al trabajo de Thomas Alva Edison:

“If Edison had a needle to find in a haystack, he would proceed at once with the diligence of the bee to examine straw after straw until he found the object of his search… I was a sorry witness of such doings, knowing that a little theory and calculation would have saved him ninety per cent of his labor.”
– Nikola Tesla, New York Times, October 19, 1931

Traducido:

“Si Edison tuviera que encontrar una aguja en un pajar, procedería inmediatamente con la diligencia de una abeja a examinar paja por paja hasta que encontrara el objeto de su búsqueda… Fui testigo arrepentido de tales hechos, sabiendo que un poco de teoría y cálculo le hubiera ahorrado el noventa por ciento de su tarea.”
– Nikola Tesla, New York Times, 19 de octubre de 1931

Es muy curioso que esta frase parece mostrarse reactiva o contrastante a la siguiente frase de Edison:

“No me equivoque mil veces para hacer una bombilla, descubri mil maneras de como no hacer una bombilla.”
– Thomas Alva Edison

Esta frase la encontré en un archivo viejo en el que tenía una recopilación de frases que me habían llamado la atención. Nikola Tesla es uno de mis científicos favoritos, y según parece sus invenciones no son muy conocidas incluso en la actualidad, en comparación con el trabajo de Thomas Alva Edison.

Feliz día.