Simplemembership

Con ASP.NET 4 (y MVC, WebPages…) han mejorado el sistema de membership, simplificándolo y acercándolo a EF CodeFirst. Lo podéis ver implementado si creáis un nuevo proyecto MVC 4 de tipo internet, pues en esa plantilla lo utilizan para la gestión de usuarios.

Etiquetado con: , ,

Increíble anuncio de presentación de Internet Explorer 11

Esto parece ser uno de los anuncios con los que Microsoft presenta el nuevo Internet Explorer 11.

¡Menuda frikada!

Etiquetado con: , , ,

Cómo implementar aplicaciones con ASP.NET MVC (Recomendaciones)

ASP.NET MVC

Hace un tiempo encontre recomendaciones para utilizar el framework MVC de ASP.NET que me resultaron interesantes y que a la larga has sido útiles al realizar implementaciones.

Las recomendaciones vienen de parte de Jimmy Bogard, ​un miembro importante de la comunidad .NET, autor de libros sobre MVC, desarrollador de la utilidad AutoMapper, y autor también de muchos artículos fantásticos en LosTechies

En 2009 publicó el siguiente artículo sobre como hacían aplicaciones con MVC en ese momento:

Y hace muy poco publicó este otro con la actualización de todas aquellas recomendaciones, y como habían evolucionado con el tiempo

Lectura obligada.

Etiquetado con: ,

Horario del fin del mundo

Para que nadie se pierda ni un solo evento. Hora peninsular.

06:30 – Apertura del Fin
07:00 – Lluvia de meteoritos
08:30 – Llegada del primer tsunami
10:00 – Bienvenida de los ovnis
10:30 – flashmob baile de ovnis al estilo de Gangnam
11:36 – Comienzo de la Destrucción (sub.)
12:00 – Eclipse y la alineación de todos los planetas del sistema solar
12:00-14:00 – ALMUERZO
14:15 – Inversión de polos magnéticos de la Tierra
15:00 – Super calentamiento Global(con programa especial)
16:30 – Inicio de la aniquilación de los terrícolas
17:00 – Isabel PANTOJA en concierto
18:00 – Revelación de los alienígenas residentes en la tierra
19:00 – programa especial LA VOZ
20:00 – Reapertura del túnel entre el Taj Mahal y Machu Pichu
21:00 – POLLO A LA BRASA
22:00 – Entrega de regalos del amigo invisible
23:00 – Brindis
23:30 – Fin del fin del Mundo

(Fuente: Recibido por whatsapp…)

Etiquetado con:

Problema con TFS: Visual Studio desprotege soluciones al abrirlas

Se trata de un bug/problema reportado en MS Connect (http://connect.microsoft.com/VisualStudio/feedback/details/573538/visual-studio-2010-with-tfs-2010-always-checks-out-the-solution-file-when-opening), por el que cuando en una solución está definida una determinada sección, VS la desprotege cuando la abre.
Esta sección puede generarse por varios motivos, por ejemplo, al instalar algún paquete nuget de EnterpriseLibrary. Esta acción es la que parece que ha ocasionado la aparición de dicha sección en alguna de nuestras soluciones.

Para solucionar el problema, la única alternativa es eliminar la sección completamente de la solución, como aparece en la pestaña “Soluciones alternativas” del enlace anterior:

1) Check-out your solution file from source control
2) Open the solution file in a text editor, like Notepad.
3) Find a section named “GlobalSection(ExtensibilityGlobals)”
4) Delete the entire section, including the opening and closing section markers.
— GlobalSection(ExtensibilityGlobals) = postSolution
— through
— EndGlobalSection
5) Save the solution file in the text editor
6) Check the solution file back in to source control
7) Open the solution in Visual Studio

 Parece que el contenido de dicha sección no es necesario, al menos no se ha detectado ninguna incompatibilidad por el momento, por lo que es segura su eliminación.
Etiquetado con: , ,

Herramienta de profiling para SQL Server

He dado con una herramienta interesante, mientras buscaba la forma de visualizar trazas para SQL Server Express sin tener que instalar SSMS…

La herramienta en cuestión se llama Sql Profiler (no se han devanado mucho los sesos para ponerle nombre…), y además de la herramienta de trazas que buscaba, tiene más funcionalidades que pueden aportar mucha información estadística de ejecución de consultas y rendimiento del servidor. De momento no he tenido mucho tiempo para explorarlas, pero prometen bastante. Trataré de escribir más información al respecto cuando lo haya hecho, de momento, aquí os dejo algunas capturas de pantalla…

