Entonces… ¿prefieres trabajadores que nadie más quiere?

Hace unos meses escribí un post titulado «Una reflexión para jefes, responsables, directores… y también para profesionales TIC» que hablaba sobre la eterna pega que ponen muchas empresas para formar a los trabajadores en sus áreas de actividad.


Ayer, leyendo el blog de Manuel Delgado me encuentro con esta viñeta de 1.00 FTE que resume estupendamente lo que yo expresaba en aquel post. Me ha parecido buenísima, así que también la comparto:



 

Si programas para ganarte la vida, este libro te interesará seguro…

.NET Windows Development - Everyday tips and tricks Hoy en Krasis Press hemos lanzado nuestro nuevo libro «.NET Windows Development – Everyday Tips, Tricks & Optimization« de Alberto Población.


Se trata de un libro escrito en inglés cuyo prólogo recomendándolo lo ha escrito la mismísima Lisa Feigenbaum, respondable de producto de Visual Studio de Microsoft en Redmond.


Desde hoy está disponible ya para compra España y en las próximas semanas estará a la venta en Amazon, Barnes&Noble y en muchas otras librerías on-line de todo el mundo, así como en el circuito de librerías de EEUU y UK.


Alberto es un experimentadísimo desarrollador y formador que desde hace muchos años desarrolla y consulta para empresas de diversos países.


La experiencia del autor a la hora de hacer consultoría para equipos de desarrolladores que crean aplicaciones de negocio le ha llevado a un interesante descubrimiento: aunque la mayoría de los desarrolladores de este tipo de aplicaciones son muy buenos escribiendo formularios de datos, manipulación de los mismos e informes, sin embargo no saben sacar partido a muchos subconjuntos de la plataforma .NET que les proporcionarían grandes ventajas.


De vez en cuando se necesita alguna característica diferente en los programas. Puede ser necesario visualizar un gráfico personalizado como un organigrama, o quizás generar un informe personalizado que no se puede generar con el motor de informes estándar. O a lo mejor el programa se puede beneficiar de sacar partido a algunas de las nuevas características de Windows 7. O el código utilizado para persistir objetos complejos se puede hacer más sencillo gracias a la serialización…


En este libro se presentan diversas técnicas que pueden ser útiles para llevar a cabo tareas que no serán familiares para el lector, pero que pueden ser muy apropiadas a la hora de mejorar las aplicaciones y darles un toque de calidad.
 
Algunas de las materias cubiertas por el libro son:



· Técnicas especiales de acceso a datos
· Nuevas características de UI de Windows 7
· Uso de gráficos, serialización y reflexión
· Técnicas varias que deberían ser muy conocidas, pero que no lo son.
· Trucos para crear aplicaciones Windows Forms


La mayor parte de los trucos y técnicas explicados funcionarán con todas las versiones de Visual Studio, y si se necesita alguna versión determinada se indica siempre. Unos cuantos ejemplos muy específicos son nuevos para Visual Studio 2010 en exclusiva.


En definitiva: si te ganas la vida escribiendo aplicaciones de negocio con .NET es un libro que te encantará tener en tu mesa 🙂

Cómo extraer contenidos desde un archivo .MSI de instalación

Hoy uno rápido…


Muchas veces tenemos que descargarnos archivos de Windows Installer, con extensión .msi, que contienen las aplicaciones que deseamos instalar. Pero si sabemos que las aplicaciones contenidas en su intereior no necesitan instalación, sino que pueden ser utilizadas directamente ¿para qué vamos a instalar usando el .msi?


Es más, a veces Microsoft se empeña en meter en este tipo de archivos de instalación cosas que realmente no necesitan ser instaladas en absoluto. Por ejemplo, archivos de tipo .chm con documentación (me ha ocurrido en diversas ocasiones), o ejecutables escritos en C++ sin ningún tipo de dependencia, o los ejemplos de MSDN Magazine sin ir más lejos.


A mi me resulta muy útil poder extraer de dentro del MSI los archivos sin necesidad de instalarlos y sin que quede registrada en el sistema la instalación. Para ello podemos usar el propio Windows Installer desde la línea de comandos.


