Lo pesado que se hace crear GUIs

by Valeriano Tortola 6. septiembre 2007 19:13

Leyendo un post de Jon Skeet y me he visto identificado por lo poco que me ilusiona desarrollar interfaces gráficas, ya sean WinForms ó ASP.NET. Aún no he tocado Windows Presentation Foundation pero por lo poco que he visto me parece que una nueva "horda" de programadores especializados en XAML emergerá de ahí.

Me pone de los nervios, me paso minutos mirando el formulario... luego pienso ... "ese control un pixel más a la izquierda, el otro un poco más abajo, ese borde DimGray daría un contraste más suave... con grid se ve mejor ... no peor... aquí el logo ... pero más pequeño ... y con el fondo transparente ... voy a retocarlo con el Gimp ..." ... más cuando veo próximo un deadline.

Una vez desarrollaba la parte cliente de una aplicación server que yo mismo había hecho, no solo conseguí que fuese autodescriptiva y simple, si no que además bonita, colores pasteles ... estilo flat como a mi me gusta, estaba francamente contento  ... luego va el comercial y hace la demo con un proyector y a 256 colores, todo se veía del mismo color ... !!! ... te dan hasta ganas de llorar xD.  Sin embargo con lo que programo en mi tiempo libre disfruto haciendolo, retocando el tema de este blog me lo pasé en grande, haciendo un par de webs que tengo por ahí también, pero en el trabajo ... no puedo, no me siento productivo haciéndolo.

Mas...

Tags:

Personal

Descargando un fichero por FTP

by Valeriano Tortola 6. septiembre 2007 15:16

Siguiendo con el tema de Enviar un archivo por FTP y Enviar un Stream por FTP , vamos ahora con la descarga. También nos puede ser útil poder descargar archivos por FTP, para cosas como descargar copias de seguridad de un servidor ó realizar la copia en si misma, descargar archivos de servidores de forma sencilla y con autenticación, etc .. etc...

Ahí va un sencillo ejemplo:

Mas...

Tags: , , ,

.NET 2.0 | C# 2.0

DB Factory con ADO.NET 2.0

by Valeriano Tortola 5. septiembre 2007 18:08

Muchas veces, nos encontramos ante la necesidad de escribir aplicaciones que puedan trabajar con cualquier tipo de base de datos, evitando en la máxima medida tener que modificar el código de la aplicación para ello. Para solventar este problema, siempre se ha recurrido al “modelo de n capas” donde una de ellas, era el proveedor de acceso a datos y se encargaba de abstraer esta tarea, normalmente encapsulada en una librería .dll que se cambiaba a voluntad sin que ello supusiese ningún problema para la aplicación. Esta librería, suele contener lo que se denomina un DBFactory, una clase abstracta o conjunto de funciones encargadas de adaptarse a la base de datos que se le indique y obtener datos de forma transparente para su consumidor, esta semana he descubierto como hacerlo con ADO.NET 2.0 sin tener que codificar a penas nada con las clases que habitan en System.Data.Common.

El ejemplo lo voy a hacer con SQL Server 2005 Express Edition y la base de datos de ejemplo "Northwind" que trae por defecto :).

Mas...

Tags:

.NET 2.0 | C# 2.0 | ADO.NET

ISO rechaza el OOXML de Microsoft como estandard

by Valeriano Tortola 5. septiembre 2007 02:39

Leo en BarraPunto que finalmente ISO ha rechazado el formato Open Office XML de Microsoft como estandard. Nota de prensa de Microsoft.

Parece que ODF será el único estandard del estilo por el momento, esperemos que se integre también en Microsoft Office, aunque no creo que en Redmon vayan a tirar la toalla ya, pues ODF tampoco es la panacea.

Tags:

Microsoft

SSH en Windows, cliente y servidor.

by Valeriano Tortola 4. septiembre 2007 18:34

Algo que echo de menos de Linux, es tener un servidor SSH en mi máquina para el acceso remoto, pues no siempre es posible usar Terminal Server si se dispone de poco ancho de banda (ie: una conexión móvil) y aunque se puede usar CygWin para estos menesteres … no es lo mismo. He venido usando SSH para la administración remota desde hace años y me parece una herramienta imprescindible en cualquier aspecto de las IT que implique acceso remoto y CLI, y aunque que el famoso “cmd.exe” está algo limitadillo (pero da más de si de lo que parece :D ) con la llegada de PowerShell se echa en falta en Windows tener algo así “de serie”.

    SSH, a “grosso modo”, provee de una CLI remota con autenticación segura y cifrado SSL, desde la versión 2 permite la autenticación passwordless por medio de la distribución de claves RSA y además permite la transferencia de ficheros a través de la misma conexión segura mediante SCP ó una sesión SFTP con comandos FTP.