Trazas

Trazas

Dashboard

Dashboard

Se puede descargar de forma gratuita desde aquí: http://code.google.com/p/sqlexpressprofiler/

Parece que hay versiones de pago aquí: http://www.datawizard.com/, así que no se cuánto durará la herramienta sin coste…

Etiquetado con: ,

Visual Studio 2012. Búsqueda y filtrado en el explorador de pruebas.

Hay muchos cambios en Visual Studio 2012, y la mayor parte de ellos me están gustando mucho, pero hay uno que me trae de cabeza.

En Visual Studio 2010 en la vista de pruebas se puede agrupar por todas estas opciones:

Agrupación de pruebas en Visual Studio 2010

En Visual Studio 2012 han suprimido las funcionalidades de agrupación de pruebas unitarias en el explorador de pruebas, y tampoco existe la posibilidad de crear listas. Simplemente las han borrado del mapa… Eso ha estado mal!

En la siguiente imagen, se puede ver que las opciones de agrupación son escasísimas:

Agrupación en Visual Studio 2012

Para apañarlo un poco, he encontrado una funcionalidad, que si bien no repara los daños, al menos los compensa un poco: La funcionalidad de búsqueda y filtrado.

En la parte superior del explorador encontrados un cuadro de búsqueda, que si desplegamos nos da tres opciones, alguna de ellas interesante:

Filtrado por nombre completo de la prueba

Filtrado por nombre completo de la prueba

Nos permite escribir namespaces (completos o parciales) y en la vista nos mostrará sólamente las que coinciden con dicho criterio… Algo es algo.

Filtrado por la ruta de acceso al archivo

Filtrado por ruta de acceso al archivo

Permite escribir el fichero en el que se encuentra la prueba, y nos mostrará las pruebas contenidas solo en ese fichero.

Filtrado por resultado de la prueba

Filtro por resultado de las pruebas

Permite mostrar sólo las pruebas según el estado final: Superadas, no superadas, etc…

Si alguien encuentra algo mejor, que no dude en comentarlo, por que me interesa, y mucho!!

Etiquetado con: , ,

Mejora tu productividad: La técnica pomodoro

Buscando en el océano de internet, ayudas y formas de trabajar que me permitiera optimizar la concentración para aumentar la productividad, me encontré con una técnica en la que prima la simplicidad, y que es elegante por naturaleza, dos cualidades muy apreciadas por la gente que nos dedicamos al desarrollo de software y sus derivados.

La técnica pomodoro nació a finales de los 80, cuando Francesco Cirillo comenzó sus estudios universitarios. Se dio cuenta de que acudía a clase, dedicaba largas horas al estudio y volvía a casa todos los días, pero con la sensación de que el tiempo no lo estaba aprovechando como debería, con las fechas de examen acercándose inexorablemente… Como resultado: ansiedad y nervios que todavía reducen más la capacidad de concentración, y por ende, la productividad…

Se dio cuenta de que lo que le estaba ocurriendo es que le faltaba organización, sufría de un gran número de interrupciones y distracciones y todo ello incidía en un nivel bajo de motivación ante el trabajo que tenía por delante.

Cuando leí lo anterior en el libro de Francesco “The pomodoro technique”, reconocí rápidamente los síntomas descritos en mi experiencia personal, y me atrevería a decir que en la mayor parte de los que se dedican a realizar tareas de índole intelectual (como el desarrollo de software).

Objetivos

La técnica pomodoro tiene como objetivo mejorar la productividad individual y la del equipo mediante el uso de un proceso y algunas herramientas simples.

Las metas más importantes son:

  • Aliviar la ansiedad ante los deadlines
  • Mejorar la concentración evitando las interrupciones
  • Aumentar la motivación y mantenerla constante
  • Ayudar en la estimación del tiempo a dedicar para el desarrollo de las tareas diarias

En qué consiste

El proceso subyacente a la técnica pomodoro consiste en 5 etapas sencillas:

