Mostrando las entradas con la etiqueta Herramientas. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Herramientas. Mostrar todas las entradas

miércoles, 10 de octubre de 2018

134. Deep Freeze

Hoy quiero recomendar un software que permite la experimentación, convirtiendo la PC en un cajón de arena, de esta forma cualquier cosa que se haga en la PC se recupera con un simple reinicio, (cualquier cosa que afecte al sistema, esto no necesariamente tiene que ver con archivos de documentos), como desarrolladores siempre existe la curiosidad de jugar con partes internas del S.O. o modificar configuraciones, si bien existen las maquinas virtuales que nos permiten hacer esto libremente o maquinas en Azure, existen algunas veces, que es necesario hacer alguna modificación sobre algún equipo que no tiene estas características, principalmente por que se requiere que se cumpla con las características exactas de software y configuración.

Es en estos casos en que el producto es útil, ya que basta un reinicio para volver a la configuración original.

Les dejo la liga, para que lo analicen. https://www.faronics.com/es/products/deep-freeze/enterprise

Felices lineas

viernes, 11 de marzo de 2016

66. GhostDoc

La reutilización de código es algo que siempre se debe buscar en la industria del desarrollo de software, mientras mas código pueda ser reutilizado se desarrollara con código de mayor calidad por que este código ya fue probado previamente.

Sin embargo uno de los grandes problemas que tiene el desarrollador es que no documenta, ¿Cual es la desventaja de no documentar? la desventaja es que el código se vuelve un criptico, incluso para el mismo desarrollador que lo programo, un desarrollador puede recordar sus programas por semanas, saber cual es su uso, pero recordarlo por meses o por años, es prácticamente imposible, ademas, el desarrollador va madurando, y conforme madura su estilo de programación cambia, no es lo mismo aquel primer código que escribieron cuando estudiaban que ese ultimo código de su proyecto mas reciente.

Las técnicas de desarrollo cambian, maduran se hacen mas solidas, ademas la capacidad de solucionar problemas evoluciona, como consecuencia su codificación cambia.

Con el correr de los años el código ya no es de ustedes, el código es de una versión previa de ustedes.

Eso cuando hablamos de nuestro propio código, pero ¿Que ocurre cuando es un código heredado? muchas veces una buena solución se desecha por el simple hecho de que no sabemos que existe o desconfiamos de ella.

Resultado, se codifica lo mismo varias veces en diferentes proyectos, bajo el punto de vista de diferentes desarrolladores.

Pero esto ocurre en proyectos "caseros" por que es común ir a buscar frameworks y dll que se encuentren en nuget, que nos solucionan el trabajo.

¿Por que confiar primero en un tercero que en nuestro propio compañero de equipo?

Por una razón muy sencilla, no entendemos su código.

Bueno existen muchas formas de documentar un código, pero ahí viene otro problema, documentación muy compleja, también es enviada al cajón del olvido, se debe buscar una forma en que la documentación sea concisa.

Existen diversas herramientas de documentación, pero hoy hablare de una que nos muestra nuestras clases en un formato que ya es de todos conocido, ¿Por que? por que es el mismo formato con el que se encuentra la ayuda de MSDN, la aplicación se llama GhostDoc, tiene 2 versiones una Comunity que es gratuita y una de paga.

Pueden descargarlo de esta pagina

http://submain.com/products/ghostdoc.aspx

¿Como usarla?

Bueno creemos un proyecto de Visual Studio, una clase de ejemplo

Debemos colocarnos en la parte superior del espacio de nombres, de los métodos de las propiedades, y presionar la secuencia de teclas

Ctr+Mayusculas+D

o ir al menú herramientas->GhostDoc->Document this

Que ocurre, GhostDoc trata de documentar nuestra clase con la información que posee, y si no tiene información nos deja el espacio para que nosotros documentemos


Aquí me diran esto ya lo hace Visual Studio, bueno llenemos los campos de documentación y veremos por que es te gran ayuda esta herramienta


Bien ahora debemos hacer lo siguiente:


Herramientas -> GhostDoc -> Build Help File


