Leyendo sobre como construir compañías del futuro hoy me encuentro esta frase: “En una compañía iluminada, que piensa en el futuro, los gerentes entienden la conexión entre aprendizaje, innovación y alta productividad y la convierten en una compañía donde los empleados son motivados a usar parte de su tiempo aprendiendo y experimentando con nuevas tecnologías. “ Joe McKendrick, FASTForward Si usted está en el área de tecnología, gestión de proyectos, gerencia, salud, o cualquier otro sector que se me venga a la cabeza ahora debería trabajar en una compañía así y si no existe en su industria debería crearla. Yo tengo la fortuna de trabajar en 3Metas. (No existía algo así en mi industria así que la creamos desde cero). Nota: Este solo es el primero de una serie de pequeños comentarios sobre mi visión de cómo deberían ser las empresas especialmente las de servicios y tecnología, muchos de ellos parten de mi propia experiencia construyendo compañías en los últimos diez años y muchos otros vienen de lo que otros han hecho en sus propias empresas. Juan Pelaez Arquitecto de Software Keywords: Juan Pelaez, Emprendimiento, Innovación, 3Metas, Gestión de empresas de Software. Publicado en: www.juanpelaez.com
Me gusta mucho el conjunto de guías de arquitectura de soluciones .Net del grupo de Patterns and Practices de Microsoft. El documento principal es La Guia de Arquitectura Version 2.0a, una de las principales razones por las que me gusta esta guía es por la definición de cómo encajan los diferentes elementos o tipos de arquitecturas juntas en un esquema que es sencillo pero muy elegante y que se resume en este gráfico:  Al segmentar las aplicaciones por tipos (más o menos obvio no?), y separar los conceptos como estilos de arquitectura, atributos de calidad, tendencias etc., se obtiene una forma más sencilla de explicar porque se hace una aplicación de una forma y no de otra, lo que en general podemos decir que es la arquitectura. Una de las secciones más interesante tiene que ver con los estilos de arquitectura (sobre el que profundizare más adelante) ya que establece las diferencias entre elementos que son un poco confusos al seleccionar que tipo de aplicación se quiere construir y nos permite explicar de una manera clara al cliente por que se tomaron estas decisiones de diseño. Si usted alguna vez se ha preguntado como una arquitectura SOA se integra con una arquitectura por componentes y con el paradigma de Orientación por Objetos este es definitivamente un documento que debería leer. Juan Peláez Arquitecto de Software Publicado en: www.juanpelaez.com Keywords: Juan Pelaez, Arquitectura de Software, 3Metas, Patterns and Practices, Microsoft, .Net. Publicidad: Necesita ayuda en la arquitectura de su aplicación .Net?, no está seguro si su desarrollo cumplirá con los requerimientos de escalabilidad, seguridad, requerimientos de negocios o expectativas de los usuarios?, Quiere validar si sus desarrolladores o contratistas siguen las mejores prácticas para el desarrollo de aplicaciones? Los servicios de consultoría en Arquitectura de Soluciones de 3Metas seguramente serán un de las mejores alternativas. Contáctenos al correo electrónico contacto@3Metas.com
Un Post rápido…vengo trabajando con el equipo de DP de Microsoft Colombia en Laboratorios de Compatibilidad para aplicaciones que funcionen con Internet Explorer 8, Windows Vista y Windows 7. En los próximos días en la página de InnovateOn relacionada con estos temas, podrán encontrar información detallada al respecto. Por ahora un recurso muy importante que quiero compartir son estos enlaces que corresponden a maquinas virtuales con XP, Windows Vista, Internet Explorer 6,7 y 8. http://www.microsoft.com/downloads/details.aspx?FamilyID=21eabb90-958f-4b64-b5f1-73d0a413c8ef&displaylang=en Juan Pelaez. Arquitecto de Software. Keywords: Juan Pelaez, 3Metas, Windows Vista, Compatibilidad de Aplicaciones, Maquinas Virtuales, Maquina Virtual Vista, Maquina Virtual XP, Maquina Virtual IE8, Microsoft Colombia, D&P Colombia. Publicado en www.juanpelaez.com
CDN (Content Distribution Network) es un sistema de distribución de archivos basado en ubicaciones geográficas muy útil cuando se construyen sistemas de alta disponibilidad. Ya hice un post del tema hace algunos días aquí. Y también hace poco escribí sobre el sistema de hosting que uso que es basado en Cloud Computing, aquí. Hace poco estos dos servicios se han integrado para ofrecer un mejor paquete y ahora es posible por muy poco dinero y solo con una tarjeta de crédito tener en cuestión de horas un sistema de hosting por demanda integrado con la red de distribución de contenido. Todo parece muy sencillo: creo una carpeta en el sistema del sitio y subo mis archivos, marco la carpeta como publica y listo, ahora esos archivos se distribuyen usando una CDN de las más usadas en el mundo. Cuando no lo quiero mas entonces solo quito la marca de folder publico y listo, ya no se actualiza el archivo en el cache de la CDN. Supongamos que creamos un sitio de distribución de videos del tipo YouTube o de música como sonidolocal.com, eso son miles de canciones o archivos de gran tamaño, un monton de dinero para gastar en ancho de banda, almacenamiento, etc, con estos sistemas lo que hago es pagar por uso, dejar que ellos corran con los costos de infraestructura y demás y puedo crecer el servicio a la medida que mi sitio crezca. Amazon ofrece un servicio parecido llamado S3 que parece funcionar muy bien, pero en el cual hay que pagar por el almacenamiento y aparte por el uso de la CDN, asi que el servicio de Mosso en ese aspecto parece mejor. Cuando empecé mi primera compañía en internet en el año 2000, el primer gasto era de 550 dólares mensuales por un servidor dedicado en DellHost, una cifra absurda para una empresa que había facturado 0 dólares el día 1, pero necesario para poder poner algo en la red. Estos nuevos sistemas de costos y de pago por uso hacen que todo cambie, no solo para las nuevas compañías, también para nuestros clientes. Juan Pelaez Arquitecto de Software. Keywords: Mosso, CDN, Juan Pelaez, Juan Carlos Pelaez, Software como Servicio, SaaS, Infraestructura como Servicio, Hosting as a Service, Hosting como Servicio, Redes de Distribucion de Contenido.
Hoy tuve un día tremendo (espectacular), en gran parte por un par de buenos amigos que me arreglaron el día, la semana y de pronto el mes. Aprovechando las técnicas de popfly para construir MashUps, quise hacer un pequeño homenaje a mis amigos rotando por aquí sus fotos del perfil de Facebook. Los que no están en Facebook, pero son amigos también los recuerdo y les agradezco todas las cosas que han hecho por mí, por Claudia y por Felipe todos estos años. Juan.
Por invitación de Luis Linares de Microsoft Colombia el pasado 30 de Noviembre de 2008 presente una sesión sobre gestión de pruebas usando VSTS 2008, durante la presentación realizamos diferentes modelos de pruebas automatizadas, especialmente pruebas unitarias con cobertura de código, pruebas de funcionalidad web y pruebas de carga. Junto con Miguel Mendoza de Synergy desarrollamos algunos escenarios un poco más profundos, como hacer pruebas de funcionalidad y carga de un portal de Sharepoint usando VS2008 for Testers. Pruebas automatizadas basadas en información de bases de datos contra aplicaciones desarrolladas en PHP y /o corriendo en otras plataformas y generación de datos de pruebas usando DataGenerator de VS2008 for DataBase Professionals. Gracias a todos los participantes por sus preguntas y comentarios, a Miguel Mendoza por su apoyo en las demostraciones y en la preparación de la sesión y a Luis por invitarnos, espero que el evento haya sido productivo para todos. Descargar Presentación: Gestión de Pruebas con VS 2008 for Tester y Team Foundation Server (TFS). Juan Pelaez Arquitecto de Software. Publicado en : www.juanpelaez.com/blog Creditos: para la construcción de la PPT he usado información e imágenes de otras presentaciones de expertos en TFS y VS2008, en especial de las siguientes personas: Juan Carlos Viñas TFS Competence Administrator Jorge Ramo López EPM Manager Raona http://www.raona.com Rodrigo Corral MVP Team System Plain Concepts http://www.plainconcepts.com Blog: http://geeks.ms/blogs/rcorral Bruno Capuano MVP http://www.avanade.es Blog: http://elbruno.com Keywords: VS2008, Visual Studio for Tester Editions, Gestión de Pruebas, Pruebas de Software, Automatización de Pruebas, SharePoint, Pruebas Unitarias, Cobertura de Código, Pruebas de Funcionalidad Web, Pruebas de Carga, Pruebas de Stress.
He empezado un nuevo proyecto para Microsoft Colombia y la Secretaria de Salud que es a la vez una prueba de concepto de una migración de una aplicación de VS2003 a VS2008 como la reconstrucción de la aplicación (refactoring) hacia un modelo orientado a Software + Servicios. Uno de los entregables del proyecto es un Web Site, así que pareció una buena oportunidad para comenzar a explorar JQuery, que lo había visto por ahí con los anuncios de soporte en VS2008 y demás pero nunca lo había tocado. Lo primero es hacerlo funcionar, eso lo explico mejor Scott Guttrie en un post, entonces yo cree un Web Application, luego una carpeta scripts, y en ella copie el archivo jquery-1.2.6.js y el archivo jquery-1.2.6-vsdoc.js, estos dos me permiten tener JQuery e IntelliSense en Visual Studio, se pueden descargar de Aquí. Luego incluí el archivo de JQuery y el archivo de la documentación en el default.aspx así: <script src="scripts/jquery-1.2.6.js" type="text/javascript"></script> <script src="scripts/jquery-1.2.6-vsdoc.js" type="text/javascript"></script> Si no se incluye el archivo de la documentacion JQuery funciona, pero no tengo intellisense. Ahora, cómo funciona esto: Recorriendo el DOM var help = $("#help"); //obtiene el elemento que se llama help, es como usar document.getElementById solo que funciona en cualquier browser. var p = $("p"); //obtiene todos los elementos de tipo <p> var username = $("input[name='username']"); //obtiene un elemento de tipo input llamado username Todas las funciones anteriores retornan un arreglo (array), de hecho, la función $(), conocida como función JQuery siempre retorna un array de 0 elementos, 1 elemento o el número de elementos que encuentre (y es en realidad una abreviación de JQuery(“p”) ). Es una práctica recomendada nombrar las variables con el signo pesos, así que el último ejemplo debería ser algo como esto: var $username = $("input[name='username']"); Al ser $username un array tiene un conjunto de métodos que se pueden usar para obtener su longitud, elementos, etc (var form = $form.get(0); var form = $form. length) Manipulando el DOM Una vez que tengo identificados los objetos puedo empezar a hacer algo con ellos, algunos consejos: No es necesario crear todas las clases que se van a usar en la hoja de estilo, solamente se necesitan para que JQuery las identifique Un elemento puede tener varias clases aplicadas asi: <table class=”VisualTable PopulationTable”>…</table>, de esta forma puedo separar las clases que modifican los diseñadores de las que yo utilizo en JQuery para manipular los objetos. Eventos Uno de los elementos importantes de JQuery son los eventos, estos responden generalmente a acciones de los usuarios, pero uno que siempre es útil es el evento ready del document. Algo como esto: $(document).ready(function{ myCodigo}); Que quiere decir que se debe ejecutar el código {MyCodigo} cuando la pagina este lista. Algo interesante es la forma como se declarara la función a ejecutar, muy similar a un método anónimo y también con una notación de JSON. Sin embargo si por alguna razón a uno no le gusta esta forma de funciones en línea puede usar esta notación: %(document).ready(onLoaded); donde onLoaded es un método definido previamente en el script. (esto también puede ser útil cuando se combinan diversos scripts y se quiere invocar desde un evento una parte de otro script). Muchos eventos reciben funciones como parámetros, incluso una función en cada parámetro, por ejemplo: $("#partList .row").hover ( function() { $(this).addClass("rowOver"); }, function() { $(this).removeClass("rowOver"); } ) Recibe dos funciones, una para cuando se entra al hover y otra para cuando se sale. Aquí puede ser interesante notar el $(this) que significa un “apuntador” al elemento que está ejecutando el evento, algo parecido al $(document). Juan Pelaez. Arquitecto de Software. Keywords: JQuery, Web Applications, Technorati Tags: JQuery, Juan Pelaez Publicado en www.juanpelaez.com/blog
El pasado 05 y 06 de Noviembre de 2008, tuve la oportunidad de dictar el entrenamiento en Silverlight para Partners de Microsoft Colombia inscritos en el programa Metro. Durante las 6 sesiones (8 horas) desarrollamos este programa: • 8:30 – 9:30 Framework y Herramientas. Novedades en C# y VS2008. • 9:35 – 10:45 WPF 101. Conceptos básicos, XAML, Blend y ejemplos. • 10:45 – 11:00 Refrigerio • 11:05 – 12:30 WPF 201. Dependecy Properties, Routed Events, IValueConverters, ApplicationsCommands • 12:30 – 1:50 Almuerzo Libre • 2:00 – 3:00 Silverlight 101. Conceptos Basicos y ejemplos. • 3:05 – 4:15 Silverlight WorkShop . Construccion de un reproductor de MP3 con Silverlight. Comunicaciones entre SL y JS. • 4:15 – 4:30 Refrigerio • 4:35 – 5:30 Encoder, Deep Zoom y Silverlight Streaming. Ejemplos. Gracias a todos los que participaron, espero que haya sido útil para el desarrollo de sus proyectos. Por favor no dejen de enviarnos sus comentarios sobre este evento a jpelaez at juanpelaez.com y a Sandra Marin en sandra.marin at microsoft.com Dejo aquí las PPTs, y los resultados de la sesión 1, sesión 3 y el taller. Recursos Presentaciones. Código de la Sesion 01. Novedades en c# y VS2008 Código de la Sesion 02. WPF 201. Código del Taller Juan Pelaez Arquitecto de Software Keywords: Silverlight, Partners Microsoft Colombia, Programa Metro, Capacitacion, Juan Pelaez, Juan Carlos Pelaez, Entrenamiento, WPF.
|