feedburner

La Tecnologia esta dominada por dos tipos de personas:
aquellos que entienden lo que no administran,
y aquellos que administran lo que no entienden.
- Anonimo

Mostrando entradas con la etiqueta C#. Mostrar todas las entradas
Mostrando entradas con la etiqueta C#. Mostrar todas las entradas

Problema en re-ubicar objetos en Visual Studio

Etiquetas: , , ,

No se si esto les ha pasado pero a mi me dio un gran dolor de cabeza la semana pasada y consumió 2 días enteros de mi tiempo hasta que por fin pude dar con la solución. Así que en caso estés creando/adicionando de manera dinámica objetos (controles) en algún 'User Control' que estés empleando el cual a su vez esta contenido dentro de un 'Tab Control', quizás hayas experimentado el mismo extraño comportamiento con la GUI (Interfaz gráfica de usuario) que estas programando.



Síntoma: Los objetos son creados y ubicados como esperabas, pero si escoges (haces click) en una lengueta diferente y luego regresas a donde estabas los objetos puede que se hallen ahora en una ubicación completamente distinta o hasta fuera de la vista del 'User Control'.

Causa: Parece que al adicionar controles (objetos) directamente a una clase del tipo 'User Control' no permite que los eventos para configurar los tamaños de los mismos se reporten correctamente, así la ubicación de estos controles es errada, o en otros palabras, estos controles no aparece en el lugar esperado a como estaba originalmente.

Solución: Adicionar un simple panel o una tabla (no he intentado con otros contenedores) como base inicial en el 'User Control', luego a este panel o tabla le adicionas dinámicamente los controles (objetos). Con esto puedes usar las propiedades de 'docking' y 'anchor' para ubicar los controles en cualquier parte y esta ubicación no cambiara como ocurrió antes.

Este problemita parece que no esta documentado en ninguna parte, o al menos yo no lo pude ubicar por mas búsquedas que hice. Encontré un problema similar reportado en Experts Exchange y con la lectura en detalle del articulo referido en TechRepublic puse en practica la solución sugerida. Aun así, debo comentar que encontrar este similar problema tomo mucho tiempo, por lo que pongo aquí este post para ayuda de todos los programadores dispersados a lo largo y ancho del mundo de habla hispana evitando asi situaciones como las de la imagen (je! je!), y para que en caso me vuelva a suceder sepa donde encontrar la solución. La memoria puede ser muy volátil! ja! ja! ja!

Herramientas para Expresiones Regulares

Etiquetas: , ,

Nuevamente las expresiones regulares se interponen en mi camino, consumiendo mas de mi tiempo de lo que realmente merecen, asi que en busca de ayuda para resolver el contratiempo de lidiar con estas una vez mas (ya antes hable de ellas aqui) ubique un par de herramientas para verificar que tu expresion regular o "regex" funciona correctamente, aqui la lista:

  • Expresso, una herramienta para construir y probar expresiones regulares. Por lo que encontre parece ser la mas popular, incluso esta el codigo fuente disponible.
  • Regular Expression Workbench, en su version 2.0 es ya antigua y el link original para descargarla no funciona, pero hace poco su autor tambien lanzo el codigo fuente y lo puedes encontrar aqui.
  • reWork es otra buena opcion online, no necesitaras bajar ningun programa como en los casos anteriores pero la desventaja es que no soporta regex de .NET, las cuales tienen algunas particularidades bastante disimiles a los demas lenguajes, porque? es Microsoft, que esperabas!


Hoy mi mayor contratiempo fueron asignar grupos y hacer matching correcto para extraer la secuencia de caracteres que necesitaba, si tambien haz tenido estos problemas seguro te agradara este articulo donde los explican de manera concisa y directa... es solo para .NET... sorry Unix/Linux extremistas... jajaja!!!

Gracias por leer.

Porque uso VS.NET C# en vez de LabWindows/CVI

Etiquetas: ,

Si deseas crear aplicaciones para testing, lo mas seguro es que has oido hablar de los productos de National Instruments, no? No niego que el LabView sea una poderosa herramienta para quien no sabe nada de programacion, pero para el ingeniero promedio de nuestros dias el saber algun lenguaje de programacion es esencial. Entonces, yo sugiero que es mejor emplear Visual Studio .NET C# (se lee "Si Sharp") que LabWindows/CVI.