Nos mostrara una pantalla de opciones, si tenemos la versión gratuita no podremos modificar nada, demos "OK".



Nos genera un archivo de ayuda



que si lo abrimos nos muestra la documentación de nuestro código en un formato familiar



Felices lineas






viernes, 18 de diciembre de 2015

36. Patrones de Diseño (IV) - Proxy

Este blog inicio con la idea de construir un código ordenado, de hacer que nuestro código tuviera una mayor calidad, y hacer que el mantenimiento del mismo fuera menos costoso, nació porque hay muchas habilidades que debe tener un arquitecto antes de poder modelar una arquitectura de un sistema.

La sección de patrones de diseño se creó para brindar herramientas para evitar ese código salvaje, la sección sigue vigente, pero el blog ha crecido y junto con él se han incorporado nuevas secciones.

Pero hoy retomaremos los patrones de diseño, vamos a hablar de un patrón, que es muy sencillo porque su uso es muy común, tan común que mucha gente que no es desarrolladora, entiende el concepto o lo han usado principalmente para conectarse a internet, me refiero al patrón Proxy.

¿Qué hace el patrón proxy?, El patrón proxy juega como un intermediario que permite la creación y acceso de un objeto a otros, es decir me sirve como un puente entre objetos, su aplicación más común es el uso de proxies en internet, para acceder a paginas o para limitar el tráfico a las mismas.


Tratemos de ilustrar el patrón:


Contamos con una interfaz en la que se definen las tareas que se realizaran, esta interfaz se encuentra implementada tanto en el Proxy como en el objeto real.

El cliente consumirá la interfaz, de esta forma el Proxy se podrá agregar como intermediario sin necesidad de efectuar modificaciones en nuestro cliente.

Cuando el cliente efectué una llamada, nuestro cliente primero ira al proxy, en donde se puede agregar funcionalidad, después de eso el proceso se ira al objeto real.

Existen muchos tipos de proxy, entre los más comunes se puede mencionar:

Proxies Virtuales: Manejan la creación de objetos, en muchos casos hay objetos que requieren un tiempo muy elevado para su creación, este tipo de proxies pueden asumir la identidad del objeto como si ya estuviera creado, en lo que el verdadero objeto se genera.

Como es esto, el proxie invoca un objeto, el proxie en este caso es un objeto ligero pero que ya tiene las características del mismo, mientras el proxie crea el verdadero objeto, el proxie actúa como el objeto que se está creando, mostrando propiedades de manera preliminar.

Imaginen una clase de dibujo compleja con la que ya se puede interactuar, pero que varios de sus componentes se muestran con barras de carga, el proxy la clase compleja, que está construyendo los objetos que están en él.

Y como se crea, se construyen los métodos para tener las firmas, pero los datos se cargan conforme se está usando el objeto, estos datos se cargan en un segundo objeto, el objeto real.

Proxies de Autenticación: Muy comunes, su labor es establecer los permisos de acceso a un objeto.


El proxie tiene las mismas firmas que el objeto que se desea controlar, sin embargo analiza el acceso al mismo objeto, y si este no cumple con cierta característica no permite el acceso al mismo.


Proxie remoto: permite enviar información a través de la red comportándose como un objeto local, cuando se implementa el proxy efectúa las tareas de comunicación.

Proxie Inteligente: Puede efectuar cambios en el mensaje con condiciones específicas, por ejemplo una codificación, agregar atributos etc.

Como pueden ver es un objeto muy sencillo porque su función es solo servir de intermediario de mensajes pero que es muy útil en aplicaciones en el mundo real.


Hasta la próxima


viernes, 25 de septiembre de 2015

20. Métricas (Indice de Mantenibilidad)

Tengo varios temas que retomar con ustedes, temas que he dejado en este blog, pero que continuare escribiendo sobre estos, principalmente los patrones de diseño y el análisis de queries, ambos parte fundamental en el proceso de desarrollo.

Como he comentado en otros Post, Visual Studio, nos proporciona herramientas para poder medir el código, para darle una valoración al mismo, esto es importante ya que el código debe ser sencillo de entender por más de un desarrollador, es decir debe poder dársele mantenimiento de una manera sencilla.
Mientras más especializados son los componentes son más fáciles de controlar, estos se convierten en piezas esenciales de algo más grande.