Lo que debemos hacer es abrir la línea de comandos como administradores:



y una vez allí escribimos:



msiexec /a «Ruta archivo .msi» /qb targetdir=»Ruta a una carpeta donde extraer»


¡Listo! Encontrarás todos los contenidos expandidos y ordenados dentro de la carpeta de destino.

Cómo suplantar usuarios de tu aplicación para soporte

Esta es una cuestión bastante habitual y es que es muy útil, siendo administrador de una aplicación, poder entrar como cualquier otro usuario para ver lo mismo que éste ve y poder hacer cosas en su nombre. Sobre todo a la hora de dar soporte técnico, poder atender mejor a los usuarios, ayudarles o detectar posibles problemas en sus cuentas.


La idea es la de poder entrar haciéndonos pasar por otros usuarios, como si fuésemos ellos, pero sin conocer sus credenciales. El otro día un alumno de mi curso de Desarrollo Web con ASP.NET me preguntó  precisamente esto, por lo que me he decidido a grabar un vídeo práctico explicando como hacerlo.


Como verás es muy fácil, pero interesante. Dejo el vídeo a continuación y te recomiendo que, antes, te leas este post que escribí hace tiempo sobre el funcionamiento de las cookies de autenticación.


¡Espero que te resulte útil!





Nota: Si el vídeo no se ve vete directamente al original aquí.

WebMatrix: herramienta ideal para los que aún están en ASP 3.0 clásico

Estos días, salvo que hayas estado debajo de una piedra encerrado, te habrás hartado de oir hablar de WebMatrix, desde que lo presentó Scott Guthrie hace nada.


He estado probando Webmatrix con unas semanas de antelación a ese anuncio gracias a estar en el grupo de «Insiders» de ASP.NET en Microsoft. Mi primera reacción cuando lo vi fue: «Dioss! que porquería: esto va a crear muchos bodrios por ahí». Y la verdad es que si eres un programador experimentado con ASP.NET WebForms o con ASP.NET MVC, Webmatrix y su nueva sintaxis Razor no creo que te aporten gran cosa o que te vayan a interesar de entrada. Pero luego realmente te das cuenta de lo interesante que es una herramienta como esta para otro perfil de programadores: aquellos que se «han quedado» en ASP 3.0 clásico o en PHP, JSP, etc… y que quieren saltar a desarrollar con .NET. En ese caso WebMatrix es un producto genial.


Es más: dado que viene con multitud de aplicaciones Open Source ya listas para usar (desde gestores de contenidos o foros hasta cosas más complicadas, hay de todo) y que es muy fácil probarlas, retocarlas o ampliarlas con páginas propias usando el nuevo motor, abre la puerta a multitud de empresas pequeñas que desarrollan aplicaciones Web a medida para sus clientes y que lo que realmente les interesa es aprovechar software ya hecho, simplemente adaptándolo o retocándolo un poco.


Además WebMatrix presenta por primera vez IIS Express y SQL Server Compact, dos herramientas que TODOS los programadores Web vamos a usar mucho en los próximos meses.


Tenía pensado escribir un buen artículo sobre la herramienta, pero el día a día me lo ha impedido, y además nuestro tutor y amigo José María Aguilar se nos ha adelantado a todos publicando un excelente articulo que da un buen repaso a WebMatrix y todas sus herramientas para que sepas por donde estás pisando. Lo hemos colgado en Scribd, así que puedes leerlo, imprimirlo y descargarlo desde allí.


¡¡Esperamos que te guste!!

Cómo forzar la configuración correcta de ASP.NET en un servidor

Existen una serie de ajustes en aplicaciones Web que deberíamos cuidar especialmente cuando las despleguemos en un servidor en producción. Se trata de características que, de estar mal establecidas en un servidor abierto a cualquiera a través de Internet, pueden suponer un problema de seguridad o mermar el rendimiento de una aplicación.


En este artículo vamos a estudiar dos de estos ajustes críticos, lo que suelen hacer mal los programadores con ellos y cómo podemos forzar su correcto uso en servidores de producción.


