Solucionar el problema de la velocidad lenta de Terminal Services en Vista

Cuando empiezas a usar Windows Vista para conectarte mediante Terminal Services a máquinas remotas te das cuenta de que, de repente, todo va muuucho más lento. Si te conectas desde el mismo sitio al mismo terminal remoto pero usando en el cliente Windows XP, verás que la cosa va mucho más rápida 😕


De hecho la cosa puede ser mucho peor, y en mi caso empezó a serlo cuando tuve Windows Vista tanto en el PC de mi oficina como en el portátil de mi casa. Teniendo Vista en ambos extremos la cosa empezó a ponerse realmente dura. Casi no había forma de usar la consola remota. Un problemón.


¿Y esto? ¿a qué se debe?


El caso es que en Internet es muy difícil encontrar información sobre este asunto, y mucho menos soluciones. Pero con un poco de paciencia di con un artículo de Tom Keating que explica cómo solucionarlo.


El problema viene de que el cliente de TS nuevo utiliza una nueva característica de Vista llamada «auto-ajuste de la ventana de recepción TCP/IP«. Básicamente es algo muy útil para conseguir una optimización automática de nuestra conectividad, pero en determinados casos puede tener consecuencias nefastas. Uno de esos casos es Terminal Services. En el artículo referido antes lo explica con detalles si lo quieres leer.


Normalmente no deberías desactivar esta característica, pero si eres como yo y te pasas el día conectado a diversas máquinas remotas a través de TS, lo mejor es que lo hasgas pero ya mismo…


Para conseguirlo basta con escribir esto en la línea de comandos (con derechos de administrador):



netsh interface tcp set global autotuninglevel=disabled


¡Listo! Hazlo sobre todo en el equipo cliente y ¡voilà! de repente TS comienza a funcionar a toda mecha otra vez. Una verdadera pena, la verdad.


He dicho en muchas ocasiones públicamente lo mucho que me gusta Vista, pero hay que reconocer que para usaurios avanzados todavía sigue teniendo bastantes pegas. Esperemos que con ese tan traído y tan llevado Service Pack 1 que van a sacar el año que viene, muchos de estos detalles se solucionen.


Si quieres tener detalles exhaustivos leete el excelente post de Tom Keating reseñado antes.


Espero que a muchos les soluciones el problema 🙂

Segunda oportunidad con los cursos de certificación de campusMVP

Al contrario que en otros mercados, en el sector tecnológico la oferta laboral supera a la demanda en toda Europa. Esta es una situación que empieza a alarmar seriamente a las empresas. Sólo en España se estima que faltan por cubrir 25.000 puestos de trabajo relacionados con las TIC (sistemas, programación…), pero los más pesimistas dicen que en tres años puede llegar a las 300.000 personas. Los perfiles  más solicitados son los que tienen buenos conocimientos de .NET, SQL Server, Java y Oracle.


Formación on-linePor ello, es cada vez más importante que te formes, pues a los profesionales que tengan conocimientos en estas tecnologías jamás les va a faltar el trabajo. Y si además de conocer la tecnología dispones de un certificado oficial que lo avale, mucho mejor: más fácil encontrar trabajo y poder alcanzar una remuneración máyor. En este sentido obtener una certificación de Microsoft te resultará de gran utilidad.


Desde hace unas semanas muchos alumnos nos han llamado para ver cuándo empezábamos de nuevo con los cursos de certificación. Bueno, pues ya están aquí: lanzamos una nueva convocatoria de nuestros cursos ON-LINE de certificación. Disponemos de los cursos de certificación en SQL Server, Desarrollo Web, Windows Mobile, y el de fundamentos de .NET (70-536). Además también el curso base para las certificaciones de sistemas, el 70-290 de Administración y Mantenimiento de Windows Server.


Hemos hecho un esfuerzo y ahora los cursos te ofrecen más por menos precio. Échale un vistazo a nuestra nueva oferta.


campusMVP - 902 876 475


Si tienes alguna duda sobre las certificaciones de Microsoft te recomendamos que te descargues nuestra revista Learning Momentum, en la que encontrarás explicaciones claras sobre las distintas certificaciones disponibles, qué pasos es mejro seguir, cómo actualizarte desde títulos anteriores, etc…


Las clases comienzan el día 2 de Octubre, y sería bueno que si estás interesado te apuntes cuanto antes y en todo caso antes de final de mes.


Además sólo en esta convocatoria dispones de Second Shot. Se trata de una oferta de Microsoft en virtud de la cual tienes dos oportunidades por el precio de una para hacer el examen de certificación oficial Si suspendes la primera vez, la segunda te sale gratis. Échale un vistazo a esta oferta y sus preguntas frecuentes.


¡Te esperamos!

IIS frente a Apache: ¿Cuál es más seguro?