Hoy vamos a hablar de la última métrica, que se encuentra en Visual Studio, el índice de mantenimiento, ¿Por qué la deje al último? Porque esta es la más sencilla, su nombre nos dice por si sola que es, esta nos dice que tan fácil es modificar  nuestro código, y mejor aún, nos lo indica con una bandera que va de rojo a verde.


Mientras el valor se encuentre más cercano al 100 es mejor, pero entonces me dirá, un índice de mantenimiento de 59 es bueno, la respuesta es sí, para el caso de .NET, como lo veremos a continuación.

Se puede decir que es un resumen de las otras métricas, el índice de mantenimiento  es una métrica creada allá por 1992 por Pau Oman y Jack Hagermeister, esta métrica agrupa varias otras como son el Volumen de Halstead (HV) esta es la única métrica que no hemos tocado en esta serie de post esta se define como el número de operaciones por el logaritmo base dos de operaciones distintas (N log2 n) , la complejidad ciclomatica (CC), las líneas de código (LOC) y la cantidad de comentarios.

Con estos valores se propuso una fórmula que nos da que tan mantenible es el código, la formula propuesta fue:

171-25ln(HV) – 0.23CC – 16.2ln(LOC) + 50.0Sin sqr(2.46*COM)

El paper original se encuentra en esta liga: ColemanPaper.pdf

Visual Studio no implementa en su totalidad esta fórmula, Visual Studio implementa una versión reducida de la misma, esta es:

