JASoft.org

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

MENÚ - JASoft: JM Alarcón

Nada se crea ni se destruye, sólo se transforma... Excepto las cadenas en .NET

La máxima que encabeza este artículo es bien conocida en la naturaleza. Lo que ocurre es que en .NET hay algunas clases que parece que actúen contra-natura. Bromas aparte me gustaría hacer mención aquí a un comportamiento de las cadenas de texto en .NET que, si bien bastante lógico, puede que despiste a más de uno si no se lo han hecho notar nunca. Consideremos el siguiente código, tan sencillo: MiClase c1 = new MiClase();MiClase c2 = c1; Cuando en .NET hacemos esto la variable 'c2' contendrá una referencia a 'c1'. Si ahora, por el motivo que sea, transformamos los datos encapsulados en el objeto 'c1' o incluso si cambiamos el objeto al que referencia esta variable, 'c2' seguirá siendo idéntica a 'c1', es decir seguirá referenciando el mismo objeto al que referencie a su vez 'c1'. Sin embargo hagamos algo similar con una cadena de texto: string s1 = "Hola Pepe";string s2 = s1;s1 = s1.Replace("Pepe", "Paco");Console.WriteLine(s1);Console.WriteLine(s2);Console.ReadLine(); Según... [Más]

MAILController recibe 5 estrellas PC World en Septiembre

En Krasis - Grupo Femxa estamos de enhorabuena. La revista PC World ha revisado este mes de Septiembre nuestro producto MAILController (le dedica una página completa), y tras analizarlo le ha otorgado las 5 estrellas de la revista, como producto recomendado. MAILController permite a cualquier usuario, sin necesidad de cambiar de cuenta de correo, el envío de correo electrónico "inteligente" que le informa en tiempo real de cuándo, dónde, cuántas veces se leen sus mensajes y se descargan sus archivos adjuntos y desde qué cuentas, sin necesidad de interacción alguna por parte del receptor. Es super-útil para enviar propuestas comerciales, notificaciones, convocatorias de reuniones e incluso Curriculums si estás buscando trabajo y quieres saber si te hacen caso... Se puede obtener una cuenta de prueba desde la página de Krasis y también leer el artículo completo de PC World (pulsando sobre el logo 5 estrellas en la página del producto).

Java y Michael Shumacher

Este chiste lo he leído recientemente en los foros privados de MVP contado por Willy Marroquín y no me he resistido a ponerlo aquí por que, la verdad, es muy gracioso. Espero que no te importe, Willy. Michael Schumacher llega a casa después de un duro día de entrenamiento en el circuito.Su mujer le recibe con un beso y le pregunta:   - "¿Cómo ha ido hoy el día, cariño?"   - "Bueno, cuando he llegado al circuito, he ido a boxes y el F1 no estaba en su sitio. En su lugar había un burro."   - "¿Cómo?", se sorprende la mujer.   - "Si, así es. Le he preguntado al jefe de equipo y me ha confirmado que habían cambiado el monoplaza por el burro."   - "¿Y tu que le has contestado?"   - "Pues yo le he dicho que quizás no seria tan rápido como el F1. Él ha dicho que ciertamente es así, pero que ahora tenemos una ventaja y es que podremos correr en todo tipo de circuitos: F1, rally, motocross, trail sin... Y bueno, al menos hoy he podido venir montado en él hasta casa, cosa que no podía hacer c... [Más]

Cómo obtener los roles a los que pertenece un usuario

El otro día estaba jugueteando con la seguridad de una aplicación Windows escrita en .NET, utilizando las clases WindowsPrincipal y WindowsIdentity para probar algunas cosas. El caso es que me parece estupendo que WindowsPrincipal disponga de un método IsInRole que nos permite saber si el usuario que representa se encuentra dentro de un grupo de usuarios o no. Sin embargo me parece un error que no ofrezca propiedad o método alguno para obtener directamente la lista de todos los grupos/roles a los que pertenece el usuario. Creo que sería mucho más cómodo en algunas situaciones, sobre todo cuando no sabemos de antemano qué roles hay disponibles. Investigando un poco el asunto y utilizando un explorador de clases/decompilador .NET (Anakrino, en concreto) me di cuenta de que la clase WindowsIdentity dispone de un método privado llamado _GetRoles (sí, con guión bajo delante) al que se le debe pasar el token de un usuario y que devuelve una matriz de cadenas de texto. Tiene toda la pinta de... [Más]

Ya está disponible el DotNetMania de Septiembre

Esta semana ha salido por fin el número de Septiembre de la revista especializada en desarrolladores .NET: dotNetMania (www.dotnetmania.com). Portada de Julio/Agosto(pulsa para ampliar) Este mes es muy interesante, como siempre, y trae artículos sobre migración de ASP a ASP.NET, extendiendo SharePoint Server, cómo usar los enumeradores e iteradores en C#, carga dinámica de clases, calidad, adrquitectura, seguridad, etc, etc... Hay también una interesante entrevista con Dino Esposito, el famoso divulgador y articulista italiano. Yo también tengo presencia en este número con la segunda entrega de la serie que estoy escribiendo sobre seguridad de IIS. En esta ocasión me centro en la autorización de acceso a los recursos, algo a tener muy en cuenta a la hora d eproteger nuestras aplicaciones. Te recomiendo que te suscribas.

