domingo 27 de julio de 2008
Migrar a C# desde Visual Basic
Hoy me preguntaron mi opinión sobre si debería dejar de escribir código Visual Basic y pasarse a C#.Mi respuesta: es totalmente una decisión personal.
Los dos lenguajes, son totalmente equivalentes. Todo lo que puedes hacer en uno, lo puedes hacer en el otro. Yo sigo programando en Visual Basic y no me he encontrado con ninguna limitante del lenguaje. No pienso cambiar, al menos que en algún proyecto se me solicite de forma explícita por capricho del que lo dirija.
Sin embargo, identifico las siguientes ventajas en cada uno:
Ejemplos de código de cosas complicadas: están principalmente en C#.
Facilidades de Visual Studio para programar como Intellisense y otras tecnologías: están o son más completos principalmente en Visual Basic.
Particularmente, Visual Basic tiene algo imbatible. El objeto My. Con él, en Visual Basic se hace un ping con una línea de código, mientras que en C#, se necesitan cerca de 10. Adicionalmente, Visual Basic tiene heredado desde las versiones que no eran OOP, el concepto de los módulos. Si necesitas hacer una funciona que le pases un parámetro y te lo devuelva transformado, ¿qué necesidad de estar declarando un clase y un método estático, etc, etc? Creas un módulo y lo usas.
C# requiere mayor cuidado a la hora de escribir código, porque diferencia entre mayúsculas y minúsculas. A causa de eso, no autocorrige el código. También requiere el uso explicito de llaves { } que se usan para armar las estructuras de control. Todas las sentencias deben terminarse con punto y coma (;), lo cual genera muchos errores por olvidarse de ellos.
Si se quiere migrar a C#, puede plantearse a partir de los nuevos proyectos que se tengan, pero no tiene sentido reescribir el código que ya se ha hecho en Visual Basic. También, una solución puede tener proyectos en diferentes lenguajes. Todos los lenguajes .Net generan el mismo código intermedio (MSIL), por lo cual son equivalentes a la hora de ejecutarse en el procesador.
Espero que esto les aclare un poco el panorama.
También puedes ampliar algo más en este otro post que encontré por ahí.
Etiquetas: Informatica, Programacion, Software
jueves 24 de julio de 2008
Paciencia, la enseñanza de la informatica
De las cosas más dificiles y duras que tiene mi profesión, es la gran cantidad de períodos en donde se debe esperar.Tanto es así que hasta en los cursos básicos de Sistemas Operativos uno de los primeros temas que se ve es la Espera Activa, y como luchar contra ella. Pero esto es solo una analogía técnica sobre lo que sucede en la realidad.
¿Pasará en todas las actividades humanas? ¿Será en otras tan notorio como en la informática?
En este momento estoy instalando un SQL Server 2005. Mi actividad más importante durante el procesos de instalación del producto, fue mirar la pantalla. Ver como se llenaba la barrita verde de progreso y como aparecieron 2 errores durante el procesos.
Si yo hubiera planificado hacer otra cosa, no habría podido ver los errores a tiempo, y hubiese perdido hasta 4 veces el mismo tiempo. Hay quienes lo explicarán por la ley de Murphy, pero la verdadera ley de Murphy hubiera hecho que no aparecieran errores por la simple razón de que yo estaba mirando el proceso.
Además de tener que esperar durante la instalación de productos, tenemos que esperar cuando corremos otros tipos de procesos, como pueden ser los procesos de ejecución por lotes (batch) o la ejecución de consultas sobre bases de datos. Ni que hablar de cuando hay que esperar por un proveedor. ¡O por un cliente!
Seguramente, el proveedor tiene que esperar a terminar un proceso que hace que al tiempo de trabajo humano, se le agregue el tiempo de trabajo electrónico. Y al cliente, otro tanto.
Por eso, trabajar en informática desarrolla especialmente nuestra paciencia. La ciencia de vivir en Paz Interior. Quienes no tengan altos niveles de paciencia, o no se preocupen en desarrollarlos, la informática les negará su augurio.
He conocido muchos casos de personas que se han acercado a la informática con diferentes niveles de éxito. Mucho de ese éxito (o no) se debe al nivel de paciencia de la persona. Tanto el que desarrolla internamente como externamente colaboran en ese nivel de éxito. Pero solo el equilibrio entre ambos, podrá llevar a que la persona aumente cada vez más su potencial.
Supongamos un cuadro de doble entrada, donde en las abcisas colocamos la paciencia interna y en la ordenadas la externa, como la paciencia que se demuestra hacia los interlocutores. Ambas tendrán los valores Bajo, Medio y Alto.

