JASoft.org

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

MENÚ - JASoft: JM Alarcón

Expression Web Designer y la codificación UTF-8

Hay una cosa de Expression Web Designer que me molesta un montón, y es que por defecto guarda todas las páginas HTML con codificación UTF-8. Esto se me pega con otros programas que uso y además puede provocar problemas en algunos programas ya que esta codificación mete una marca de ordenación de bytes (BOM o Byte Order Mark) para distinguir la plataforma en la que se generaron. Es por este motivo que a veces al visualizar ciertas páginas, incluso páginas de servidor, éstas aparecen con unos caracteres extraños delante () muy molestos. En concreto en e-mail marketing que es fundamentalmente para lo que lo utilizo yo da muchos problemas. Por defecto Expression Web genera los archivos HTML así. Cuando editamos una página y no está especificada explícitamente en la página la codificación a utilizar siempre las guarda como UTF-8. Podemos cambiar este comportamiento por defecto si vamos a las "Herramientas·Opciones del editor" y lo ajustamos así: El problemilla es que cuando creamos p... [Más]

Cómo enviar correo electrónico por código usando cuentas de GMail

Enviar correo electrónico desde código .NET usando un servidor SMTP es muy fácil gracias al uso de la clase System.Net.Mail.MailMessage. Un servidor SMTP normal trabaja a través del puerto 25 y sólo necesitaremos tener unas credenciales válidas en el mismoq ue nos permitan enviar correo. Lo habitual en una aplicación cualquiera es usar el servidor SMTP de nuestra cuenta de correo favorito con esta técnica sin problemas. Pero ¿qué pasa si nuestra cuenta de correo es de GMail? Pues que la técnica convencional no funcionará. El motivo es que GMail usa un puerto diferente y además precisa el uso de una conexión cifrada con SSL para seguridad, por lo que el código normal que vas a encontrar por ahí no te servirá. ¿Qué puedo hacer entonces? La clase SmtpClient nos ayudará para conseguirlo. Básicamente se trata de indicarle un par de parámetros extra para indicar el puerto a utilizar y la obligatoriedad de SSL. Lo demás lo hará esta clase por nosotros. El siguiente código en C# ilustra u... [Más]

Cómo colocar un icono para indicar la ordenación en la cabecera de un GridView

Esta pregunta surge muchas veces en cursos y conversaciones técnicas varias. La cosa es la siguiente: tengo una rejilla (GridView) de ASP.NEt 2.0 en un formulario ASPX, y he activado las opciones de ordenar sus columnas, de modo que cuando pulso sobre una cabecera logro de manera automática la ordenación por el campo correspondiente. Es estupendo pues no tengo ni que escribir código para lograrlo, al contrario de lo que pasaba al usar un DataGrid en ASP.NET 1.x. Pero... ¿Qué pasa si quiero evidenciar de un modo más claro cuál es el orden concreto de mi rejilla? Lo típico es colocar un iconito con una flecha hacia arriba o hacia abajo en la cabecera adecuada para indicarlo, algo así: (Fíjate en el iconito al lado de "Nombre" que indica el orden inverso) Pero ¿cómo lo consigo? Hay que responder adecuadamente al evento RowCreated de la rejilla. Antes de nada asegúrate de tener un par de iconos para las flechas de ordenación. En mi caso los he colocado en la carpeta "Imgs" de la raí... [Más]

Nuestro nuevo curso de certificación en Administración y Mantenimiento de Windows Server 2003

Sí, ahora también en campusMVP, un curso dirigido a los chicos de sistemas. ¿Acaso los de Home English no enseñan ahora francés también?, pues nosotros aparte de programación... también sistemas :-)) Este curso está dirigido a todos aquellos profesionales TIC que trabajan en entornos de administración de sistemas cliente (Windows XP) y quieren progresar en su carrera hacia la administración y mantenimiento de redes complejas de empresas medianas o grandes con Windows Server. Al acabar la formación sabrás todo lo que necesitas para gestionar y resolver problemas en una infraestructura de ordenadores basada en Windows Server 2003. Con este curso, creado por el MVP Juansa Llopis, podrás preparar a tu ritmo y desde cualquier sitio el examen 70-290 de certificación en Windows Server 2003. Además, si eres un trabajador en activo de una empresa española te gestionamos la bonificación con el Estado para que el curso te salga realmente barato. Ya no tienes disculpa... Aprovecha este vera... [Más]

Otro motivo más por el que molan mucho estos tíos de Google: GMail Theater

