JASoft.org

El blog de José Manuel Alarcón Aguín. Programación web y mucho más...

MENÚ - JASoft: JM Alarcón

Microsoft publica Windows Server 2003 SP1 Release Candidate

La versión publicada es la candidata a publicación final del Service Pack 1 para Windows Server 2003, y hay que señalar que está destinada sólo para su instalación en entornos de prueba.  Aunque éste proceso puede ser recomendable en determinados entornos para comprobar y evaluar las nuevas características y su impacto en los sistemas. El SP1 para Windows Server 2003 proporciona múltiples mejoras de seguridad que pueden ser de interés para un gran número de administradores. De hecho, todas las razones anunciadas en el "Top Ten de las razones para instalar Windows Server 2003 SP1" están relacionadas de forma directa con la mejora de seguridad. A diferencia de otros Service Pack que solo podían considerarse como la agrupación de todos los parches publicados, Microsoft ha aprovechado la oportunidad para introducir nuevas funcionalidades a Windows Server 2003. Las mejoras incluidas son un Firewall similar al publicado con Windows XP Service Pack 2, Post-Setup Security Updates (PSSU) de... [Más]

Control ActiveX con código fuente: AniIcon.ocx

Poco a poco, sin prisa pero sin pausa, estoy metiendo aquí algunos de los archivos que tenía en mi anterior página, en la era pre-Blog. Uno de los controles interesantes que tenía en la antigua JASoft.org era este: AniIcon.ocx. Se trata de un control ActiveX escrito íntegramente en Visual Basic que permite utilizar iconos animados en los formularios. Puede ser útil para destacar ciertas cosas en la interfaz de usuario o como simple divertimento. El código fuente está comentado por lo que es relativamente fácil de seguir. Es un buen ejemplo de cómo se manejan archivos RIFF, empleados también en otros formatos genéricos aparte de en iconos animados (como algunos archivos de sonido, gráficos,etc...) Se puede descargar pulsando aquí. ¿Alguien se atreve a migrarlo a .NET y Windows Forms? Debería ser fácil escribirlo en VB.NET. Si alguien lo hace le agradeceré que tenga la deferencia de enviármelo ;-)

Cómo configurar un proxy para acceder a servicios Web

A ver, cuestión peliaguda... En progrmación COM tradicional lo que se solía utilizar a la hora de conectar con un recurso Web mediante HTTP, fuera éste una página o un servicio Web, se solía emplear la biblioteca WinHTTP o bien la clase que a tal efecto proporcionaban las bibliotecas MSXML. En ambos casos si la conectividad se obtenía a través de un Proxy era necesario configurarlo usando una utilidad externa de línea de comandos, lo cual era un verdadero problema en distribuciones grandes o que debíamos hacer manualmente. No digamos si la aplicaci´no era en un servidor Web al que sólo teníamos acceso mediante FTP. Con .NET la vida es mucho más fácil, como ya es sabido. Así, por ejemplo, cuando vamos a consumir un servicio Web desde una aplicación .NET, al añadir una referencia Web se crea una clase que nos abstrae de la complejidad de llamar a los métodos remotos y gestionar las comunicaciones HTTP. Esta clase hereda de SoapHttpClientProtocol, que a su vez hereda de HttpWebClientPro... [Más]

Cómo averiguar desde qué método se ha llamado al método actual

En algunas ocasiones puede resultar interesante averiguar desde qué otro método o métodos se ha llamado a la función actual. las utilidades pueden ser varias, por ejemplo: Un método genérico que se use para llamar a procedimientos almacenados en una base de datos, cuyo nombre (el de los procedimientos) sea idéntico al procedimiento desde el que se llama. Puede acelerar mucho el desarrolo. Un método que queremos que sea llamado exclusivamente desde otro procedimiento concreto. Una función que deba ser llamada en exclusiva desde el constructor de una clase o desde Main(). Experimentar con esto, que es interesante, hombre... ;-) En fin, el caso es que con la plataforma .NET casi cualquier cosa es posible y encima de una forma relativamente sencilla. En este caso debemos usar la clase StackTrace del espacio de nombres System.Diagnostics. Ésta nos permite navegar por la pila de llamadas de la aplicaicón obteniendo información sobre los diferentes métodos que se encuentren en ella.... [Más]

Aquí estoy una semana más tarde...

Esta semana pasada ha sido de locura, por lo que no me ha sido posible escribir nada en el Blog :-( Me consta que ha habido muchas visitas así que mis disculpas a esa gente.... Esta semana con el famoso puente aquí en España me imagino que será parecida (aunque no por trabajo sino por todo lo contrario), aunque procuraré publicar algunas cosas que tengo en la recámara. De hecho el mes de diciembre entero es complicado entre unas cosas y otras (mucho viaje de trabajo y mucho día festivo), pero bueno, espero llegar al menos al nivel de publicaciones de noviembre :-) Saludos a todos.

Iteradores en C# 2.0