Fase Cuándo Por qué
Fase 1. Planificación Al principio de la jornada de trabajo Para decidir las tareas a realizar
Fase 2. Seguimiento Durante la jornada de trabajo Para recoger los datos en bruto del esfuerzo realizado y otras métricas de interés
Fase 3. Compilación de datos Al final de la jornada de trabajo Para recopilar y guardar las observaciones de la jornada
Fase 4. Procesado Al final de la jornada de trabajo Para transformar los datos en bruto en información
Fase 5. Visualización Al final de la jornada de trabajo Para presentar la información en un formato que facilite la interpretación y ayude a encontrar vías de mejora

Materiales

Aquí tenemos dos vertientes, la de baja tecnología, que es la que recomienda el “inventor” y la que se ayuda de la informática para reducir el esfuerzo del trabajo con datos en algunas de las fases.

Versión de baja tecnología

Necesitaremos:

  • Un “pomodoro”: Se trata de cualquier reloj de cocina, de los que se han utilizado toda la vida para controlar el tiempo que deben estar los alimentos en el “puchero”. La cuestión es que el reloj de cocina que usó Francesco en el momento de empezar a trabajar el método tenía forma de tomate; Pomodoro significa tomate en italiano, y de ahí surge el nombre de la técnica.

Reloj de cocina con forma de tomate (pomodoro)

  • Una hoja de papel en la que anotar las tareas por hacer, que se rellenará al inicio de la jornada (Fase 1) con lo siguiente:
    • Cabecera con el lugar, la fecha y el nombre del individuo
    • Una lista de tareas a realizar durante la jornada, en orden de prioridad
    • Una sección etiquetada como Tareas NO PLANIFICADAS y URGENTES, donde anotar los imprevistos surgidos durante la jornada. Estas tareas podrían modificar el plan previsto para la jornada
  • Un inventario de tareas, que consiste en:
    • Una cabecera con el nombre del autor
    • Una serie de líneas donde se anotan las tareas a realizar para concluir un determinado proyecto, trabajo, etc…

Como he mencionado, esta es la versión que recomienda el autor, ya que la mente humana interioriza las acciones de iniciar el reloj de cocina y sirve como puntero psicológico para recordarnos que debemos trabajar en una cosa concreta durante un determinado tiempo.

Versión tecnológica

Todo lo anterior se puede simular o mecanizar mediante software, de modo que podemos encontrar unas cuantas aplicaciones, unas más simples, otras más complejas, unas gratis, otras no tanto, que nos pueden ayudar en el desarrollo de esta técnica:

La más completa que he podido encontrar hasta la fecha, es esta: http://www.pomodoroapp.com, que nos automatiza las Fases 3, 4 y 5, y simula el reloj de cocina completamente. Es una aplicación gratuita en sus funciones básicas, pero que ofrece por poco dinero una versión Premium con más funcionalidades que pueden resultar útiles. Existe versión para Windows, para Mac e incluso para Ubuntu, aunque en fase experimental.

Hay más aplicaciones, incluso para dispositivos móviles, por lo que dejamos al lector para que les eche un vistazo por su cuenta:

Esta se puede usar desde la web, aunque también tiene aplicación instalable, con versiones para Mac y Windows: http://www.focusboosterapp.com/

También hay unas cuantas aplicaciones (algunas gratuitas y otras de pago) para dispositivos móviles que ejecuten android:

https://play.google.com/store/search?q=pomodoro&c=apps

Por supuesto, también las hay para iPhone:

http://itunes.apple.com/us/app/pomodoro-timer/id325610693?mt=8

¿Cómo implementar la técnica pomodoro?

La lista del inventario de tareas se irá llenando conforme las tareas a realizar en un proyecto, trabajo, etc… vayan surgiendo, estimando su coste en “pomodoros”, medida de tiempo de la que veremos su definición un poco más adelante.

Partiendo de la lista de tareas del inventario, en la fase de planificación diaria, seleccionamos las tareas a realizar hoy y las anotamos en la lista de tareas a realizar por orden de prioridad. (Fase 1)

Inicio del trabajo (Fase 2)

  • Elegimos de la lista de tareas a realizar en el día la más prioritaria
  • Ponemos el reloj a 25 minutos. A este intervalo de tiempo le llamaremos un “pomodoro”, el cual tomaremos como medida de tiempo para estimaciones.
  • Trabajamos en el desarrollo de la tarea hasta que el reloj suene
  • Marcar la tarea en la lista de tareas a realizar con una x (Esto lo hacen automáticamente algunas aplicaciones)
  • Tomar un descanso corto (entre 3 y 5 minutos)