Mas...

Tags: , ,

Windows

Depurando con .NET

by Valeriano Tortola 4. septiembre 2007 17:57

No siempre llenar el código de breakpoints ó seguir step-by-step ejecuciones largas es lo más recomendable para depurar el funcionamiento de nuestra aplicación en desarrollo , podemos apoyarnos en las clases Debugger, Debug y Trace de System.Diagnostics para realizar diagnósticos más rápidos y sobre todo que sean condicionados, de forma que solo pare ó solo registre una línea de log de actividad cuando nos interesa que lo haga.

Así que pasando un poco de las inestimables ayudas de Visual Studio 2005 para estos menesteres esta vez, voy a dar un resumen rápido de la utilidad de estas clases de ayuda al depurado. Las clases Debug y Trace son prácticamente iguales, la diferencia estriba en que la primera solo funciona en modo DEBUG y la segunda también en RELEASE. Por lo tanto lo que escriba de uno es aplicable al otro, pero tened en cuenta esta diferencia. Por ejemplo, el DefaultTraceListener (que se explica más adelante) está entre los listeners de Trace, no de Debug, aunque sea el que va conectado a la ventana ouput de Visual Studio 2005 ;)

Mas...

Tags:

.NET 2.0 | C# 2.0

Obtener la salida de un comando de consola

by Valeriano Tortola 4. septiembre 2007 12:50

En ocasiones, necesitamos que nuestra aplicación ejecute un comando de consola (cmd.exe) para obtener datos de alguna aplicación de consola ó simplemente para poner en marcha un servicio. La manera sencilla y tosca res ejecutar el comando redirigiendo la salida a un archivo, después abrir el archivo y coger el resultado para procesarlo.

Este ejemplo presenta la forma elegante, creamos un proceso y redirigimos los Streams de entrada y salida hacia nuestro programa para poder enviar y recibir datos de forma asíncrona.

Mas...

Tags: , , ,

.NET 2.0 | C# 2.0

Enviar un Stream por FTP

by Valeriano Tortola 2. septiembre 2007 18:50

Siguiendo con el artículo sobre como enviar un archivo por FTP, no siempre lo que queremos enviar esta ya materializado en el sistema de archivos, puede ser también un archivo que estemos generando en memoria, como un reporte, un archivo .pdf, .xml .. etc.. etc.. y tener que guardarlo en disco para luego poderlo enviar por FTP es molesto, asi que aquí va un ejemplo de como enviar el contenido de un Stream (ó derivado) a un FTP:

Mas...

Tags: , , ,

.NET 2.0 | C# 2.0

Enviar un archivo por eMail

by Valeriano Tortola 1. septiembre 2007 18:18

Siguiendo la línea del artículo anterior donde explicaba como subir un archivo vía FTP, voy a mostrar ahora como enviar un archivo vía email con las clases contenidas en System.Net.Mail. Esta funcionalidad, puede ser más útil para informar de excepciones en una aplicación instalada en el cliente, comunicar alguna eventualidad, etc.. etc…

Ojo que esta no es la implementación de un servidor SMTP y que solo actúa como cliente de correo en modo de envio, por lo que es necesario que tengamos una cuenta de correo y un acceso SMTP (Hotmail no tiene SMTP gratuito, Gmail si, ó usa tu propio servidor si lo tienes).

El ejemplo es bastante claro y sencillo:

Mas...

Tags: , ,

.NET 2.0 | C# 2.0

Enviar un archivo por FTP

by Valeriano Tortola 1. septiembre 2007 09:00

Puede resultar muy útil que nuestra aplicación pueda enviar los resultados de sus acciones o depositarlos en un servidor FTP, nos puede servir tanto para enviar periódicamente archivos de log, resultados, estadísticas o cualquier otro tipo de fichero.

Este es un sencillo ejemplo de una función que envia un archivo por FTP a un determinada ruta remota:

Mas...

Tags: , ,

.NET 2.0 | C# 2.0