Blog de Francisco Velázquez

otro blog personal

Acceso asíncrono a la DB

leave a comment »

Not blocking the thread isn’t actually the most important issue: a connection normally can’t be used asynchronously anyway (i.e. this approach will work only if you send your queries on different connections). Grouping of multiple queries together is normally more important: you anyway can do some work on the client while the query is executed; but if queries are relatively simple, grouping them together saves lots of roundtrips to database. Many ORMs (NHibernate, DataObjects.Net at least) provide support for future (delayed) queries, that are more attractive from this point.

via.

Written by fravelgue

May 11, 2011 at 8:04 pm

Posted in development

Tagged with , ,

Mini-ORMs

with one comment

Desde que se publicara Massive, que a mí personalmente me impresionó. Han aparecido algunos mini-orms, como PetaPoco o Dapper.Net (usado en stackoverflow). Realmente lo podríamos llamar la capa de acceso a datos tradicional, pero que con la nueva funcionalidad de C# todo es más fácil. Una evolución de AutoMapper.


public static List<T> AutoMap<T>(this IDataReader dr)
 where T : new()
 {
 Type businessEntityType = typeof(T);
 List<T> entitys = new List<T>();
 Hashtable hashtable = new Hashtable();
 PropertyInfo[] properties = businessEntityType.GetProperties();

 foreach (PropertyInfo info in properties)
 {
 hashtable[info.Name.ToUpper()] = info;
 }

 while (dr.Read())
 {
 T newObject = new T();
 for (int index = 0; index < dr.FieldCount; index++)
 {
 PropertyInfo info = (PropertyInfo)hashtable[dr.GetName(index).ToUpper()];
 if ((info != null) && info.CanWrite)
 {
 info.SetValue(newObject, dr.GetValue(index), null);
 }
 }
 entitys.Add(newObject);
 }
 dr.Close();
 return entitys;
 }

Creo que es esto es otra muestra del rechazo a la over-engineering.

Written by fravelgue

April 6, 2011 at 9:08 pm

Posted in development

Tagged with , ,

SQL Server Sum Time

leave a comment »

Un recordatorio para sumar campos almacenados en Sql Server como Time.

SELECT cast(dateadd(millisecond,sum(datediff(millisecond,0,cast(duration as time))),0) as time) FROM ...

via.

Written by fravelgue

April 5, 2011 at 1:32 pm

Posted in development

Tagged with

Over-engineering

leave a comment »

Parece que es la palabra de moda, algo que sólo confirma lo poco establecido que está la metodología de desarrollo. Ayende dedica una serie de posts en su blog mostrando la cantidad de infraestructura que usamos, muchas veces innecesaria. De un modo parecido se situa Icaza.

La verdad creo que alcanzar esa simplicidad, y no incluir más infraestructura de la necesaria no es tarea sencilla. Si además la mayoría de las veces nos encontramos pensando en condicional.

La simplicidad es algo que Rob Conery, siempre ha pretendido conseguir, y creo que lo consigue con Massive, su nuevo de acceso a datos.

Written by fravelgue

April 4, 2011 at 5:08 pm

Arquitectura CQRS y DDD

leave a comment »

Me pareció muy ilustrativa esta diapositiva.

via.

Written by fravelgue

March 17, 2011 at 7:04 pm

Posted in .net

Tagged with , ,

Code Smell: Nombres largos

leave a comment »

El tema del naming es algo que siempre me ha preocupado muchísimo. Y con el paso del tiempo he llegado a la conclusión de que si tus métodos o clases tiene nombres excesivamente largos, seguramente es porque las responsabilidades no están bien separadas o diferenciadas.

Una clase con mucha funcionalidad diferente tiende a tener métodos con nombres largos para diferenciar la funcionalidad. Una clase con una única función suele tener métodos claros, sencillos y cortos.

Por tanto, si ves que necesitas nombres muy largos, deberías pensar que hay algún defecto en el diseño de la aplicación.

Written by fravelgue

February 28, 2011 at 9:09 pm

Posted in development

Tagged with

Mejoras para iPhone

leave a comment »

Que le vamos a hacer siempre encuentro algo a mejorar. La primera de ellas, y creo que la más problemática es la gestión de la batería. iphone gestiona fatal la batería y no me refiero a que dura poco, sino que sólo tiene 2 estados, con batería o totalmente apagado. Nunca con mis anteriores teléfonos (SE, Nokia, y BB) me había pasado que no me sonara la alarma porque el telefono no tuviera batería. Creo que se deberían suprimir otras funciones antes y apagar el telefono pero que aún así las alarmas sonaran. Apaga la música, apaga el wifi, apaga los todo, y guarda un poco de batería para la alarma o una llamada de urgencia.