Si te aventuras a usar LabWindows/CVI habran tres distintas labores que deberas afrontar: desarrollar tu set de pruebas, desarrollar la plataforma o entorno donde correran tus pruebas (entiendase la interfase de usuario), y la infraestructura para soportar los distintos equipos que controlaras (esto ultimo lo puedes adquirir de las companhias que te vendieron el equipo, es decir las librerias). La primera y la segunda son inevitables, la tercera quizas podrias evitarla si alguien te pasa los drivers o si los encuentras en la web de National Instruments o la del fabricante listas para bajarlas gratuitamente, de lo contrario tendras que comprarlas o crear tus propias librerias de manera especifica para la platforma de National Instruments.



Es justo aqui donde vienen mis no tan ponderados cuestionamientos. Contamos con el personal necesario para asignar estas labores? La respuesta normalmente es no, ya que lo mas probable que este pasando es la interminable reduccion de personal. Que tal si no consigues las librerias? Quien te va a programar estas? Sabes cuan complicado es codificar librerias usando un lenguage tan arcaico como el CVI (que dicho sea de paso esta basado en ANSI C). National Instrument es un entorno cerrado, lo cual te hara dependiente de sus productos y lo que es peor aun sus infladas licencias para desarrollo y ejecucion que te las cobran por equipo, es decir si tienes 5 PCs donde correr tu programa entonces pagas 5 licencias de ejecucion sin contar con la de desarrollo que ya debes haber pagado. Ademas, el debugging es tedioso y nada amigable si es que logras dar con el origen de la falla o error en el programa. La aplicacion que crees no sera compacta aunque probablemente robusta si logras corregir todos los errores, pero el performance de tu PC sera no precisamente light.

La contraparte de usar C# es que las primera labor sera igual o mas sencilla de ejecutar con un lenguage tipo objecto como este, la segunda es practicamente "drag and drop" al mejor estilo del aplicativo Visio para crear graficos y diagramas. Para la tercera puedes de manera sencilla crear tus propios drivers si es que no existen ya (muchos fabricantes estan ahora proporcionando librerias para VS.NET al igual que para National Instruments). Todos los equipos de testing soportan comunicacion serial (RS232 o similar), GPIB (IEEE 488.2), y/o telnet; entonces lo unico que tienes que hacer es usar las capacidades propias del VS.NET para comunicaciones seriales, bajar las librerias de National Instruments para soportar GPIB, o bajar alguna libreria o C# class de telnet para VS.NET. Simplemente usas tu manual del equipo para ver la sintaxis de los comandos que puedes enviar usando alguno de los 3 metodos mencionados.



Para realizar todas estas labores no necesitas contratar nuevo personal, ni pedirle ayuda a Help Desk (aunque muchos departamentos de IT ahora soportan C#) y mucho menos contratar outsourcing. Esta demas decir que el entorno de VS.NET no es precisamente abierto, pero la comunidad online que desarrolla y comparte aplicaciones online es inmensa en comparacion con la de National Instruments. El debugging es super rapido y amigable, puedes poner breakpoints donde te de la gana y ver como evolucionan tus variables. Las licencias de ejecucion no existen y las de renovacion anual tampoco, simplemente creas tu ".exe" y lo copias en la maquina donde quieras que corra.

No te voy a mentir diciendo que VS.NET C# es perfecto (es mas, no soy fanatico de los productos Microsoft ni trabajo para ellos), pero si sabes programar (no se requiere ser experto), quieres ahorrar tiempo y dinero en el desarrollo de tus aplicaciones, y cuentas con los manuales del equipo, entonces tu mejor opcion es C# en vez de LabWindows/CVI.

Gracias por leer.

Expresiones Regulares... que es esto?

Etiquetas: , , ,

Si ya lees esto, y crees que hablo de dichos, refranes o frases, entonces estas errado. Hablo de una poderosa herramienta para la busqueda de patrones en textos normalmente, o mejor dicho en secuencias de caracteres para ser tecnicos. Es algo muy usado por los programadores de casi cualquier lenguaje.

En mi caso, lo necesito de vez en cuando y de cuando en vez, entonces dada la infrecuencia me cuesta recordar todo el tiempo sus reglas y casi siempre no tengo algun libro de consulta a la mano. A proposito, el Regular Expression - Pocket Reference de O'reilly es muy bueno.



Pero, la sacrosanta (y maldecida tambien) Internet siempre me salva, aunque no siempre encuentro una buena referencia online inmediatamente.... al menos, hasta hoy.

Aqui los dejo con el sitio, que hasta el momento me parece tiene el mejor resumen, para aprender y recordar como usar las Expresiones Regulares. En este caso particular en el ambiente .NET y lenguaje C# (se pronuncia "si sharp" por si no lo sabias... jeje!!).
Gracias por leer.