Indice de Mantenibilidad = MAX(0,171-5.2 * ln(HV) – 0.23(CC) – 16.2*ln(LOC) * 100/171

Como se puede ver el equipo de Visual Studio elimino la parte que corresponde a los comentarios en el código.

Microsoft toma en cuenta estos rangos para limitar la mantenibilidad del código
El índice de mantenimiento cambia a amarillo entre 10 y 19 y a rojo ente 0 y 9, pero que es realmente el índice de mantenimiento.

0 – 9 Índice pobre
10 – 19 Índice Moderado
20 – 100 Índice Alto

Codificar no es solo colocar una instrucción tras otra, es necesario que seamos constructores de código de calidad, para reducir el esfuerzo de construcción, mejorar la calidad, disminuir los errores, mejorar el rendimiento, y lo más importante reducir el stress que se genera por códigos con problemas, que al final repercuten en la salud del desarrollador

Felices líneas

martes, 8 de septiembre de 2015

13. Plan de ejecución (I)

Como desarrolladores muchas veces perdemos la visión, sentimos que el código lo es todo y que todo lo que no es código va más allá de nuestras funciones.

¿Por qué digo esto?

Por un tema llamado base de datos, muchas veces como desarrolladores pensamos que el sistema es todo aquello que no es la base de datos, lo cual es un error, ya que nosotros nos dedicamos a procesar, a interpretar y a darle un valor a la información.

En cualquiera que sea nuestra área, siempre estamos trabajando con la información, por ello no debemos perder el contexto de la base de datos.

Tenemos un gran defecto, que se ve sobre todo en desarrolladores novatos, confiamos demasiado en la velocidad de los sistemas actuales, y poco en si el código que estamos empleando es el mejor para el caso en el que nos encontramos.

A este punto es al que me trae el artículo del día de hoy.

¿Si es un blog de desarrollo, por que analizar los Queries?, bueno porque al final si la base de datos no se comporta de la mejor manera, el sistema que estamos desarrollando no reunirá las expectativas para un cliente.

La herramienta que usaremos para ver esto, son los planes de ejecución. ¿Qué es un plan de ejecución?, es una herramienta que nos proporciona SQL Management Studio para comprender den forma gráfica (en realidad es un XML) que es lo que hace un Query que se ejecuta en la base de datos para que nosotros obtengamos un resultado en específico.

Desde un plan de ejecución, nosotros podemos ver ¿Qué elemento consume un mayor tiempo de procesador?, verificar si requerimos algún cambio a la estructura de la base de datos (índices, claves primarias, foráneas) o simplemente comparar cual de 2 queries es el mejor para resolver una situación.

¿Cómo lo generamos?

Generar un plan de ejecución es muy sencillo, lo único que debemos hacer es entrar a SQL Management Studio y escribir el query que queremos tomar.

Ahora bien tenemos 2 tipos de plan de ejecución el estimado, que se presenta antes de la ejecución del Query, y el Real.

Mi recomendación es que siempre trabajemos con el real, este se muestra una vez que el query termino su ejecución y nos muestra que es lo que realmente hizo la base de datos.

Bien, creemos un ejemplo de un plan de ejecución:


Paso 1: Escribamos un pequeño query


Paso 2: Activemos el plan de ejecución, para eso es necesario ir a menú consultas (query) y activar la opción Desplegar plan de ejecución Real (Include Actual Execution Plan)


Paso 3 Ejecutemos el Query

Al ejecutarlo nos aparece una nueva pestaña


Que muestra el plan de ejecución



Ahora falta analizarlo lo cual será el tema del próximo artículo, hasta pronto

lunes, 10 de agosto de 2015

11. Visual Studio Threads



Visual Studio es un IDE de desarrollo muy completo que nos permite efectuar una gran variedad de actividades más allá de la simple codificación de un programa.


En estos días en que los equipos de cómputo son cada vez más poderosos, el uso de múltiples threads para reducir tiempos de procesamiento se hace cada día más común.


Al deportar un programa Visual Studio nos permite ver que es lo que está haciendo, pero además existe una herramienta visual, que nos permite ver, que threads se están ejecutando.


¿Cuál es la ventaja de esto?, cuando hablamos de una aplicación que tenga varios módulos, varias capas, para dar el mantenimiento adecuado, es necesario saber con qué procesos nos encontramos trabajando al mismo tiempo.


El ver como se distribuyen los procesos nos ayuda a identificar errores de seguridad, de programación, o cuellos de botella.


¿Cómo se hace esto?

Bueno creemos una pequeña aplicación de consola que ejecute múltiples threads

        static void Main(string[] args)
        {
            System.Threading.Thread th1 = new System.Threading.Thread(ProcesoParalelo1);
            System.Threading.Thread th2 = new System.Threading.Thread(ProcesoParalelo2);
            th1.Start();
            th2.Start();
            System.Threading.Thread.Sleep(10000);
            Console.WriteLine("hola");
            Console.ReadLine();
        }

        static void ProcesoParalelo1()
        {
            while (true)
            {
                Console.WriteLine("proceso 1");
                System.Threading.Thread.Sleep(100);
            }
        }

        static void ProcesoParalelo2()
        {
            while (true)
            {
                Console.WriteLine("proceso 2");
                System.Threading.Thread.Sleep(1000);
            }
        }

La aplicación es muy sencilla, únicamente efectúa llamadas a proceso que toman diferente tiempo en llevarse a cabo pero que se efectúan de manera simultánea.

Si ejecutamos la consola, observamos lo siguiente:


Bien ahora pongamos un punto de interrupción

Y veamos quienes son los procesos paralelos que tenemos en nuestra aplicación, para ello iremos a el menú Degug -> Windows -> Parallel Stacks
Esto nos abre un diagrama, en el que podemos ver cuales subprocesos se ejecutan de manera simultanea
Analicemos esto:
El diagrama indica lo siguiente:
1.       Tenemos un thread que se ejecuta sobre el proceso principal
2.       Tenemos un thread en el primer proceso paralelo
3.       Tenemos un thread en el segundo proceso paralelo
Esos 3 threads los esperábamos desde un inicio, ahora ¿Por qué Visual Studio nos indica que hay 5 threads?.
Bueno coloquemos el cursor sobre el diagrama para ver que nos indica
Tenemos 2 procesos que corresponden a los threads paralelos, y uno que corresponde al thread principal, pero aparte tenemos otros 2 .Net SystemEvents, esta clase es la clase que proporciona el acceso al sistema de notificaciones de .NET, además hay un segundo thread en ejecución, este es vsHost.RunParkingWindow, este corresponde a la depuración de Visual Studio.
Saber usar las herramientas quitan dolores de cabeza al implementar aplicaciones, no solo es codificar hay mucho mas.

viernes, 7 de agosto de 2015

10. Instaladores (I)


Lo he pensado bastante en tocar este tema, ya que es un tema que fue incluido desde la versión 2.0 sin embargo he visto que aún existe un desconocimiento del mismo.

Hablo de una instalación tipo Clickonce.

¿Para que me sirve este tipo de instalación?

Este tipo de instalación es muy especial porque permite que un software se actualice, de una manera sencilla, permitiendo que todos mis usuarios tengan la misma versión de una aplicación, y lo mejor de todo esto funciona tanto en Internet como en una Intranet.

Yo puedo establecer una versión mínima con la que puede trabajar uno de mis usuarios, y tengo la ventaja de que puede trabajar desconectado sin ningún problema

Mucho se ha hablado de que las aplicaciones web son la mejor opción, pero en ciertas ocasiones se justifica crear un cliente Windows, con todo el poder de una aplicación de escritorio, con la capacidad de aprovechar el procesamiento local, y que además puede actualizarse de manera tan sencilla como lo es una aplicación web.

Otra gran ventaja de un desarrollo Windows es que siempre se verá igual no hay problema con el aspecto, al poder procesar de manera local, puedo tener aplicaciones desconectadas, que solo se conecten a la red cuando sea necesario.

La aplicación es segura, ya que puede ser firmada por un certificado digital que valide quien es el emisor del producto.

Visual Studio tiene un asistente que me ayuda a hacer este tipo de instalación, sin embargo, lo que haremos en este tutorial será configurarlo de forma manual, para determinar para que sirve cada parámetro de configuración.
  • Creemos una pequeña aplicación, un formulario sencillo en Visual Studio

  • Pongamos alguna funcionalidad, un botón que diga hola mundo

  • Al ejecutarlo obtenemos lo siguiente:


  • Ahora vamos a configurar ClickOnce Seleccionemos el proyecto, y con el botón derecho seleccionamos propiedades


  • Seleccionamos Publicar
Y que es esto, esta es nuestra pantalla de configuración de clickonce, con ella vamos a poder publicar la aplicación de manera rápida.
¿Qué tenemos en esta página?
La primera sección se denomina ubicación de la publicación, en esta sección indicaremos en donde queremos publicar nuestra aplicación, nos pide 2 rutas, una que es en donde Visual Studio dejara la publicación , y una segunda que se emplea cuando Visual Studio no tiene acceso a la ruta en la cual se publicara la aplicación


La segunda sección es Modo y Configuración de Instalación, en esta sección se establecen las principales opciones de cómo operara nuestro instalador, contamos con 4 Botones que nos abren nuevas secciones, así como la posibilidad de generar la aplicación en 2 modos:
·         La aplicación solo está disponible en línea, esta es la opción más cercana a una aplicación Web, pese a que es un winform, solo se puede usar si nos encontramos conectados a la Red.
·         La aplicación también está disponible sin conexión, esta opción nos crea una aplicación que se instala en nuestra computadora, una aplicación completa que podemos actualizar a distancia.


Cada uno de los botones nos ayuda configurar nuestro instalador, de esta forma tenemos:
Este botón abre la siguiente pantalla:
Esta nos permite elegir que archivos se incluirán dentro de la aplicación.
Es muy importante ya que esta le indica a Nuestro paquete cuáles serán los requisitos previos, y de donde los obtendrá, un requisito previo por ejemplo puede ser una base de datos de SQL o un Framework especifico


Una de las pantallas más importantes y la que hace interesante este tipo de instalador

Esta permite mostrar cómo se llevara a cabo la actualización, en que momento la debe ejecutar, y si las actualizaciones se encuentran en una ruta distinta a la aplicación, cual será esta ruta
Además aquí se puede especificar cuál será la versión mínima de ejecución para la aplicación
Datos particulares de la aplicación, ¿Quién la hizo? Si estará ligada a alguna extensión ¿Cómo se mostrara la página web de descarga?


Y por ultimo

La versión de la publicación, es muy importante llevar un order por que las actualizaciones se llevaran a cabo en forma automática.
Ahora si publicamos la aplicación
Instalando




Ahora si necesitan una actualización de su aplicación, solo necesitan modificar la aplicación y publicar nuevamente, y si configuran que debe buscar actualizaciones, la aplicación se actualizara automáticamente.

Saludos







martes, 21 de julio de 2015

8. Base de datos

Yo siempre lo he dicho el desarrollo va mucho más allá de hacer un ABC (Alta, Baja, Cambios), pese a que estamos en una época en la que la información existe disponible para todos, el desarrollo va más allá de eso.

Pero eso no quiere decir que un desarrollador debe ignorar la base de dato, o que debe saber lo mínimo de ella.

Si bien la administración de la misma pasa a manos de un DBA ,y quizás por orden exista un responsable de la base a nivel de desarrollo, todos los desarrolladores deben conocerla, ya que es parte de del todo que es la aplicación en la que están trabajando.

Pero no es solo conocerla, sino hay que conocer las reglas de la misma, es un error dar 2 pesos diferentes a la codificación de una aplicación y a una codificación en base de datos un store procedure, ambos tienen el mismo peso, ambos forman parte de la aplicación, si unoestá mal, es incorrecto, es lento el todo que es la aplicación fallara.

El desarrollador debe conocer las relaciones, los índices las restricciones, y aplicarlas, esto garantiza que se tenga una correcta funcionalidad, debe ver los planes de ejecución, analizarlos para que aquello que entregue sea un desarrollo de calidad.

El hecho de que un desarrollador no conozca su base de datos o diga que no requiere conocimientos sobre la misma, hace que su producto por tenga graves deficiencias ya que creara cuellos de botella, y problemas que en muchas ocasiones no serán visibles de primeraintención, lo mejor es tener desarrolladores completos, con el conocimiento para entrar en varias áreas y ver el sistema como lo que es.

Un todo.

Reiterando nuevamente no todo en la vida es un ABC

Hasta pronto

lunes, 20 de julio de 2015

7. Programar en paralelo (I)

A partir de .Net 4.0 llego a su madures la programación en paralelo por .net, la posibilidad de efectuar múltiples operaciones en forma simultánea con la finalidad de reducir tiempos, y emplear mejor los recursos de sistema.

El nuevo modelo nos permite emplear de forma simultanea los núcleos del procesador, anteriormente se requería un manejo a un nivel más bajo para lograr que las tareas se distribuyeran en forma paralela, hoy esto no es necesario.

Pero antes de considerar el uso de las funciones de .Net para programar en paralelo tenemos que hacer unas consideraciones.

¿Cuáles serán los recursos en los que se empleara la programación en paralelo?

Al emplear este tipo de programación se debe considerar que si el recurso no soporta cierta cantidad de peticiones, el rendimiento en vez de incrementarse puede verse afectado, esto es por ejemplo mandar un gran número de peticiones a una base de datos, o escritura a un disco.

¿Realmente será perceptible el cambio?

Si la cantidad de peticiones es tal que al emplear este tipo de programación se vea un cambio perceptible en el rendimiento, hay que usarla, pero si el cambio no es perceptible, no es conveniente incrementar la complejidad del código.

Bueno y como se emplea, el modelo más sencillo de programación en paralelo es la invocación de más de una función en el mismo instante de tiempo.

Para ello emplearemos Task Parallel Library, esta se encuentra dentro del espacio de nombres System.Threading.Tasks.
 
Y su invocación es tan sencilla como:
 
Parallel.Invoke(() => Tarea1(), () => Tarea2());
 
Lo mas interesante de esto es que podemos enviar la cantidad de tareas en paralelo que deseemos
 
Parallel.Invoke(() => Tarea1(), () => Tarea2(), ()=> … TareaN());
 
Sin embrago siempre estamos limitados por los recursos del equipo, un gran número de proceso paralelos puede tener como consecuencia que el sistema baje su rendimiento.

Otro punto muy importante, por lo regular los equipos productivos tienen una potencia mucho mayor que los equipos de desarrollo, por tal motivo cuando se construye un proceso en paralelo se debe tener esto en mente.


Hasta la próxima semana.

jueves, 9 de julio de 2015

6. Pensamiento Mágico, ayuda divina

Una actividad interesante, que debería desaparecer de nuestra mente, es emplear el pensamiento mágico de que solo se va a arreglar algo, si se arregla solo es que hay algo mal, algo esta tan inestable que el solo volverlo a hacer hace que funcione.

¿A qué se debe ese pensamiento mágico?, podríamos adjudicarlo a muchas cosas desde la inseguridad de que los pasos que se efectuaron son los correctos o la falta de conocimiento sobre cómo opera una aplicación.

Qué caso tiene hacer 100 veces la misma operación esperando que por pura casualidad en la 97 funcione, la computadora sigue una serie de pasos, específicos que no debería cambiar por ejecutar nuevamente una operación.

Pero, ¿Qué pasa si esto ocurre?, entonces no es que el programa se arreglara por sí solo, lo más probable es que exista un problema en la inicialización de algún objeto.

Ahora me dirán, es que la primera vez fallo, pero luego continuo, en este caso puede ser algún archivo temporal que sea necesario para que opere su programa.

Es común que digan reinicia y funciona, y esto en muchos de los casos es cierto, pero si esto ocurre realmente de lo que hablamos es de una inestabilidad del sistema operativo.

Es importante entender que nada se soluciona por arte de magia y menos en un mundo en el que todo se reduce a bits, a unos y ceros, en donde sí a la computadora se le dice enciende, esta enciende, 

Cuando un sistema esta inestable se debe hacer un análisis completo, de que estamos haciendo, cual es el flujo que sigue, esto nos ayudara a tener una mayor calidad en nuestros programas.

Hay que ser curiosos y no confiar en la solución mágica.


Hasta pronto

viernes, 3 de julio de 2015

5. Herramientas - Mi propio NuGet



Divide y vencerás es una frase muy común en muchos de los entornos en los que nos desarrollamos, y en el software es algo que tiene una gran verdad, el hecho de que yo trabaje con componentes altamente especializados me ayuda a erradicar rápidamente errores y nos permite que el código sea altamente reutilizable.

Uno de los grandes problemas que ha existido a través del tiempo es como organizo mis versiones de código, para que de una manera sencilla los cambios en estos módulos especializados puedan llegar a los proyectos de mayor tamaño.

Bueno ante esto podemos hacer uso de la herramienta de administración de Paquetes llamada NuGet, NuGet es un administrador de paquetes de código abierto que trabaja sobre Visual Studio a partir de la versión 2010.

¿Qué tipos de archivos podemos poner en nuestra solución?

Prácticamente cualquier tipo de archivo, incluso en diferentes versiones de Framework dándole la posibilidad de emplear la dll en múltiples proyectos.

NuGet me permite que yo publique en la red mis dll pero también las puedo publicar en una red local, dentro de una carpeta compartida y que las consuman dentro de mi organización.
Para ello tengo que hacer lo siguiente:

1.       Descargar el NuGet Package Explorer desde la siguiente ruta:  https://npe.codeplex.com/, esta herramienta me permite generar los packetes de NuGet

2.       Al abrirlo me muestra esta pantalla:


3.       Se selecciona Create a new package

4.       Esto nos muestra la siguiente pantalla



5.       Se debe seleccionar el botón edición para editar las características del paquete


6.       Agrega la o las dll al proyecto



7.       Selecciona guardar como… y guarda este módulo en la carpeta que en que se creara tu NuGet personal.




8.       Ahora es necesario que visual studio conozca la ruta, inicia Visual Studio

Ve a Herramientas -> Administración de paquetes NuGet -> Configuración del administrador de paquetes.




9.       Y una vez dentro se selecciona la ruta en donde se encuentra nuestro paquete.



10.   Cuando buscamos el paquete este ya lo podemos usar en todos nuestros proyectos, es muy importante que se maneje el número de versión cada vez que se tengan nuevos dll ya que de esta manera NuGet tendrá la forma de asignar la nueva versión




Nos leemos pronto