Lo reconozco: es una debilidad la que tengo por Google. Y más desde que estuve en sus instalaciones de visita  a principios de año. Yo mismo lo reconocía: "Si no fuese Google esto serían unas oficinas normales. Chulas, pero normales". Pero es que el ambiente "cool" que se respira, esas salas de juegos, esos "peacho" monitores giratorios que les ponen, la comida, los cuadros en los pasillos... es tan guay :-)) Y no me digáis que el marketing que hacen, aparentemente ingénuo, no mola un montón. El último ejemplo: GMAil Theater. Bue-ní-si-mo. Y no parece que se hayan gastado mucha pasta: Si a alguien le quedaban dudas de usar GMail (a mi no, desde luego, he sido usuario acérrimo desde que se vendían las primeras invitaciones en eBay por una pasta), este tipo de cosas seguro que las despeja :-) Y es que, oye, aparte de Microsoft también hay otra gente que hace las cosas bien generalmente ;-) (antes de que alguno me acribille a comentarios chorras, nótese el tono irónico... [Más]

Errores al recompilar aplicaciones ASP.NET 2.0 y cómo solucionarlos

Una cosa típica que pasa en VS2005 desde que salió es que estamos trabajando en una aplicación, cambiamos algo en el código, la lanzamos para probar, paramos, y así sucesivamente y, de repente, en un momento determinado y sin venir a cuento, nos aparece un mensaje de error y nos dice que no se ha podido compilar porque un archivo estaba bloqueado o algo así (he intentadno reproducir una captura, pero justo hoy no está por la labor y me funciona perfectamente). El caso es que suelen ser mensajes estilo: Could not load file or assembly 'XXXXXXX' or one of its dependencies. The system cannot find the file specified. aunque hay algunos más. Este error se produce porque hay algunos archivos resultantes de la anterior compilación que quedan bloqueados y el entorno no puede sobrescribirlos. Hay varias soluciones: 1.- Compilar entero el proyecto otra vez desde el menú Build·Build all. Es lo que suelo hacer yo.2.- Borrar los archivos temporales de ASP.NET. Es fácil de hacer ocn un bat... [Más]

Creación de tablas de proveedores ASP.NET desde línea de comandos

Como muchos programadores de ASP.NET saben (y también se ha comentado aquí en otras ocasiones) en la carpeta "C:\Windows\Microsoft .NET\Framework\v2.0.xxxx" existe un ejecutable, aspnet_regsql.exe, que permite crear la estructura de tablas necesarias por ASP.NEt para almacenar la información de sus proveedores en SQL Server. Sirve tanto para SQL Server 2005 como para versiones más antiguas, como la 2000. La estructura de tablas creada sirve para almacenar todo tipo de información implementada mediante proveedores de tipo "SQLProvider" que vienen con ASP.NET: autenticación y autorización (usuarios y roles), perfiles, Webparts, sesiones, eventos, configuración y mapas de sitios. Podemos lanzar ese ejecutable para obtener un sencillo asistente gráfico que nos permitirá crear esta estructura de tablas y procedimientos almacenados en cualquier base de datos. Pero además podemos ejecutar aspnet_regsql.exe desde la línea de comandos para crear esta estructura automáticamente duran... [Más]

CampusMVP saca la convocatoria de verano de sus cursos :-)

      campusMVP - Nueva convocatoria de cursos ¿Qué mejor momento para ponerte al  día en .NET que la época estival? La oficina está más tranquila, el jefe se irá de vacaciones y seguro que tienes algunas horas sueltas aunque quien disfrute de vacaciones seas tú. Eso hemos pensado en campusMVP y, por primera vez, ofrecemos una convocatoria de verano de todos nuestros cursos, incluidos los de certificación. Para ello, además, hemos remodelado la oferta existente con unos precios menores en casi todos los cursos y descuentos interesantes si eres antiguo alumno o estudiante universitario. Recuerda que puedes formarte a tu ritmo y desde cualquier lugar, hasta desde ese chiringuito wi-fi de la playa que, como buen friki, seguro que adoras. ¡Nosotros también! :-) Los cursos de certificación comienzan el día 18 de Junio, aunque te puedes matricular hasta el día 30 si prefieres. Tienes hasta el 30 de septiembre para hacerlos. Los cur... [Más]

Añadido a mi post "Obtener la IP de conexión de un usuario (aunque entre con un proxy)"

Respecto a mi post anterior "Obtener la IP de conexión de un usuario (aunque entre con un proxy)" voy a hacer un añadido a raíz de una pregunta que me han hecho, que aunque la contesté en lso comentarios del mismo, prefiero ponerlo aquí porque mucha gente lee este blog a través de su copia en Geeks en lugar de directamente en www.jasoft.org. La pregunta en concreto era: Esa cabecera Header, HTTP_X-Forwarded-For, aparece documentada oficialmente ? ¿Es parte del HTTP 1.1, es decir, aparecería en todas las peticiones a páginas que se hicieran (htm, aspx, asp, ...) ? La respuesta: La cabecera X-Forwarded-For estaba en los primeros borradores del RFC 2616 para HTTP 1.1 pero luego lo quitaron. Sin embargo el proxy más utilizado de Internet (Squid) lo utilizó desde el principio y se ha quedado como estándar de facto. De hecho la RFC 2616 indica otra cabecera para estos menesteres llamada "Via" (está en la sección 14.45 del RFC), pero curiosamente no proporciona ninguna forma e... [Más]

Obtener la IP de conexión de un usuario (aunque entre con un proxy)

El otro día me hicieron una pregunta muy común que es "¿cómo puedo obtener la dirección IP de los usuarios que se conectan a mi aplicación Web ASP.NET?" La respuesta es directa y sencilla: usando la variable HTTP_CLIENT-IP de las cabeceras del servidor, a través del objeto Request así: Request.ServerVariables{"HTTP_CLIENT-IP"] Más fácil imposible. Sin embargo hay una cuestión que no todo el mundo tiene controlada y es que muchos usuarios acceden a Internet a través de un proxy, y la mayor parte de las veces ni siquiera lo saben. Ello es debido a que algunos proveedores de acceso a Internet (por ejemplo Telefónica en España) para ahorrar ancho de banda utilizan proxies-caché que actúan de hombre en el medio a la hora de acceder a las páginas de Interenet. Si no lo tenemos en cuenta podemos llevarnos más d eun disgusto en nuestras aplicaciones, sobre todo si creemos que con la cabecera anterior ya tenemos la IP del usuario, ya que en realidad obtendremos la IP del Proxy. ¿Cóm... [Más]