Repetir el proceso desde el segundo punto hasta que la tarea se haya terminado, y en ese momento tachar la tarea en la lista de tareas a realizar en la jornada (también puede que lo hagan algunas aplicaciones automáticamente).

Cada cuatro “pomodoros” tomar un descanso más largo (15 – 20 minutos)

Reglas del juego y truquillos:

  • Un “pomodoro” es indivisible
  • Si una tarea se estima en más de 5-7 “pomodoros”, hay que subdividirla
  • Una vez que un “pomodoro” comienza, debe terminar.
  • El próximo “pomodoro” saldrá mejor.
  • La técnica pomodoro no debe usarse en tareas que realices en tu tiempo libre. ¡Disfruta de tu tiempo libre!

Interrupciones

Las interrupciones suponen un problema que hay que tratar y registrar, y se contemplan de 2 tipos:

Internas: Provocadas por nosotros mismos. Un despiste, la aparición de una nueva tarea imprevista, necesidad de levantarte a tomar algo, buscar algo en internet…

Marcaremos estas interrupciones con claridad, generalmente mediante un apóstrofe en la lista de tareas por hacer en la jornada, junto a la marca del “pomodoro” actual.

En estos casos, actuaremos del siguiente modo:

  • Si se trata de una nueva actividad:
    • Se anota en la lista de tareas por hacer en la jornada, en caso de que no se pueda posponer, en la sección de tareas NO PLANIFICADAS y URGENTES
    • Se anota en el inventario de tareas si la ésta se puede posponer a otras jornadas, marcándola como tarea NO PLANIFICADA, y estableciendo su fecha de entrega si se conoce.
    • Intensificar la determinación para concluir el “pomodoro” en el que nos encontramos

Externas: Cuando se trabaja en equipo, hay que lidiar con interrupciones que no dependen de nosotros, preguntas de colegas de trabajo, llegadas de correos electrónicos prioritarios, llamadas telefónicas, etc…

También marcaremos estas interrupciones con claridad, señalándolas con un guión en la lista de tareas por hacer en la jornada, junto a la marca del “pomodoro” actual.

Después aplicaremos unas de las reglas expuestas anteriormente para las interrupciones internas.

Fases 3, 4 y 5

Estas fases dependen de la forma en que cada uno (o la compañía para la que trabaja) necesite procesar los datos recogidos durante la fase 2, y de cómo se interpreten dichos datos. Pueden servir para facturar a cliente, o para ayudar en futuras estimaciones de trabajo, o simplemente, para mejorar día a día en el terreno personal para el desempeño de una actividad profesional o de otra índole.

Maridaje con metodologías ágiles

Es casi obvio, pero esta técnica tiene grandes puntos en común con algunas metodologías ágiles, como scrum, que la hacen fácilmente adaptable a nuestro esquema de trabajo:

  • La lista del inventario de actividades, puede tener su fuente en el sprint backlog
  • La lista de tareas por hacer y el trabajo de la Fase 1, se puede hacer con motivo de la daily scrum meeting, cuando hablamos del trabajo que vamos a poder realizar en la jornada actual.

A cada uno se le pueden ocurrir más puntos en común y mejoras, como casi todas, esta técnica esta abierta a personalizaciones y adaptaciones propias.

Enlaces de interés y bibliográficos

http://www.pomodorotechnique.com/

http://es.wikipedia.org/wiki/Técnica_Pomodoro

http://www.pomodoroworld.com/

Etiquetado con: ,

Team Foundation Server 2012: Áreas de trabajo locales

Acabamos de migrar nuestra versión de TFS de 2010 a 2012, al mismo tiempo que hemos empezado a usar Visual Studio 2012. En una palabra: IMPRESIONANTE. Más rápido, más bonito. Mejor, en todos los aspectos.

Hoy voy a hablar de una novedad que me ha gustado muchísimo, y que ha igualado TFS con subversion y otros CVS’s en un aspecto en el que fallaba notablemente: el trabajo desconectado.

