Todas las entradas de: peplluis

Visual Studio, Añadir como Vinculo y con cariño

Tengo la suerte de poder compartir conocimientos con una gran diversidad de profesionales y entre ellos con un nutrido grupo de desarrolladores. En este sentido a menudo soy espectador de cómo somos víctimas de nuestra propia sinergia y obviamente a menudo nos vemos sorprendidos por utilizar o adoptar técnicas incorrectas simplemente porque así lo hicimos o mal entendimos desde el principio. Me encanta compartir esto con vosotros, pues son historias que algunas veces ponen al descubierto las mas retorcidas formas de interpretar la tecnología en nuestro “aburrido” día a día… para los que no quieren convertirlo en “divertido”.

Intentare abreviar e ir al grano pero creo que será difícil, os explicare que se trata de la forma en que gestionamos nuestros proyectos, si bien en equipos organizados el propio control de código nos ofrece herramientas suficientemente sofisticadas para evitar las malas prácticas, conduciéndonos y aplicándonos metodologías sobradamente contrastadas; existe aún un gran grueso de pequeños equipos de desarrolladores que “a su bola” realizan su trabajo en un frenético pulso por sacarse las tareas de encima sin reparar en las graves consecuencias a nivel de costes horarios cuando dejan de ocupar su puesto de trabajo.

Dicho esto, la semana pasada recibí una llamada de un buen colega, pidiéndome soporte para averiguar si podíamos entender unos inexplicables problemas con alguno de los proyectos que un antiguo empleado había liderado y al parecer era un problema de gran magnitud.. Por supuesto mi interés en entender tal misterio fue tan poderoso que no tarde ni una hora en acudir.

Recordad: Los grandes problemas se resuelven con pequeñas soluciones 🙂

Se trataba de un equipo de tres desarrolladores, creando sus proyectos en un recurso compartido “mal hecho!”, cada uno gestionando su parcela “el colmo!” y para rematarlo algunas librerías y proyectos eran base para compartir “peor imposible!” , puede parecer irreal pero os aseguro que es real y esta situación se produce en mas ocasiones de las que podemos imaginarnos.

El problema radicaba en que ciertos proyectos parecían no compilarse adecuadamente o que las referencias a ciertas partes en común no terminaban de contener la totalidad de las funciones diseñadas. Ummm… ciertamente extraño.

Al dar un vistazo por alguno de los proyectos base, pude observar que se compilaban como parte de la solución, sin embargo en otros proyectos más simples en vez de crear una solución conteniendo los distintos proyectos, se hacía referencia a clases que estaban ubicadas en “ese recurso compartido”, cuál fue mi sorpresa al observar que el antiguo empleado, cuando necesitaba alguna clase base para su proyecto… simplemente la añadía al proyecto! Sin atinar que cuando simplemente utilizas la opción de “Agregar Elemento Existente” en el explorador de Visual Studio lo que estás haciendo es una copia del “archivo en cuestión” a la ubicación de tu proyecto, por lo tanto cuantas modificaciones sobre el mismo serán para ese proyecto y no del origen del mismo.

Después de investigar algunos de los proyectos en los que “el antiguo empleado” había trabajado, nos quedo un rastro de algunas decenas de clases con el mismo nombre en diferentes proyectos y por supuesto diferentes contenidos, supongo que dicha persona nunca llego a entender lo que realmente estaba haciendo, pues en otro caso debo pensar que fue negligencia total.

Salvando las distancias quiero pensar, que en algún punto del camino cuando este profesional aprendía como utilizar las herramientas, no presto suficiente atención para entender que existen dos formas distintas para añadir un “elemento Existente”… está claro que el escenario de una clase compartida en un recurso compartido la opción correcta no es “Agregar”, si no “Agregar como Vinculo” solo debería haber prestado un poquito de atención en el combo que ofrece las opciones de agregar, supongo que ello hubiera ahorrado un montón de angustias.

Finalmente y a titulo de reflexión, tal y como empecé diciendo me gustaría pensar que somos víctimas de nuestras propias sinergias y desgraciadamente no atinamos en ellas hasta que alguien atina a explicarlas. Bien para que no quede en entredicho, si por alguna de aquellas casualidades alguien más desconoce este matiz, estar encantando de haber sido útil.

Recordad: Los detalles más insignificantes son los que causan los problemas más graves! 🙂

IMPORTANTE: La version “Basic” de Team Fundation es gratis!… que excusa tienes ahora?

Saludos,
PepLluis,

Metro Style app development.

Con la intención de ir abriendo camino, me complace compartir un enlace que os mantendrá entretenidos algunas horas J

Os estaréis preguntando de que estoy hablando… pues bien: creo que habla sobre “Como no perder tu estilo en el metro mientras intentas aprender development” esto último desconozco de lo que se trata. Jajaja Broma!!

Sin duda se trata de un valioso recurso para introducirnos haz clik en :

Metro style app development 

Que la lectura os sea agradable y aprendais que es «Metro Style».
PepLluis,

Initialize SerialPorts in .Net microFramework

using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using Supplier.NETMF.Hardware;
using Supplier.NETMF.Hardware.BoardModel;
using System.IO.Ports;
 