MSDN 2: beta de la nueva documentación On-Line de la plataforma .NET 2.0

Hoy me he enterado de que está accesible al público (aunque no publicitada) la versión Beta de la nueva documentación en-línea de la plataforma .NET 2.0. Se trata de la documentación y referencia de "Whidbey", o sea, de .NET 2.0, pero tiene una característica muy interesante: basta con escribir "http://msdn2.microsoft.com/library/<namespace>.aspx"  para que aparezca la documentación del espacio de nombres indicado. Así, por ejemplo, puedes escribir "http://msdn2.microsoft.com/library/System.Configuration.aspx"  para que aparezca la documentación de las clases de configuración de la plataforma. Puedes seguir profundizando e incluir a continuación nombres de clases concretas e incluso nombres de métodos. Por ejemplo, si pones http://msdn2.microsoft.com/library/System.Security.Cryptography.MD5.Create.aspx obtendrás la documentación (aún en pañales) del método 'Create' de la clase 'MD5' para cálculo de huellas digitales con este algoritmo. Ni que decir tiene la utilidad de algo as... [Más]

Seguridad: Windows contra Linux

Hoy he estado viendo de nuevo un breve análisis sobre la seguridad de los sistemas operativos que publicó hace unos meses la conocida página Zone-h.org, especialista en seguridad de Internet. En este artículo se muestran unas gráficas de evolución de ataques durante un año, sufridos por diversos sistemas operativos, y cuya mayor relevancia se obtiene al comprobar los valores para las familias de sistemas Windows y Linux. De hecho si se analizan las gráficas con detenimiento se ve que Windows gana a Linux por goleada la mayoría de los meses. Tal y como apuntan los autores del portal, quedarse en estas meras cifras sería pecar de cortos de miras, puesto que éstas dependen de multitud de factores (incluso de las modas: hay épocas que a los crackers se les da por atacar un sistema determinado en lugar de otros). Sin embargo estas cifras son bastante significativas desde mi punto de vista. Incluso se puede comprobar cómo los ataques con éxito sufridos por Windows 2003 frente a windows 200... [Más]

Software para simulación de Corte Ortogonal

Una reminiscencia de mi etapa como ingeniero mecánico ;-) Este software estaba en mi anterior página y, al crear este Blog desapareció. El caso es que estaba bastante demandado dado que lo usan en algunas universidades para práctica de tecnología mecánica, por lo que he decidido volver a ponerlo aquí en el apartado de Freeware. Este software sirve para simular procesos teóricos de corte ortogonal (fresado, torno, cepillado, etc..). Tiene un interfaz gráfico muy intuitivo que permite variar de manera contínua las condiciones del corte, reflejándose automáticamente los cambios en los cálculos y la representación gráfica. Permite escoger la teoría de corte a utilizar, los parámetros fijos, unidades, etc.. y representa el diagrama del proceso descomponiendo todas las fuerzas y velocidades en sus componentes más importantes. Facilita más de 30 variables del corte y permite imprimir los resultados y/o exportarlos a Microsoft Excel (necesitas tener instalado Excel para esto). Con la inst... [Más]

Más detalles acerca de los estilos visuales de Windows XP

En mi "post" del día 31 de agosto (Cómo utilizar los estilos visuales de Windows XP) explicaba cómo habilitar los estilos visuales de Windows XP en aplicaciones Windows Forms con la versión 1.1 de la plataforma .NET. Por los comentarios que he recibido estos últimos días deduzco que vendría bien dar algunos consejos más.En concreto me han planteado las siguientes dudas: 1.- ¿Tengo que tener todos los controles con FlatStyle = System? Sí. Es necesario o sino no se verán con el estilo de Windows XP. Así que no queda más remedio que fijar esta propiedad en todos los controles que dispongan de ella. 2.- Menudo aburrimiento recorrer uno por uno los controles para fijar esta propiedad... ¿Puedo hacer otra cosa? Sí, puedes automatizar esta tarea. Me he tomado la libertad de escribir una pequeña rutina que hará precisamente esto. La he escrito en Visual Basic por probarla en un proyecto que estamos haciendo ahora en la empresa y que es en este lenguaje, pero traducirla a C# no reviste difi... [Más]

Cómo hacer cambios rápidos de la configuración de red

Si, al igual que yo, usted tiene que trabajar con un portátil en diversas localizaciones encontrará este truco muy útil. Cada vez que voy a la oficina de un cliente con mi portátil tengo que cambiar la configuración de la tarjeta de red para asignarle los parámetros adecuados: dirección IP, máscara de sub-red, puerta de enlace, etc... para así poder "engancharme" a la red local del sitio en el que esté. Al salir y volver a mi oficina o a la de otro cliente toca repetir la misma operación. Si esto hay que hacerlo cada dos por tres se convierte en una tarea muy tediosa ya que normalmente hay que apuntar en algún archivo toda esta información e introducirla a mano. Es posible, sin embargo, automatizar el proceso de la siguiente manera (esto es algo que utilizo habitualmente): La próxima vez que tenga que cambiar la configuración de red tras haber realizado el cambio abra una línea de comandos y escriba: netsh dump >> c:\Configuración_Cliente_A.txt Esto creará un archivo de co... [Más]