JASoft.org

Accidente y abandono

Accidente y abandono
Antes de nada gracias a las miles de visitas que haceis cada mes a este blog. Lo reconozco. Hace quince días o así que tengo el blog abandonado. En esta ocasión tengo una buena disculpa: estuve varios días de viaje y, justo el día que volví (el pasado viernes 17) tuve un accidente de moto que me envió al hospital. Me acaban de "soltar" hace un par de dias pero, aparte de esguinces, raspazos y golpes varios, tengo una mano rota. Ello me complica bastante hacer cualquier cosa y más en concreto escribir con el ordenador (la "sana" también está algo magullada y con rascazos), así que.... imagino que publicaré menos que de costumbre pues me supone bastante esfuerzo. En fin... Si puedo pondré cosillas en breve, incluso algo hoy mismo, que ya me apetece. Por cierto, por si a alguien le intriga; el accidente NO FUE CULPA MIA. Estaba con la moto parado en un semáforo en rojo y me embistió un conductor despistado (de coche) por detrás:  ¡a volaaaar!. Tuve mucha suerte, así que podré segui... [Más]

Cómo renombrar un archivo

Cómo renombrar un archivo
De acuerdo, se trata de un tarea bastante básica si sabes cómo hacerlo, claro, pero lo cierto es que es una pregunta que me hacen de vez en cuando amiguetes, visitantes, y demás.... Cuando te pones a buscar en las clases de entrada y salida de datos algo sobre renombrar un archivo, seguramente buscas algo así como un método Rename o similar. No existe tal método. El truco es que para renombrar un archivo lo que hay que hacer es... ¡moverlo!. Al mismo sitio pero con otro nombre. Así de tonto. Sabiendo esto la función renombrar sale directa: private static void RenameFile(string sFileFullPath,string sNewFileName) {  File.Move(sFileFullPath, Path.Combine(Path.GetDirectoryName(sFileFullPath), sNewFileName)); } Lo único que se hace es mover el archivo poniendo como destino la misma carpeta (se obtiene con Path.GetDirectoryName) pero un nombre diferente. ;-)

Cómo hacer autenticación Windows en Servicios Web (the easy way!)

Cómo hacer autenticación Windows en Servicios Web (the easy way!)
Haz una prueba.... Crea un servicio web sencillo (sumar dos números por ejemplo), y en IIS desactiva la casilla de autenticación anónima, dejando marcada alguna de las que exigen autenticación Windows. A continuación llama al servicio web desde un cliente cualquiera...  ¡Moooc! Falla, como es lógico, porque al contrario que al usarlo desde un navegador, no aparece un diálogo de autenticación que te solicite las credenciales. Entonces, ¿cómo hacemos? Lo normal es que queramos pasarle automáticamente las credenciales del usuario actual, para así validarlo y hacer la autorización en los métodos del servicio web en función de los roles a los que pertenezca. En realidad es muy sencillo conseguirlo, sólo hay que usar el siguiente código: servicioWeb.Credentials= System.Net.CredentialCache.DefaultCredentials; Esto hace que se le pasen las credenciales por defecto usando para ello un objeto de la clase NetworkCredential. Por cierto mucho cuidado al usar esto desde ciertos tipos de clie... [Más]

¿Cuál es la clave del usuario anónimo de IIS?

¿Cuál es la clave del usuario anónimo de IIS?
¿Te has preguntado alguna vez esto? Cuando en Internet Information Server tenemos activado el acceso anónimo a una aplicación Web, al ejecutar páginas ASP clásicas, éstas se ejecutan bajo el contexto de seguridad de una cuenta especial llamada IUSR_Nombremaquina, siendo "Nombremaquina" el nombre de red del servidor en el que está instalado IIS. Bueno en realidad esto es así cuando se usa el tipo de aislamiento bajo para la aplicación en las propiedades del servidor virtual de IIS. En caso de usar aislamiento medio o alto, la cuenta suplantada para el usuario anónimo se llama IWAM_NombreMaquina. En ASP.NET se suplanta por defecto al usuario ASPNET en Windows XP, o al usuario Servicio de Red en Windows Server 2003. Pero, con autenticación anónima en IIS, si se incluye en web.config lo siguiente: <identity impersonate="true"> Entonces el comportamiento es exactamente el mi... [Más]

IMPORTANTE: Cómo instalar la Beta2 de Visual Studio 2005

IMPORTANTE: Cómo instalar la Beta2 de Visual Studio 2005
Dese hace una temporadita está disponible para todo el mundo la Beta 2 de Visual Studio 2005. Se pude descargar desde MSDN, se incluye en CDs y DVDs de revistas y por lo tanto se está utilizando mucho. El problema con ella viene si la queremos instalar para sustituir a una beta anterior a una versión CTP. No se puede instalar tan alegremente sino que es necesario desinstalar primero los componentes anteriores que hubiese en el equipo. Y no vale hacerlo de cualquier forma. Es indispensable hacerlo en el orden correcto o podríamos tener muchos problemas. El orden adecuado de desinstalación es el siguiente (puedes saltarte lo que no tengas instalado): La versión anterior de Visual Studio 2005. SQL Server 2005 Express Edition SQL Server 2005 Tools SQL Native Client Visual Studio 64-bit prerequisites Beta (de ser el suerto que tiene un equipo de 64 bits) MSDN Express Library 2005 beta Visual Studio Tools for Office System 2005 Runtime Beta Devie Emulator 1.0 Beta .NET Compact Fr... [Más]

¡Este Blog cumple justo hoy 1 añito!