Hasta la aparición de TFS 2012, sólo con TFS 2010 (la versión anterior) se podía trabajar en modo desconectado, pero de una forma bastante ortopédica: Al abrir la solución, nos avisaba de que no se podía conectar al servidor de código fuente, y nos ponía en modo desconexión. Esto hacía que desaparecieran los iconos de estado de los ficheros enlazados al CVS y lo que es peor, que no se pudieran retroceder cambios en el código de una forma controlada (recuperar ficheros eliminados, revertir cambios, comparar con la versión anterior, etc…). Todo ello porque la información de cambios realizados sobre un área de trabajo se almacena en el servidor TFS, de modo que necesitas estar permanentemente conectado para disponer de ella.

TFS 2012 incorpora una nueva funcionalidad que soluciona los problemas anteriores: las áreas de trabajo locales. Cuando se crea un área de trabajo, se puede elegir si es un área de trabajo local o de servidor, y seleccionando el modo local, la información de los cambios realizados sobre el código fuente se almacena en el propio equipo de desarrollo, de modo que está disponible a pesar de no estar conectados al servidor TFS, permitiendo comparar cambios en un fichero de código, revertir, recuperar ficheros, comprobar los ficheros modificados y pendientes de check-in, todo ello casi sin enterarnos, porque siguen estando visibles los iconos de enlace al CVS, según el estado en el que se encuentra, y sin molestarnos con los mensajes de desconexión al servidor, realizando dicha gestión de forma transparente.

Entonces, ¿qué hay que hacer para convertir un área de trabajo en local?

Primero acceder a la gestión de áreas de trabajo, desde la ventana Team Explorer de VS 2012:

Acceso al explorador de código fuente

Desde el explorador, desplegar el combo de áreas de trabajo, y seleccionar el elemento de la imagen (Áreas de trabajo)

Acceso áreas de trabajo 1

Seleccionar el área de trabajo a convertir y pulsar el botón editar…

Acceso áreas de trabajo 2

Pulsar el botón Avanzadas…

Acceso áreas de trabajo 3

Cambiar la ubicación de servidor a local y pulsar aceptar…

Configuración área de trabajo local

Se ejecutará un proceso de obtención de los datos que hasta ahora estaban ubicados en el servidor, para mantenerlos en el equipo de desarrollo, que puede tardar un ratito si los proyectos que se estaban manejando desde el área de trabajo son grandecillos… Y listo, a disfrutar.

Etiquetado con: , ,

WordPress: Mostrar código fuente coloreado

Ya llevo un tiempo usando WordPress, para este blog, y para otras historias… y cada vez me gusta más. Creo que puedo decir que es una de las aplicaciones web que más me han impresionado.

Aprovechando que he estado de mudanza, para ubicar el blog en este nuevo dominio propio, con hosting propio (gratuito, nixiweb.com, muy recomendable) e instalación de wordpress 3.4 en el mismo, he buceado en algunas de sus geniales características y plugins disponibles… Así que conforme vaya usando algunas de ellas, voy a ir anotando mi experiencia en distintas entradas.

En esta voy a comentar como habilitar una funcionalidad que solemos usar mucho los que nos dedicamos a la programación en sus múltiples facetas, cuando creamos entradas en las que queremos mostrar código fuente para ejemplificar algo.

Ejemplo del ejemplo (en c#):

public class Sample
{
    public string Hello(string yourName)
    {
        return (string.Format("Hola {0}", yourName));
    }
}

¿Qué hace falta para que se vea el trocito de código anterior tan bonito?

  1. Instalar el plugin SyntaxHighlighter Evolved
  2. Utilizar el shortcode “sourcecode” de la API de shortcodes de WordPress para envolver el código fuente, de forma que quede como se muestra en la imagen a continuación. Recomendación: Realizar esta operación desde la pestaña HTML del editor, para evitar saltos de línea y problemas con la tabulación, sobre todo al pegar el código.

SourcecodeShortCodeUsage

Eso es todo, nada de complicaciones. Solo queda comentar que soporta la colorización de bastantes lenguajes de programación (algo más de información aquí):

    • actionscript3
    • bash
    • clojure
    • coldfusion
    • cpp
    • csharp
    • css
    • delphi
    • erlang
    • fsharp
    • diff
    • groovy
    • html
    • javascript
    • java
    • javafx
    • matlab (keywords only)
    • objc
    • perl
    • php
    • text
    • powershell
    • python
    • r
    • ruby
    • scala
    • sql
    • vb
    • xml
Etiquetado con: ,
Top