La segunda es menos importante pero a los obsesionados con los atajos le encantará. En cierta manera relacionada con la propuesta de Aza. La idea es introducir unos comandos básicos que se harán dibujando una letra sobre la pantalla para abrir una determinada aplicación, independientemente de si el telefono está bloqueado o no. Parecido a la doble pulsación, para ir al repreductor de música. Por ejemplo, si escribimos una C (que ocupa toda la pantalla) el telefono abrirá la cámara, si en cambio escribimos una M el iphone abriría el reproductor de música.

Written by fravelgue

February 16, 2011 at 6:34 pm

Posted in mobile

Tagged with ,

¿Qué pasa con Nokia?

with one comment

Esto pretende ser una recopilación de enlaces, sobre todo lo que ha acontecido con la desición de Nokia de adoptar Windows Phone para su división de smartphones. Desde la filtración del memo de Stephen Elop, CEO de Nokia, corren rumores de que Nokia optaría por WP. Algunos anunciaban que Nokia necesitaba cambios. La verdad desde que se decidió al nuevo CEO se sabía que muchas cosas iban a cambiar en Nokia, pero hasta este viernes todo eran especulaciones.

Hay muchas opiniones en contra del acuerdo, parece que muchos empleados. Aunque hay otros puntos de vista, en los cuales parece que era la mejor salida.

Mucha gente decía que la elección de Nokia debía ser su propio Meego. Seguramente será un excelente SO pero desde fuera paracía que nunca iba a ser capaz de materializarlo en terminales.

Así que prácticamente quedaban dos opciones Android y Windows Phone. Creo que aquí Nokia optó por no alimentar a su máximo competidor, y por tanto optó por WP. Me gusta la opinión de Trasatti, en la que Nokia también podía ofrecer los Mapas. La verdad es que si funciona el acuerdo, las dos tienen muchas que ganar.

Creo que Microsoft será capaz de ofrecer un timeline mejor que Nokia. La velocidad en el desarrollo en esta empresa se ha incrementado muchísimo. Y aunque ahora hay muchas quejas al navegador de WP7, creo que no tardarán mucho en sacar una versión de ie9. Microsoft esta apostando seriamente por aplicaciones web y en otro orden, Windows8 correra sobre ARM también.

Ahora sólo nos queda ver como funciona, y si son capaces de entregar terminales competitivos (esto seguramente sí) y de una forma rápida. Parece que Nokia no descarta tampoco lanzar algún terminal con Android.

Written by fravelgue

February 14, 2011 at 10:49 pm

Posted in mobile

Tagged with , , ,

ASP.NET4 y MobileCapabilities

leave a comment »

Parece que en la nueva versión del framework han realizado algunas modificaciones BrowserCapabilities, para adaptarse al mundo móvil y permitir usar diferentes repositorios de capabilities, por ejemplo, WURFL.

HttpCapabilitiesProvider.
– HttpCapabilitiesEvaluator.

En la librería de 51degrees ya hacen uso de ella.

PS. Algo que debería haber publicado antes 😛

Written by fravelgue

February 13, 2011 at 11:22 pm

Posted in development

Tagged with , , ,

Consultar el próximo bus en Sevilla (Tussam)

with 2 comments

Con la ayuda de un emulador de java, mi querido Fiddler, y 30 líneas de HTML/JS puedo consultar cuando llega el bus sin depender de aplicaciones iphone.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title></title>
    <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0;">
     <style type="text/css">
    </style>
    <script language="javascript" >
        //http://www.infobustussam.com:9001/services.aspx?c=e&p=541&l=B5&v=1.3&k=0FE0D568420E1E27DC44BFDC210C84B2
        function createLink() {
            var l1 = "http://www.infobustussam.com:9001/services.aspx?c=e&p=",
                l2 = "&l=",
                l3 = "&v=1.3&k=0FE0D568420E1E27DC44BFDC210C84B2";
            document.getElementById("search").href = l1 + document.getElementById("tbxStop").value + l2 + document.getElementById("tbxLine").value + l3;
        }

    </script>

</head>
<body>
    <h1>Tussam - Bus Sevilla</h1>
    <label>Línea: </label><input type="text" id="tbxLine"  onchange="createLink()"/> <br />
    <label>Parada: </label><input type="text" id="tbxStop" onchange="createLink()" style='-wap-input-format: "NNN"' /> <br />
    <a href="" id="search">Buscar</a>
</body>
</html>

Written by fravelgue

February 11, 2011 at 9:56 pm

Posted in mobile

Tagged with , , ,

Design a site like this with WordPress.com
Get started