Si aumentamos el nivel de paciencia externa, la gente nos verá más amables y generaremos confianza sobre las actividades que realizamos. Mientras que la paciencia interna, si es muy baja nos hará aumentar considerablemente el nivel de estrés y si es muy alta, hará que surjan problemas que no podamos manejar y quedará en evidecia nuestra incompetencia.
Una vez logrado tal equilibrio, el problema es mantenerlo. Saber cuando estamos aumentando nuestro nivel de paciencia interna para bajarlo y que no parezca que es simplemente dejadez, y saber cuando empieza a bajar para que no nos aumente el nivel de estrés.
Etiquetas: Computadoras, Mi Visión, Software
sábado 19 de julio de 2008
Multiples escritorios en Windows Vista y XP
Una de esas "maravillas" que tiene Linux, son los múltiples escritorios. Windows también los tiene, pero deben instalarse aparte y Microsoft no los provee. La primera vez que usé multiples escritorios fue con Windows NT 4.0. Pero hasta el día de hoy no tuve la necesidad de usarlos.

Una rápida búsqueda en Google me llevó a conocer Vista/XP Virtual Desktop Manager. No solo es gratuito sino que también es de código abierto.
Vista/XP VDM funciona tanto en Vista como en XP. Pero se obtiene un mejor resultado en Vista gracias a las nuevas APIs de vista previa que incluye.
Lo estoy usando desde hace varias semanas para correr una aplicación de edición de video, ya que me encuentro con la necesidad de procesar videos. La aplicación utiliza una ventana modal, por lo cual, me dificulta utilizarla por varias horas. En especial, me hace dificil la tarea de ver y trabajar con los archivos del escritorio.