namespace Application1
{
    public class Program
    {
        static SerialPort MyCom; 
        public static void Main()
        {
            // 'Ports' name reference may be different for each manufacturer
            MyCom = new SerialPort(Ports.COM1,9600);
            while (true)
            {
                // Main loop
	       // write your code here
            }
        }
    }
}

PowerTools : Remove and Sort Imports

Uno de los guiños de extensiones de Visual Studio como las Power Tools, son detalles como poder eliminar las referencias no utilizadas y al mismo tiempo ordenarlas.

No es que sea algo crucial, emocionante o imprescindible, pero lo cierto es que sobretodo en proyectos compartidos antes de entregar el ‘release’ final soy de esos que dedica un montón de horas en pulir todo aquello que aunque escrito no tiene ninguna utilidad.

 

Pienso sinceramente que la calidad del código, también pasa por entregar justo lo que interviene. Asi pues… con el “Remove and Sort Imports” de las power tools y aunque parezca mentira voy a ahorrarme mi tiempecillo J

Saludos,
Pep Lluis,

UPDATE ME DEVUELVE ERROR : CON LA FECHA DEL DGV

Desbordamiento de SqlDateTime. Debe estar entre 1/1/1753 12:00:00 AM y 12/31/9999 11:59:59 PM.

En determinados escenarios donde intervienen plataformas en múltiples lenguajes, puede ser necesario implementar unas funciones extras para que la interacción entre formatos se realice correctamente. (sin hablar de las excepciones para tener en cuenta si sumamos el tema de zonas horarias).

Una idea seria realizar la adaptación entre la fecha y hora del objeto (en este caso el DGV) y la asignación de los valores que retornaran, cuando los extremos esperan diferentes formatos.

Puedes capturar el “cellFormating” del DGV y controlar la conversión en el “Parse”.

Aquí tienes un Ejemplo :

http://msdn.microsoft.com/es-es/library/system.windows.forms.datagridview(VS.80).aspx

En otras situaciones donde no disponemos de los “Format” y “Parse” podemos optar por creamos nuestra propia estructura…

   

    ‘ Definicion de la estructura para Fecha/Hora

    ‘ segun la definicion del lpSystemTime

    Structure FechaYHora

        Public Año As UInt16

        Public Mes As UInt16

        Public DiaDeLaSemana As UInt16

        Public Dia As UInt16

        Public Hora As UInt16

        Public Minutos As UInt16

        Public Segundos As UInt16

        Public Milis As UInt16

    End Structure

 

    ‘Funciones Fecha/Hora sistema

    Declare Function GetSystemTime Lib «Kernel32.dll» (ByRef lpSystemTime As FechaYHora) As UInt32

    Declare Function SetSystemTime Lib «Kernel32.dll» (ByRef lpSystemTime As FechaYHora) As UInt32

 

    Private MiFechaYHora = New FechaYHora

 

    Sub DelServidor(ByVal FechaHoraOrigen As DateTime)

        MiFechaYHora.Año = Convert.ToUInt16(FechaHoraOrigen.Year)

        MiFechaYHora.Mes = Convert.ToUInt16(FechaHoraOrigen.Month)

        MiFechaYHora.Dia = Convert.ToUInt16(FechaHoraOrigen.Day)

        MiFechaYHora.Hora = Convert.ToUInt16(FechaHoraOrigen.Hour)

        MiFechaYHora.Minutos = Convert.ToUInt16(FechaHoraOrigen.Minute)

        MiFechaYHora.Segundos = Convert.ToUInt16(FechaHoraOrigen.Second)

        ‘ luego debeis asignarlo segun convenga… desde o hacia el control

        ‘ o llamando a la funcion de asignar la nueva entrada

        SetSystemTime(MiFechaYHora)

    End Sub

 

Espero te ayude,
Pep Lluis,

Windows Phone 7 Update (Where’s My Phone Update?)

Desde su anuncio, muchos de nosotros estamos ansiosos de actualizar nuestro Phone 7, pero es cierto que cada vez cuando intentamos actualizarlo desde el Zune recibimos el mensaje de que la nuestra es la ultima versión. La confusión viene pensando de que dicha actualización depende directamente de MS… y lo cierto es que depende de las operadoras propietarias del terminal.

Para mas información podéis dirigiros al siguiente link :

Estado de la actualización de mi Windows Phone 7

Saludos sufridores en espera de poder actualizar y con el deseo de ahorraros ansiedad!  🙂
Pep Lluis,

Terminal con Windows Phone 7

Después de mucho buscar he encontrado un suministrador que puede facilitarme algunos terminales de LG con Windows Phone 7. En concreto el LG-E900, si alguno de vosotros estáis interesados, se trata de terminales libres sin contratos con operador y a un precio razonable.

Ya sabéis que al ser libres acostumbran a estar por encima del precio que los ofrecen los operadores en «bundle» junto con el servicio.
En mi caso, la intención es probar las aplicaciones fuera del emulador y sin necesidad de descargarlo en el Marketplace. Eso si, previo registro en el HUB.

Intentare manteneros informados de cómo progresa el tema, si es que os parece de interés.
Y ya sabéis si alguien está en la misma situación, podéis contactarme.
Saludos con sabor a WP7,
Pep Lluis,