La sabiduría popular suele ser útil para muchas cosas. Sólo hay que darse una vuelta por el rico refranero español para obtener una gran cantidad de sabios consejos grátis. No obstante el saber popular muchas veces que se confunde con lo que son simplemente mitos y leyendas urbanos, que están alejados de la realidad.


En el mundo de la informática existen multitud de estas leyendas urbanas. Algunas están sustentadas en hechos «históricos» acaecidos al principio de los tiempos que sin embargo perduran hasta nuestros días como si las cosas permaneciesen inmutables. Por ejemplo, hay quien sigue comparando Windows 98 con Linux para decir que éste último es más estable, etc… (claro que no dicen nada del nefasto «98» en cuestión, sólo de «Windows»), o SQL Server 6.5 con Oracle, etc…


Una de estas posibles leyendas urbanas es la de que Apache es mucho más seguro que Internet Information Server.


The Apache Software FoundationTodo esto viene a raíz de un artículo aparecido en Computer World el pasado día 7, en el que Roger A. Grimes pone de manifiesto sus dudas a este respecto y muestra muchos datos interesantes.


Por ejemplo, desde el famoso incidente del gusano Code Red en 2001 no ha habido un sólo ataque masivo con éxito a servidores IIS, mientras que todos los días miles de Apaches caen como moscas.


De todos modos no me gustan estas afirmaciones «cualitativas», que se parecen a otras como, «Los Sitios en Apache/Linux son mucho más estables y cargan más rápido que los que trabajan bajo IIS/Windows», en sentido contrario. Prefiero datos más objetivos, y Roger también. Así que durante el último mes se dedicó a monitorizar todos los incidentes de seguridad que aparecían sobre uno y otro servidor. La proporción de servidores comprometidos era de 17 a 1 en detrimento de Apache (es decir Apache era hackeado 17 veces más veces que IIS). También en Zone-H, la web que lleva un registro de los servidores hackeados, se muestra que entornoal 80-90% de los sitios web maliciosos están basados en Apache. Finalmente en el informe de Phising de Castlecops, con más de medio millón de servidores registrados, se ve que aproximadamente el 93% de los incidentes provenían de servidores Apache.


 


Como bien dice el amigo Roger, realmente ambos servidores son razonablemente seguros hoy en día. En realidad todas estas estadísticas que se quieren llevar hacia la seguridad del producto en sí están basadas en la creencia errónea de que la seguridad depende sólo del producto, cuando realmente depende mucho más de las personas y sus errores. Un producto muy seguro mal configurado será una «coladera» de seguridad. En ese sentido IIS tiene la ventaja de ser un producto muy fácil de configurar (aunque si quieres meterte a fondo tiene sus cosas), y que viene por defecto configurado con una superficie de ataque mínima.


Lo que ocurre es que hay muchos programadores que no se preocupan por la seguridad en absoluto, o la comprensión que tienen de la misma es muy reducida. Así, independientemente de lo seguro que sea un servidor Web y de lo bien configurado que esté, si tenemos una aplicación con código irresponsable y plagado de agujeros de seguridad, no nos valdrá de nada y el servidro acabará comprometido.


En mi opinión hay una carencia generalizada de formación en seguridad porque muchos programadores asumen que se trata de una responsabilidad de la gente de sistemas. Craso error. Pienso que la seguridad es más importante enlas aplicaciones incluso que en los sistemas, y que todos los programadores deben conocer como mínimo las técnicas fundamentales de escritura de código seguro.


Pienso que es casi una obligación moral. ¿Qué pensaríamos de un médico que sabe las técnicas quirúrgicas para operar a un paciente pero desconoce lo mínimo de higiene?. Nos parece impensable, algo que se da por sentado y sin lo que no lo consideraríamos un buen profesional ¿verdad?. Pues para un programador la seguridad es casi lo mismo.


Dejo ahí esta reflexión.


Y por cierto, no quiero «entrar al trapo» en el ámbito de las creencias sobre Linux vs. Windows, Oracle vs. SQL Server o IIS vs. Apache. No es mi especialidad y además pienso que cada cosa tiene sus aplicaciones idóneas y no hay una verdad absoluta ¿vale? 🙂

Utilidad para cambiar en masa la codificacion de los archivos

Ayer tuve la necesidad de hacer uncambio de codificación masivo de archivos para un proyecto. El caso es que tenía varias decenas de archivos de texto y HTML distribuidos en varios niveles de carpetas. Éstos estaban codificados como UTF-8 y necesitaba disponer de los mismos con codificación ANSI. Dado que es un problema que se puede presentar a menudo en empresas como la nuestra que maneja muchos contenidos decidí escribir una utilidad que hicera conversiones entre diferentes tipos de coficación. Así que mientras veía un par de capítulos de CSI (no me pueden dejar de rodrgíguez, si ya lo digo yo) escribí esta pequeña utilidad que estoy seguro que a muchos les puede resultar de ayuda.