Así que ahora corro esa aplicación (el querido Windows Movie Maker) en un segundo escritorio y me quedo en el primero para hacer el trabajo habitual.
Para otra cosa que es util, es para esconder ventanas de descargas. ¿Cuántas veces te pasó que cuando la descarga finaliza viene a primer plano justo cuando estabas escribiendo y ocasionas la cancelación de la descarga cuando estaba a punto de terminar?
Espero que si alguien anda con un problema similar el mio, o simplemente es curioso, ¡lo aproveche!
Etiquetas: Nuevas tecnologías, Programacion, Software, Windows Vista
jueves 12 de junio de 2008
FTP de Linea de Comando
Cuando me preguntan que cliente de FTP recomiendo, siempre menciono el de línea de comandos de Windows. ¿Por qué? Porque es el más estandar y sencillo de usar. Aunque tiene alguna mínima desventaja frente a los gráficos: no tiene barra de progreso, por lo cual, no se puede saber cuanto falta por bajar o subir.
A continuación, un breve manual de instrucciones.
Para conectarse, ejecutar en una línea de comandos:
ftp nombre_o_ip_del_servidor_ftp
Una vez conectado, se nos pedirá usuario y contraseña. La contraseña no aparecerá escrita, pero será ingresada.
Dentro del FTP, podremos ejecutar los siguientes comandos.
- cambiar de directorio: cd nombre_del_directorio
- listar los archivos con permisos, tamaño y propiedades: dir
- listar los archivos en formato simple: ls
- obtener un archivo: get nombre_de_archivo
- subir un archivo: put nombre_de_archivo
- obtener la lista de comandos: ?
- obtener ayuda sobre un comando: ? comando
La descarga o las subidas las hará hasta o desde el directorio "Local". Para ver o cambiar el directorio local se usa el comando: lcd [nuevo_directorio]
La imagen es un ejemplo de una sesión de FTP:
En cualquier momento podremos desconectarnos ejecutado: bye
Si queremos seguir trabajando con el FTP y cambiar a otro servidor o entrar con otro usuario, podemos usar los comandos close y open nombre_o_ip_del_servidor_ftp.
Espero que les sirva y no vuelvan a usar Internet Explorer como cliente FTP nunca más en sus vidas!
Etiquetas: Software
miércoles 11 de junio de 2008
Expediente electrónico en Ministerio de Desarrollo Social
Una de las cosas más interesantes que se ha dado en este año, es la instalación de Q-expeditive en el Ministerio de Desarrollo Social (MIDES).Urudata Software, proveedora de dicho producto y casualmente el lugar donde me desempeño actualmente, logró entrar con su producto estrella al área de expediente electrónico en instituciones de gobierno de Uruguay. Actualmente el producto ya estaba implementado con mucho éxito en La Paz y Santa Cruz, las dos ciudades más importantes de Bolivia.
El ministerio ha puesto en su página la noticia al respecto, así como ya estaba hace algún tiempo en el portal de Urudata, extraída de otra noticia anterior del Ministerio respecto a la firma.
Q-expeditive es un producto muy versatil para expediente electrónico, basado en Q-flow, la solución de BPM desarrollada por Urudata. Q-flow puede ser descargado gratuitamente para evaluación y uso no comercial.
Etiquetas: Software, Urudata, Uruguay
viernes 6 de junio de 2008
P2V - Virtualizar maquinas fisicas
Uno de los grandes problemas de la virtualización, es que llegado cierto momento, algunos de los servidores que se quieren eliminar físicamente pueden ser demasiado complejos para migrar.Por ejemplo, un servidor de Active Directory, de SQL o de Web pueden migrarse, en general, con pasos muy fáciles, instalando los productos de nuevo y copiando los datos. Sin embargo, productos más complejos, como Microsoft Dynamics, tienden a convertirse en un dolor de cabeza si no se conoce en detalle su implementación.
Para estos casos, donde el costo de migración a un equipo nuevo es tan alto, las empresas que tienen productos de Virtualziación, han desarrollado métodos para migrar equipos físicos a máquinas virtuales.
En mi caso, me enfrento a 2 problemas: migrar un GreatPlains (a.k.a. GreatPains) y un Microsoft CRM. Ambos servidores fueron instalados relativamente hace poco tiempo, por lo cual ya tienen el último software, están bien instalados y reinstalarlos en una VM es suficientemente costoso como para buscar alternativas.
Microsoft utiliza 2 productos sobre Windows Server 2003 que permiten la virtualización. Uno de ellos es ADS 1.1 (Automated Deplyment Services) y VSMT (Virtual Server Migration Toolkit). Ambos vienen empaquetados en un mismo instalador.
Una vez instalado los productos, se debe seguir un instructivo bastante corto que indica como recoger los datos para crear la VM, hacer la caputra de la imagen del sistema, y ponerlo en funcionamiento en Virtual Server 2005 R2.
Casualmente, como no todo puede ser tan sencillo como parece, me encontré con 2 problemas.
Soporte para imágenes de Windows Server 2003 SP2
Cuando se liberó ADS 1.1, aun no estaba liberado el Service Pack 2 de Windows Server 2003, por lo cual, el programa que recolectaba la información del equipo físico, no reconocía el sistema. Encontré un artículo en WindowsITPro que explica como solucionar el problema.
A dicho artículo debo hacerle 2 minimas correcciones: los archivos aic78xx.sys y pciide.sys no están en el distribuible del Service Pack 2, sino que deben sacarse de un CD de instalación de Windows Server 2003 con SP2.
También hay que tener en cuenta que los archivos del distribuible del SP2 están comprimidos, por lo cual, hay que descomprimirlos de a uno con la herramienta extract.exe.
Resolver incompatibilidad de ADS 1.1 con Windows Server 2003 SP2
También me encontré con el problema de que ADS 1.1 es incompatible con el Service Pack 2 de Windows Server 2003. Para resolverlo, encontré 2 artículos del KB que refieren a Hotfixes que se deben aplicar para resolverlo.
http://support.microsoft.com/kb/937088/en-us
http://support.microsoft.com/kb/939466/en-us
A la fecha, dichos hotfixes no son públicos, por lo cual hay que pedirselos a Microsoft. Sin embargo, algo bueno, es que ahora la solicitud se puede hacer de forma eletrónica, sin tener que llamar por teléfono a PSS.
Para más información sobre máquinas virtuales y las tecnologías disponibles, puedes leer mi artículo Tecnologías de Virtualización en mi blog académico.
Etiquetas: Microsoft, Problemas de Software, Software, Virtualización
lunes 19 de mayo de 2008
Actualizar automaticamente una aplicacion .Net (2)
Ya había visto ClickOnce cuando apareción con la salida de Visual Studio 2005, sin embargo, aunque básicamente lo hice funcionar aquella vez y también ahora, aún hay cosas que no me convencen del todo.
¿Será porque parece demasiado sencillo?
Comencé por abrir Visual Studio 2005 y crear una aplicación. Luego elegir la opción de Publicar.

