Mejorar Rendimiento del SQL
Sólo quería hacerme eco del excelente post de Rodrigo Corral sobre cómo afectan las consultas al SQL cuando no están parametrizadas.
Continue ReadingEl blog de fcnatra
Me habían pedido muchas veces que publicara cómo hicimos para que este proyecto tuviera un principio y final felices y aquí va mi retrospec...
Sólo quería hacerme eco del excelente post de Rodrigo Corral sobre cómo afectan las consultas al SQL cuando no están parametrizadas.
Continue Reading.NET ha introducido nuevas formas de entender la recursividad y la verdad es que a veces uno se sorprende cómo se renuevan los modelos de programación de toda la vida.
A pesar de sus riesgos y de la acumulación de llamadas que genera en la pila, me he visto obligado a recursivear en más de una ocasión, y si no fuera porque conozco sus pros y sus contras no me hubiera resultado sorprendente este post de Bart, en el que explica cómo hacer recursividad con expresiones lambda, haciendo que la pila genere sólo 2 entradas para cualquier cantidad de llamadas recursivas.
Esto me recuerda que un amigo mío decía “mildos” para expresar cantidades innumerables, así que para mildos llamadas recursivas, tener sólo 2 entradas en la pila de llamadas que pueden ejecutarse infinitamente sin provocar un desbordamiento, es… cómo decirlo… ¿increíble?…
Ahí os dejo el texto para que le echéis un vistazo: Jumping the trampoline in C - stack friendly recursion.
Continue Reading> Nada
> Documento de tareas a partir de requerimientos en papel, estimado y con estado de las tareas. El equipo lo va actualizando.
RESULTADO:
- El equipo sabe qué tareas hacer y mejora en tranquilidad.
> Sprints en Excel planificados por el Jefe de Proyectos (JP), a partir de tareas en papel.
MÁS RESULTADOS:
- El equipo VE el progreso del desarrollo y lo que queda por terminar
- El JP puede estimar mejor las siguientes tareas
- Se sabe qué se va a entregar al terminar cada sprint
> ScrumDesk para gestión Scrum, historias de usuario (HU) a partir de requerimientos en papel, cálculo de capacidad de sprints, casi-daily sprint.
MÁS RESULTADOS:
- Equipo involucrado, mejora el ánimo y la cohesión
- Mejora en la visibilidad de tareas pendientes, comenzadas, terminadas y validadas.
- Control de la cantidad de tareas comenzadas a la vez
- Control de la velocidad del equipo, y la carga de trabajo en cada sprint
- Mejora en la planificación y seguimiento del sprint
> Análisis de fallos, planteamiento de próximas actuaciones
- Pasar los requerimientos en papel a un documento
- Convertir requerimientos en HU
- Escoger y priorizar con el cliente y el equipo las HU del siguiente sprint
- Convertir el casi-daily sprint en un daily sprint
- Hacer la retrospectiva (equipo) y la review (con el cliente) de los sprints
- Marcar como validados los requisitos implementados
- Repetir hasta release y entregar
RESULTADOS ESPERADOS:
- Equipo aún más involucrado
- Cliente contento y con la sensación de que se está haciendo lo que espera del producto
- Mejora en las estimaciones de horas de futuros proyectos
- El producto final llevará lo que es más importante para el cliente
Nos falta mucho, pero vamos venciendo etapas.
Se admiten sugerencias…
Continue ReadingEste excelente documental emitido por TVE2, nos da una idea de a qué dedicaremos la mayor parte de nuestra vida y de para qué nuestros hijos serán educados. ¿En realidad es ése el modelo de vida que queremos?
Crecer interiormente va ligado en gran medida a lo satisfechos que estemos con nuestro trabajo, pero para crecer realmente debemos diversificar ese crecimiento en otras actividades como deporte, cultura o relacionarnos con otras personas – conversar, ocio –, cosas que cada vez hacemos menos.
Documental TVE2 http://www.rtve.es/alacarta#613794
Disfrutad de la vida, que el resto es producir y descansar para seguir produciendo hasta… ¿hasta cuándo?… quizá ni lleguemos a disfrutar de todo lo que hemos generado para las arcas.
Dediquemos un poco de tiempo a nosotros, no a producir para los demás y enseñemos a los demás a hacerlo… Y ahora, la pregunta… ¿también esto hará que aumente la productividad?… Ahí la dejo.
Continue Reading…o “¿dónde están todos los requerimientos?”…
En nuestra poca experiencia en SCRUM hemos tenido un problema de “desorden” que donde se nota es al final de los proyectos, en las entregas, no de los sprints, sino de las releases.
En las entregas nos encontramos con que algunos requerimientos no los habíamos implementado. No por no haberlos recogido o analizado, sino porque los medios donde recogíamos los requerimientos eran “diversos”… correos-e, documentos de requisitos, notas de reuniones (actas). Y no es la diversidad de “artefactos” lo que hacía que se extraviaran algunos requisitos, sino la indisciplina de, una vez recogidos, no pasarlos, centralizarlos en un medio común.
Lo peor de todo es que algunos de esos requisitos no implementados (que finalmente encontramos), el cliente los consideraba importantes, y en ningún momento los incluimos en las planificaciones.
Achaco este desorden a no tener definida una herramienta donde recoger los requisitos, donde centralizarlos. Teníamos una, pero no la utilizábamos bien… la “vista” que utilizábamos era “guay” pero no “útil”. Una lista en grid, donde se puedan ordenar, priorizar, ponerles el estado, compartir, es la mejor opción.
Pero sólo utilizar una. La opción de pasarlos en Excel para enviarlos al cliente no es válida. La opción de pasarlos en Word temporalmente y luego ya los pasaré a la herramienta de requisitos tampoco. La opción es pasarlos a la herramienta y luego exportarlos a donde necesitemos.
Mi objetivo de los últimos días es disciplinarnos, centralizarnos, compartirnos y actualizarnos… y, claro, encontrar la herramienta. Es sabido que no existe la herramienta “mágica”. Que hasta con archivos de texto podríamos realizar este trabajo. Pero en el proceso de scrumización, la disciplina es importante y la herramienta ayuda mucho a mantener la disciplina, facilitando el trabajo a aquellas personas que tienen que mantener la información asociada al proyecto. Si una herramienta no facilita el trabajo, sino que lo entorpece, tendemos a no usar la herramienta, a dispersarnos y a usar cada uno la suya. Vaya… lo mismo que pasa con las aplicaciones que hacemos.
Ahora… que tengo un punto más sobre el que trabajar, mientras lo desarrollo, me pongo con el siguiente punto: los tests. En la charla de “Gestión Ágil con TFS, SCRUM y buenas prácticas” que nos dio Rodrigo Corral en las sesiones Microsoft ALM ‘09 de Madrid, comentó una cosa que hizo temblar una vez más… dijo una de aquellas frases que son como un golpe de puño en la mesa: de nada sirve la metodología sin tests unitarios, gestión del código fuente, builds automatizadas.
Voy a atacar a los tests, pero, ¿qué va primero: el huevo o la gallina? ¿Implementar un proceso de testeo o implementar una metodología que permita definir qué validan los tests? Esperemos haber decidido la metodología de antemano no haya sido del todo incorrecto… que las dos cosas tengan que ir a la par, y que incluir los tests en el proceso no sea un trabajo de titanes: aprender, concienciar e implementar.
Os iré contando.
Continue ReadingRecupero un documento que tenía por ahí, guardado desde el (año) 2004 y que tiene validez hoy día, aunque las versiones de .NET hayan cambiado. Espero saquéis lo mejor de él, porque la verdad es que me da pereza retocar el código, pero el concepto tiene tanta validez hoy como ayer. Ahí os va.
Los contadores de rendimiento permiten a un administrador de sistema o al desarrollador de una aplicación controlar el rendimiento de un proceso, revisando la información que el proceso reporta explícitamente al sistema.
Así como hay contadores para memoria, CPU, caché, etc., cada aplicación puede configurar sus propios contadores, que permanecerán activos mientras exista una instancia del contador.
Para revisar los contadores existentes, utilice la herramienta de Windows Perfmon.exe (Monitor de Rendimiento / Performance Monitor), a la que también se puede acceder desde el icono Rendimiento, en las Herramientas Administrativas del Panel de Control.
Una vez abierto, seguimos los siguientes pasos:
Una vez agregado el contador, estaremos al tanto de lo que se reporta acerca del proceso en cuestión mediante las gráficas del monitor de rendimiento.
Estos son los pasos a seguir para que nuestra aplicación disponga de contadores de rendimiento a través de los cuales informar de la situación de determinados procesos:
Los contadores adicionados son de sólo lectura por defecto, a menos que se especifique lo contrario.
Teniendo en cuenta que el contador podrá ser monitorizado siempre que exista una instancia de él, decidiremos dónde instanciarlo.
En este ejemplo agregamos un contador de rendimiento a un Servicio Web y para tener sólo un contador para todas las sesiones del Servicio Web, lo instanciaremos al crear la aplicación (en el Global.asax) y guardaremos la instancia del contador en el objeto Application.
En el constructor del Servicio Web, incrementaremos el contador, en el método “Dispose”, lo decrementaremos. Esto nos permitirá determinar cuántas instancias del Servicio Web se utilizan de forma simultánea.
Código C# Global.asax
Ya sabemos cómo monitorizarlo, ¿no? Lo encontraremos en el monitor del sistema (perfmon). ¿Lo veis?
Otro ejemplo de uso de los contadores de rendimiento lo da Rodrigo Corral en su blog, para revisar por qué tardan los mensajes en ser enviados a través de la cola de mensajería de Windows (MSMQ).
Espero os haya servido esto que he sacado del baúl de los recuerdos.
¡Cuántos no habrán escrito esto como título del primer post de su blog!
Con este comentario aprovecho para probar las herramientas que tengo para comenzar a escribir en este blog.
Windows Live Writer, recomendado por Scott Hanselman en su blog, es el editor con el que me iniciaré en estos mundos.
Para leer los blogs tengo activado google reader como gadget en el sitio Web y un lector de RSSs en el teléfono móvil me permite no aburrirme durante los viajes.
Pregunté a algunos conocidos y me recomendaron este sitio (Blogger) para comenzar, por no ser especializado en un tema en particular y tener un entorno cómo con el que trabajar y configurar mi blog.
A ver qué tal me va por aquí… os iré contando.
Continue Reading