Depuración


Cuando estamos desarrollando una aplicación Web con ASP.NET (tanto Web Forms como MVC) establecemos una serie de configuraciones que nos facilitan la depuración de las mismas: mensajes de error detallados, depuración paso a paso, trazas del código, etc…


Existe un ajuste en la configuración de la aplicación Web (archivo web.config) que controla de manera global el estado de depuración y, por tanto, todas estas características:



<compilation debug=”true”/>


Es más, cuando lanzamos por primera vez una aplicación Web desde Visual Studio pulsando F5, se nos muestra una ventana de confirmación para establecer de manera automática este ajuste y que funcionen todas las características de depuración:



Al aceptar la opción por defecto se establece este ajuste automáticamente por nosotros:



Aunque está muy bien mientras desarrollamos, se trata de algo inaceptable en un servidor en producción, una vez que la aplicación está terminada y puesta a funcionar en su ubicación definitiva.


El principal motivo para desaconsejar el ajuste debug=true en producción es que obtendremos menos rendimiento en la aplicación, ya que el código de depuración generado es menos eficiente.


Es muy habitual que los desarrolladores se olviden de desactivar la depuración en el web.config antes de subir la aplicación al servidor.


Detalles de los errores


Otro ajuste que es frecuente encontrarse mal establecido es el relativo a los mensajes detallados de error. Si colocamos el ajuste:



<customErrors mode=»On»>


en la configuración, siempre que se produzca un error no controlado se mostrarán los detalles a través de la típica “página amarilla de la muerte” (YSOD), que es como se conoce a las habituales páginas de error de ASP.NET.


JAMÁS debemos dejar que nuestras aplicaciones muestren los detalles de los errores a los usuarios. Aparte de denotar dejadez por parte de los programadores y falta de calidad de las aplicaciones,  a los usuarios tampoco les van a decir nada. Pero es que además mostrar esa información detallada de los errores revela multitud de información sobre cómo están hechas las aplicaciones e incluso, en casos extremos de chapuza, pueden revelar claves, estructuras de directorios, estructuras de bases de datos, etc… Esto proporciona información importante a posibles asaltantes de nuestro servidor, que pueden usarla para atacar nuestra aplicación.


Sin rodeos: mostrar detalles de los errores es una de las peores prácticas de seguridad universalmente reconocidas.


Una vez más, suele ser habitual que los desarrolladores suban aplicaciones a producción con este ajuste establecido.


¿Cómo podemos evitar estas malas prácticas?


Si somos responsables de algún servidor Web en producción sería muy conveniente que pudiésemos forzar de algún modo que los programadores cumplieran las buenas prácticas.


Esto es lo que podemos conseguir usando un ajuste poco conocido: <deployment retail>


Este ajuste sólo se puede indicar en la configuración global del servidor, es decir, en el archivo machine.config ubicado en C:WindowsMicrosoft.NETFrameworkv4.0.30319Config o similar (vale también para la versión 2.0 o superior de .NET).



Si abrimos este archivo y buscamos la sección “configuration•system.web” podemos establecer dicho atributo a true así:



<configuration>
    <system.web>
        <deployment retail=”true”/>
    </system.web>
</configuration>


Al hacerlo, da exactamente igual que el programador se haya olvidado de quitar el debug=true, las trazas o las páginas de error detalladas, ya que este ajuste prevalece sobre los locales de nuestra aplicación y deshabilita todas estas funciones.


Además, si vemos su definición en el mismo archivo machine.config, vemos que tiene establecido el atributo AllowDefinition=”MachineOnly”:



Esto significa que no podrá ser sobrescrito por configuraciones en niveles inferiores, es decir, que aunque algún programador intentase saltárselo poniendo lo mismo (pero a false) en el web.config, recibiría un error indicándole que no se puede sobrescribir e impediría que la aplicación funcionase.


Por todo ello, este poco conocido pero importante ajuste es algo que todos deberíamos asegurarnos de utilizar en los servidores que tengamos en producción.


¡Espero que te resulte útil!