Me llevó aun asistente al que le respondí todo que sí y la aplicación quedó publicada en el Information Server de mi PC. Allí me mostró una página web con un botón de Instalar. Hice click, se instaló y se abrió la aplicación.

Ahora la aplicación me quedó en el menú de programas y cada vez que la inicio se contacta con el sitio web desde donde se descargó. Checkea si hay una versión nueva, y si es así, la descarga y ejecuta.

¿Demasiado sencillo, verdad? Creo que está bueno para aplicaciones provistas por el departamento de IT de una compañía, pero no tanto para distribución de aplicaciones que están disponibles a través de internet para cualquier usuario de hogar u oficina.
Sin embargo, cada realidad es diferente y debemos analizar cada una de las opciones con los datos y aplicaciones de verdad. Al respecto, es bueno tener en cuenta algunas notas que encontré en la información que MSDN tiene sobre ClickOnce. En especial, se compara ClickOnce con Windows Installer (quería pegar la tabla acá, pero el **** Blogger... no soporta tablas).
Nótese que en Visual Studio 2008 con Framework 3.5, ClickOnce sigue funcionando igual. No esperaba demasiados cambios, pero las páginas de información de MSDN al respecto, dicen básicamente lo mismo que las de Framewor 2.0.
Etiquetas: .Net, Microsoft, Programacion, Software
sábado 17 de mayo de 2008
Actualizar automáticamente una aplicación .Net
Primero me topé con algo que parece que está archivado, pero aun disponible. Es el Updater Application Block 2.0. Como es parte de los Pattern & Practices de MS, fui por allí y descubrí que lo que necesitaba era leer la guía de Implantación de aplicaciones basadas en el Framework 2.0. Leyendo la guía, que es un PDF muy interesante (cero línea de código, muchos conceptos), encontré que referenciaba al sitio oficial de Windows Forms y Windows Presentation Fundation: WindowsClient.NET. Uno de los artículos de dicho sitio, me llevaba directo a la implementación de una aplicación auto actualizable.
Un pequeño problema que encontré, es que las aplicaciones de ejemplo estaban hechas en C#, mientras que a mi C# me paspa un poco (no por el lenguaje, sino porque en Visual Basic, Visual Studio tiene más ayudas) y mi amigo solo programa en Visual Basic.
Resolviendo el problema
La solución que elegí, es utilizar una aplicación de fachada que chequea por actualizaciones e inicia la aplicación de verdad. El chequeo se hace contra un WebService. Dicho WebService compara la versión de la aplicación que lo llama, contra la versión de la aplicación que tiene guardada.
El WebService devuelve la ruta de desacarga y la aplicación de fachada descarga el nuevo ejecutable. Tanto lo descargue, como no lo haga por ya tener la versión actual, dicha aplicación de fachada inicia a la aplicación real, y se cierra.
El código del WebService es demasiado tonto como para ponerlo, sin embargo, puede ser interesante mostrar parte del código de la aplicación de fachada. Tengan en cuenta que es un código para demostrar como se haría. Compila y hace la descarga. Cualquier purista vería que no es un código para copiar y pegar en una aplicación de verdad.
Quienes deseen implmentar algo así, pero de verdad, lean el PDF que mencionaba para tener los conceptos y luego vayan al articulo de WindowsClient.Net. Con un poco de trabajo podrán hacer andar los ejemplos en C#, y ya que están, escriben todo en C# y van a sentirse más machos.
Etiquetas: .Net, Microsoft, Programacion, Software
viernes 16 de mayo de 2008
Tolerancia a los Bugs de Software
Acabo de leer en el Blog de Brenner y Fogel, un artículo donde Brenner plantea su preocupación frente a la despreocupación con que últimamente se está considerando a los bugs en el software.Creo que los 8 comentarios hasta el momento han sido muy interesantes y me han dejado pensando.
Trabajar en una fábrica de software da una visión muy diferente a la del consumidor del software. También ayuda a entender las variadas posiciones que diferentes personas toman frente a esta problemática.
Pero,
Leer el post de Brenner me ha dejado en realidad más dudas que respuestas. Pero sin duda que una cosa queda muy clara: se debe establecer una política de tolerancia mínima que tienda a cero.
Como se rescata de los comentarios, no podemos dejar cosas libradas a la eficacia del departamento de SQA, sino que, como digo siempre: hacer las cosas bien la primera vez, es mucho más barato.
Etiquetas: Problemas de Software, Programacion, Software
lunes 12 de mayo de 2008
Haciendo un flow con Q-flow 3.0
Q-flow es un producto de BPM y lo hace muy bien. Sirve para automatizar procesos de negocios... ¿Y que proceso de negocios no ganaría con automatización? ¿Qué empresa que quiere mejorar en sus negocios no necesita definir y automatizar sus procesos?
Creo que la respuesta es, claramente, Todas!
En este post, voy a contar como hacer un flow (en realidad un Template).
1) Identificar un proceso de negocios.
Tenemos un proceso que necesitamos automatizar para ganar en tiempo, dejar registro de lo realizado por razones de seguimiento y auditoría. Este proceso es la emisión de licencias de nuestros productos.
2) Describir el proceso de negocios.
Un cliente solicita una licencia, por lo cual, el encargado de dicha tarea recaba los datos necesarios, lo envía a autorizar a la Dirección. Luego se genera la licencia y se emite el certificado.
3) Identificar roles y datos.
Como Roles tengo al iniciador del flow y al autorizador. Como datos, manejo el cliente (que sale de la base de datos de cliente), el producto (también de la base de datos) y otros datos necesarios para generar la licencia como el nombre del servidor, la organización, la cantidad de clientes y la fecha de expiración.
4) Diseñar el diagrama.
El diagrama me quedó algo así:
5) Conectar a otros sistemas automatizados.
Como la licencia no se genera a mano, sino que se hace utilizando un web service que genera licencias, tuve que crear un paso de integración y un ensamblado proxy (dll) que simplifica el acceso al web service y a los otros métodos que existen para generar las licencias de otros productos.
6) Mejorar la interfaz de usuario.
Aunque la interfaz de usuario de Q-flow ya es bastante linda y cómoda, algunas empresas podrían querer cambiar un poco la interfaz utilizando formularios personalizados. En mi caso no lo hice, sino que utilicé las propias configuraciones de cada uno de los pasos.
7) Poner en producción.
Y como último... usarlo! Capacitar a la gente, ver como se llevan con el proceso, que lo usen y den ideas para mejorarlo. Al mes o al año ya habrá suficientes datos estadísticos para analizar como mejorar el proceso. Y la integración de nuevos productos será muy sencilla.
Aunque estos no son todos los pasos, ya que falta verificación y validación, estos pasos nos llevan fácilmente a ver el potencial de un proceso de negocio automatizado con Q-flow.
¿Te animas a identificar un proceso de negocios en tu empresa y pensar como automatizarlo?
Etiquetas: Negocios, Software, Urudata
martes 6 de mayo de 2008
Recovery-Oriented Computing
Hace unos días pensaba sobre un problema que tiene un determinado software que manejo, y que supungo tienen muchos otros productos de software que andan por ahí en la vuelta. - Aislamiento y redundancia.
- Soporte para función Deshacer con alcance en el sistema completo.
- Sistemas de Diagnósticos Integrados.
- Mecanismos de recuperación y verificación en línea.
- Diseño para alta modularidad, mensurabilidad y capacidad de reinicio.
Etiquetas: Problemas de Software, Software
miércoles 12 de marzo de 2008
Preocupación sobre programadores
A través del recientemente renombrado Bolg de Brenner y Fogel llegué a un blog llamado el Abra. Uno de los artículos, sin título, tenía únicamente una frase:The idea of programming as a semiskilled task, practiced by people with a few months’ training, is dangerous. We wouldn’t tolerate plumbers or accountants that poorly educated. We don’t have as an aim that architecture (of buildings) and engineering (of bridges and trains) should become more accessible to people with progressively less training. Indeed, one serious problem is that currently, too many software developers are undereducated and undertrained.
Google y yo la tradujimos así:
La idea de la programación como un tarea sencilla, practicada por personas con unos pocos meses de formación, es peligrosa. Nosotros no toleraría sanitarios o contadores con una educación deficiente. No tenemos como objetivo que la arquitectura (de los edificios) y de la ingeniería (de los puentes y de los trenes) debería ser más accesible a las personas con menos formación. De hecho, un problema grave es que en la actualidad, muchos desarrolladores de software tienen poca educación y poco entrenamiento.
Y es algo preocupante. Sabiendo que en Uruguay, nuestra industria tiene desempleo cero, ayuda a que mucha gente que no tiene vocación o que tiene poco entrenamiento esté llegando a puestos, no solo de programación, con poca preparación y habilidades. Esos están siendo y serán cada vez más, los problemas que tendremos que arreglar.
¡CHAN!
Nota: la frase fue dicha por Bjarne Stroustrup, creador de C++, en una entrevista de Technology Review del MIT.
Etiquetas: Negocios, Problemas de Software, Software, Uruguay
martes 22 de enero de 2008
Google Maps para Móviles
Alguna vez alguien me comentó sobre las filosofías de "Connect Everywhere". Y día a día se suman más aplicaciones para móviles. Pero claro, si uno no tiene un celular y un contrato adecuado a dichas tecnologías, jamas podrá ver el potencial.A mi celular, un Nokia N80 con servicio 3G de Ancel, le he ido cargando algunas cosas muy interesantes:
Gmail
3DSudoku
Capjong
Algún otro jueguito...
y hoy:
Google Maps!
-773664.jpg)
Etiquetas: Google, Internet, Mobile, Negocios, Software
lunes 12 de noviembre de 2007
Oracle Express - Un Oracle gratis para Jugar
Y tal cual, una búsqueda en Google me llevó a encontrar el sitio de descarga de Oracle Express.
Ahora voy a instalarlo y jugar un poco, pero sobre todo, voy a hacer mi obligatorio de la asignatura en cuestión. Espero esta vez sacar un puntaje más respetable. Por el momento comencé a crear las tablas en Transact-SQL en un SQL Server 2005 (¿No me creen? Hacen bien! :-P).
En el párrafo anterior dejé el link de la versión Express de SQL, pero como soy un tipo "jodido", yo uso la Developer.
Volviendo a Oracle, se ve que se dió cuenta que cada día se instalan más y más SQL Servers, y que la técnica de Microsoft, de primero te lo doy gratis y después veo como te cobro las licencias, le está funcionando.
Pero la verdadera técnica de Microsoft, o al menos de uno de sus tentáculos, está en la comunidad. Si se quiere pertenecer a una comunidad de desarrolladores o empezar a desarrollar ayer, lo mejor es darse una vuelta por MSDN y empezar a bajarse todos los productos gratis de desarrollo de Microsoft. Con eso ya te da un poco de impulso para aprender los primeros pasos, sobre todo si se sigue el programa Desarrollador Cinco Estrellas.
Después de eso un primer trabajito como Desarrollador, que si es en un Gold Partner mejor y ya estás del otro lado. Casado con Microsoft, obvio, pero con trabajo para toda la vida. No hay que perder la visión y prepararse en otras cosas, pero es un buen comienzo.
Etiquetas: Microsoft, Oracle, Software
Suscribirse a Entradas [Atom]