Se trata de FileEncodingConverter.exe. Es una aplicación de consola que toma como parámetros la ruta base que contiene nuestros archivos y, opcionalmente un tipo de codificación a la que queremos convertirlos. Acepta rutas relativas a la carpeta actual y rutas absolutas.


Los tipos de codificación soportados son los siguientes: ANSI, ASCII, Unicode, UnicodeBI (Big Indian), UTF32, UTF7, UTF8.  No se distinguen mayúsculas y minúsculas. Si omitimos la codificación se usará ANSI.


Lo que hace es recorrer la carpeta base especificada y todas sus subcarpetas y transforma todos los archivos con extensiones .htm, .html y .txt a la codificación de destino especificada. Sólo transforma un archivo si es necesario, puesto que si ya está guardado con la codificación especificada no pasa el trabajo inutilmente. Muestra un progreso de los archivos que va transformando, y al final muestra un resumen de lo que ha hecho.


Así, por ejemplo, para transformar todos los archivos de una carpeta y sus subcarpetas de su codificación actual a Unicode Big Indian escribiríamos:



FileEncodingConverter C:Micarpeta UnicodeBI


o para convertir todos a ANSi valdría con poner:



FileEncodingConverter C:Micarpeta


Si no ponemos nada o uamos los parámetros /? o -? muestra una ayuda básica por consola.


Te lo puedes descargar desde aquí: FileEncodingConverter (3,73 KB). Necesitarás la versi´no 2.0 o superior de .NET instalada.


¡Que lo disfrutes!

Compatibilidad entre versiones de SQL Server – problema la ordenación ORDER BY y los prefijos

Bueno, he estado completamente «missing» durante 5 semanas. No es que me haya ido de vacacione (ojalá) sino que simplemente he tenido demasiado trabajo 🙁


Retomo mi actividad blogera habitual con una cosa curiosa que me ha pasado recientemente y que estoy seguro de que a más de uno le podrá resultar útil.


Resulta que recientemente migramos una base de datos hecha con SQL Server 2000 a SQL Server 2005. Lo primero que hice una vez adjuntada al nuevo servidor fue poner el modo de compatibilidad con SQL Server 2005, es decir, hacer que se comportara nativamente como si siempre hubiera estado en esta última versión del SGBDR:



sp_dbcmptlevel ‘MiBaseDatos’, ’90’


Este comando T-SQL hace que la BD indicada se comporte con el nivel de compatibilidad indicado, en este caso la versión 9.0 de SQL Server, o sea, la 2005.


El caso es que todo parecía ir estupendamente, pero una de las consultas empezó a fallar. Y se tratata de una consulta muy sencilla. No la voy aponer aquí porque forma parte del dominio de aplicación, pero para que nos entendamos la consulta era básicamente como esta:



SELECT Distinct Tabla1.campo1, COUNT(SR.ID) AS Total
FROM Tabla1
RIGHT JOIN Tabla2 SR ON Tabla1.ID = SR.ID
WHERE –Condiciones
GROUP BY tabla1.Campo1
ORDER BY SR.Total DESC


A la tabla2  le ponemos un alias ‘SR’ (en la consulta real tenía más sentido).


Bueno, el caso es que, de repente empezó a fallar con un error muy raro que decía algo sobre la ordenación, cuando la consult ano tiene absolutamente nada.


El asunto es que, si ponemos de nuevo la BD en modo de compatibilidad con SQL Server 2000:


sp_dbcmptlevel ‘MiBaseDatos’, ’80’


De repente vuelve a funcionar sin problemas.


El problema viene porque SQL Server 2005 no permite prefijos en las cláusulas ORDER BY porque no permite que haya ambigüedad alguna en esos campos, y por lo tanto asume que no necesitas usar prefijo alguno. Total, que si no tenemos ambigüedades (todos nuestros campos del resultado son de nombres diferentes) entonces podemos poner la consulta sin el prefijo y todo funcionará sin problemas:


SELECT Distinct Tabla1.campo1, COUNT(SR.ID) AS Total
FROM Tabla1
RIGHT JOIN Tabla2 SR ON Tabla1.ID = SR.ID
WHERE –Condiciones
GROUP BY tabla1.Campo1
ORDER BY Total DESC


Es decir, al no haber ambigüedades funcionará en ambas versiones sin problemas. En la 2000 porque no hay ambigüedad y en la 2005 por el mismo motivo (no hay prefijo).


Total que es la típica cosa que te puede volver loco por una tontería si no lo ves enseguida como me pasó a mi 🙁


En este artículo de Technet explican má diferencias de compatibilidad entre ambas versiones: http://technet.microsoft.com/en-us/library/ms178653.aspx


Espero que le sirva a alguien. En breve más 🙂