¡Este Blog cumple justo hoy 1 añito!
El primer post de este blog lo hice justamente el 3 de Junio del pasado año 2004. Así que hoy ¡cumple 1 año!. Al contrario de lo que se suele decir en estos casos a mi me parece que ha pasado más tiempo que un año. Y la verdad es que mantener un blog como este da su trabajo, no te vayas a pensar...Hasta la fecha he publicado (sin contar este, claro) 148 posts en total. Esto hace una media de casi uno día si, día no, lo cual creo que es un ritmo bastante importante. La historia de JASoft.org es mucho más larga que un año, sin embargo. El dominio como tal empezó a finales del siglo pasado, en 1.999, por lo que tiene ya casi seis años (ahora sí que me parece que hace mucho más tiempo). Antes de tener este dominio la página colgaba de un espacio Web de Arrakis, y comenzó dedicada a VB en el año 1.997. Puedes ver la historia completa aquí. En definitiva: son casi ocho años de historia que espero que puedan llegar a ser el doble por lo menos ;-)

Detectar la existencia de una instancia previa de nuestra aplicación

Detectar la existencia de una instancia previa de nuestra aplicación
En Visual Basic "clásico" existía una propiedad del objeto App llamada PrevInstance que permitía averiguar de manera sencilla si ya se estaba ejecutando la aplicación actual, de forma que era inmediato evitar que se ejecutase dos veces el mismo programa. En .NET no existe nada similar pero es muy fácil simularlo gracias a la clase Process del espacio de nombres System.Diagnostics. El siguiente código permite conseguirlo:  private static bool PrevInstance() {      Process[] procesos = Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName);      return (procesos.Length > 1); } Lo que hace es buscar los procesos existentes que tengan el mismo nombre que el proceso actual. Si hay más de uno es que ya se está ejecutando la aplicación y por lo tanto podemos decidir no continuar. Existen otras técnicas para conseguir el mismo efecto (por ejemplo usando Mutexes o marcadores globales de este estilo que son mucho más seguros), pero este es sin duda el más sencillo y la mayo... [Más]

Cómo lanzar un proceso y recoger los resultados de su ejecución

Cómo lanzar un proceso y recoger los resultados de su ejecución
Hay ocasiones en las que es necesario poder lanzar un programa de línea de comandos (o no) de modo silencioso para realizar una tarea y luego recoger de algún modo el resultado de su ejecución. Un caso típico es el envíod e archivos por FTP. FTP.exe es un ejecutable muy útil que viene con Windows y que permite enviar órdenes a un servidor de archivos meidante un archivo de comandos que se le pasa como parámetro. La siguiente función sirve para ejecutar cualquier programa con su ventana (de haberla) oculta, devolviendo el resultado de la ejecución (normalmente lo que aparecería en la línea de comandos) en una cadena. Si se produce un error se lanza una excepció que recoge los detalles enviados por el programa a la línea de comandos. Puede resultar muy útil. Es necesario incluir System.Diagnostics.  //Lanza un proceso con su ventana oculta y devuelve el resultado private static string lanzaProceso(string Proceso, string Parametros) {  ProcessStartInfo startInfo = new ProcessStartInfo... [Más]

Desarrollo con Mono más fácil que nunca

Desarrollo con Mono más fácil que nunca
Mono es una implementación Open Source de la plataforma .NET qeu funciones en diversos sistemas operativos como Windows, Linux o MacOS. Monoppix es una distribución Linux basada en Knoppix que está especialmente pensada para facilitar el desarrollo con Mono. Lo bueno que tiene es que se trata de un LiveCD, es decir, que para usar Linux y Mono no tendrás que instalar absolutamente nada. Basta con grabar un CD y podrás arrancar el sistema sin afectar a lo que tengas instalado en el equipo. Muy interesante para aprender. La versión 1.0.6 que acaban de liberar incluye "de serie": Monodoc, mcs, Mono, libgdiplus, gtk-sharp 1.06 Xsp 1.0.8 Monodevelop 0.51 Cairo 0.2 Soporte de MySQL 4.1.7 El libro.Net in Samples en formato HTML Mejoras en los accesos directos que hay en el escritorio Los últimos parches de Monodevelop (por ejemplo ejecución directa de aplicaciones desde MonoDevelop) La página del proyecto es http://www.monoppix.com aunque curiosamente la de descarga está en... [Más]

Cómo averiguar en qué ensamblado se está ejecutando nuestro código

Cómo averiguar en qué ensamblado se está ejecutando nuestro código
Hay ocasiones en las que creamos una biblioteca de funciones interesante y la compilamos como una DLL de .NET para su uso desde una o varias aplicaciones propias. Si, por el motivo que sea, no deseamos que este ensamblado se pueda utilizar desde aplicaciones ajena tenemos varias formas de hacerlo. La más sencilla tal vez sea la que nos permite averiguar cuál es el ensamblado (normalmente un ejecutable '.exe') que está haciendo uso de nuestro código y comprobar alguna propiedad del mismo para verificar que se trata de uno permitido. El código que nos permite averiguar el ensamblado actual desde el que se ejecuta un método es el siguiente: System.Reflection.Assembly.GetEntryAssembly() Con esto ya podemos comprobar las diversas propiedades del ensamblado para ver si cumple lo que nosotros deseamos, utilizando para ello las diferentes propiedades del objeto Assembly.  Por ejemplo, para aeriguar el nombre del ensamblado que está utilizando nuestro código basta con escribir: System... [Más]

Este soy yo y este es mi blog técnico, dedicado al software y a la programación.

¡Sígueme en Twitter!

Mis otros blogs

- JM Alarcón @ campusMVP.es
Contenido técnico en español orientado a desarrolladores
- JMAlarcon.es
Blog personal no técnico: sociedad, innovación, empresa...

Krasis

- campusMVP.es:
Los mejores cursos online de programación en español

- SELF LMS:
La plataforma de elearning más potente del mercado.

Histórico