Pensemos por un momento cómo podemos construir en C# 1.0 o 1.1, una clase contenedora de datos que se pueda utilizar con la construcción foreach para iterar por los elementos que contiene... Para empezar la clase debe implementar la interface IEnumerable. Esto tampoco supone mucho trabajo ya que, al fin y al cabo, sólo se debe implementar un método, GetEnumerator(). Ahí se empieza complicar la cosa un poco ya que este método devolverá un objeto que implementa la interfaz IEnumerator y que nosotros debemos definir también. La implementación de esta clase es algo más compleja y además debe mantener una referencia al objeto enumerable original. Ya de por sí, como podemos comprobar, se trata de algo bastante tedioso. Pero es que además de eso en algunos casos es algo muy complicado de hacer. Por ejemplo, si queremos implementar una clase enumerable que contenga los nodos de una jerarquía (un árbol de carpetas, por ejemplo) y que, enumerándolo con foreach, nos devuelva por el orden correc... [Más]

El próximo día 2 (jueves) imparto formación gratuita

Dentro de la iniciativa Desarrolla con MSDN de Microsoft Ibérica, el próximo día 2 de diciembre de 2004, jueves, en Santiago de Compostela, impartiré formación sobre desarrollo de aplicaciones Web con ASP.NET. El curso es gratuito. Durará toda la mañana y nos hará falta el tiempo, así que por favor sed puntuales (9:00 en punto) los que os apunteis ;-) En esta sesión exploraremos el entorno de desarrollo de ASP.NET y los conceptos más importantes para construir aplicaciones web escalables y robustas. Los conceptos aprendidos nos permitirán desarrollar el frontal web principal y el cliente móvil de la aplicación de ejemplo MSDN Video. La agenda aproximada es la siguiente: Modelo de ASP.NET e IIS Web Forms Controles de usuario Mobile Web Controls Sesión y caché Configuración e instalación Seguridad Para anotarse sólo hay que hacerlo a través de este enlace, usando el icono que hay en el lateral. En él encontrareis más información, la ubicación exacta y un plano de cómo... [Más]

Cualificadores globales para espacios de nombres en C# 2.0

Cuando hacemos referencia a una clase o un tipo desde nuestro código podemos emplear una ruta completa de espacios de nombres para llegar hasta él. Por ejemplo, si escribimos System.Console.ReadLine(); se busca la clase Console dentro del espacio de nombres System que está en la raíz de todos los espacios de nombres (es decir, System se encuentra en la parte más alta de la jerarquía de espacios nombres junto a otros como Cryptography, etc... y los que nosotros mismos definamos o agreguemos a un proyecto). ¿Qué pasa sin embargo si escribimos esa misma línea dentro de una clase que está contenida dentro de un espacio de nombres llamado también System?, por ejemplo: namespace MiEmpresa.MiBiblioteca{    namespace System    {        class MiClase        {            System.Console.ReadLine();        }    }} El resultado será que la búsqueda de la clase Console comienza en el espacio de nombres actual y sólo cuando se recorra y no aparezca (porque pudiera aparecer si la hemos definido n... [Más]

Tipos genéricos en .NET 2.0

Una de las grandes novedades de la versión 2.0 de la plataforma .NET son sin duda los tipos genéricos. Esta nueva característica de los lenguajes Visual Basic .NET y C# y sus correspondientes compiladores, permite escribir código genérico que, a la hora de compilarse se transforma en código específico para un tipo de datos. Ello permite crear código de métodos, estructuras, clases e incluso interfaces sin preocuparnos por los tipos de datos que vamos a utilizar a la hora de la verdad. Hasta la fecha cuando queríamos escribir código genérico que pudiese trabajar indistintamente con dos o más tipos de datos no nos quedaba más remedio que utilizar el tipo 'object' que es la raíz de todas las clases. Con los nuevos Generics de .NET 2.0 ya no es necesario, y nuestro código puede disfrutar de la robustez de tipos concretos sin tener que comprometerse por adelantado con ninguno. ... [Más]

Métodos anónimos en C# 2.0

Siguiendo la estela marcada ayer, los próximos días me dedicaré, sin prisa pero sin pausa, a comentar algunas novedades interesantes que trae la plataforma .NET 2.0, C# 2.0 y Visual Studio .NET 2005. Hoy le toca el turno a los métodos anónimos. Éstos están pensados para simplificar la definición de manejadores de eventos cuando las tareas a realizar son simples. Imaginemos que queremos asociar una única línea de código (o dos) como acción a realizar cuando se produzca un evento. Por ejemplo, que cuando se pulse un botón se muestre un mensaje de saludo. Lo que debíamos hacer hasta ahora era declarar una función del tipo adecuado y asociarla con un nuevo delegado al evento. Por ejemplo: private void button1_Click(object sender, System.EventArgs e){    MessageBox.Show("Hola");} button1.Click += new System.EventHandler(button1_Click); Esto hace que al pulsar el botón se vea el saludo "Hola". Sin embargo es un poco engorroso para tan poca acción tener que crear una función como es... [Más]