blog counter
July 2010 - Artículos - SkunkWorks

July 2010 - Artículos

Curso de programación de SharePoint 2010 (Videos) en Castellano – MSDN

Nuevo curso de programación de SharePoint 2010 de MSDN: 6 horas de videos (21 videos). Temas tratados:

- Instalación de SharePoint 2010
- Construcción de un sitio web básico
- Visual Studio 2010
- Modelo de Objetos de Servidor
- Modelo de Objetos de Cliente
- Silverlight
- ECMAScript
- REST
- Soluciones Sandbox
- El menú de cinta
- LINQ para SharePoint
- WebParts
- Flujos de Trabajo – Modelado con Visio
- Flujos de Trabajo – Ensamblado con SharePoint Designer
- Flujos de Trabajo – Programación con Visual Studio
- Listas Externas
- Servicios Web para la Conectividad de Datos Profesionales
- Programación de Modelos para la Conectividad de Datos Profesionales
- Performance Point

Publicación: Microsoft MSDN
Autor: Gustavo Velez (http://www.gavd.net)
URL Directo: http://media.desarrollaconmsdn.com/cursosonline/curso_desarrolloconsharepoint2010/index.html
Evento MSDN Webcast a Petición: https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032456314&EventCategory=3&culture=es-ES&CountryCode=ES
Otros cursos de programación en video de Microsoft en MSDN en español: http://msdn.microsoft.com/es-es/dd443596.aspx

Gustavo - http://www.gavd.net
Escriba un Comentario que me haga reir...

Publicado por Gustavo Velez con 11 comment(s)
Archivado en:

Computación Evolucionaria y SharePoint

Después de algunos meses sin tener mucho tiempo libre, por fin he podido regresar a viejos vicios como el de leer libros. En ratos perdidos entre aeropuertos y trenes me ha dado por releer un libro que aunque es de la época de los dinosaurios medido en tiempos de versiones de software (2003), es sobre uno de esos temas básicos de IT que nunca envejecen: "Introduction to Evolutionary Computing" (Agoston Eiben y J. Smith), y, por supuesto, me ha puesto a pensar sobre cómo podría aplicarse a nuestro servidor favorito (SharePoint, cual otro podría ser?)

Computación Evolucionaria es una sub-rama de la Inteligencia Artificial que utiliza los mecanismos de la evolución natural como fuente de inspiración para solucionar problemas de software. Evolución natural indica que en todo medio en donde existe una población de individuos, el objetivo es sobrevivir y reproducirse. El organismo más sano, medido teniendo en cuenta su capacidad para resolver problemas, es el que mejor puede sobrevivir, y es, a su vez, el mejor candidato para reproducirse. Si la idea se puede aplicar a algoritmos de software, es posible crear programas que funcionen mejor en la medida de que pueden solucionar el problema para que son creados cada vez de una forma más eficiente.

Aplicar estos principios darwinianos básicos a la solución automática de problemas no es una idea nueva, por el contrario. Algoritmos Evolucionarios, Programación Evolucionaria, Estrategias de Evolución, Algoritmos Genéticos y Programación Genética son términos que existen en teoría de IT desde el final de la segunda guerra mundial. Y aunque no es muy utilizado para diseñar el software que usamos todos los días, si ha tenido influencia en software para computación paralela utilizado en super-computadores.

Si miramos el desarrollo de software en los, digamos, últimos veinte años, se puede decir que la demanda de automatización crece exponencialmente y la complejidad de los problemas a solucionar aumenta a pasos agigantados, mientras la capacidad de solucionar los problemas no aumenta de forma paralela. Y me refiero a la capacidad en dos aspectos: el número de personas interesadas en trabajar en IT y la evolución de la forma de crear software. Ninguno de los dos aspectos crece al mismo ritmo que los problemas: encontrar personas realmente capacitadas para trabajar con software es cada vez más difícil, mejores formas de crear software tampoco aparecen...

Al problema humano parece que no es mucho lo que podemos hacer: es imposible obligar a la gente a que estudie carreras técnicas, y mientras los incentivos económicos no mejoren, cada vez habrá menos geeks en este mundo. Así que tenemos que solucionar el problema desde el punto de vista técnico. Necesitamos crear algoritmos que sean aplicables a una gran variedad de problemas, que no necesiten ser adaptados a problemas específicos y produzcan buenas (aunque no necesariamente optimas) soluciones en un tiempo aceptable. Algoritmos Evolucionarios satisfacen estas características y proveen una respuesta al problema de crear métodos para solucionar más y más problemas, que pueden ser cada vez más y más complejos automáticamente en menos y menos tiempo.

Un ejemplo de lo que se puede conseguir con Algoritmos Evolucionarios es un diseño de una viga de soporte para la antena de un satélite creada de esta forma. El resultado (al lado derecho de la figura) puede parecer un poco raro, pero, aunque no lo crean, es 20.000% más efectiva que una viga diseñada tradicionalmente (al lado izquierdo). Toda la información al respecto se puede encontrar en http://www.soton.ac.uk/~ajk/welcome.html ("The design of a satellite boom with enhanced vibration performance using genetic algorithm techniques", http://www.soton.ac.uk/~ajk/plym2.ps). De inmediato se puede ver que evolución tiene sus propias reglas, que a veces nos pueden parecer extrañas y que producen resultados "feos", pero que eso a la evolución la deja fría...

Pero bueno, como podríamos usar algo así en SharePoint? Aunque parezca raro, los algoritmos utilizados en el motor de búsqueda y, especialmente, en FAST usan muchas de estas ideas. FAST, por ejemplo, puede adaptar el orden ("ranking") de los resultados basado en las consultas realizadas históricamente.

Uno de los grandes problemas de SharePoint siempre ha sido que la información "se pierde", o, mejor dicho, que los usuarios la guardan en el sitio equivocado, no la marcan apropiadamente por medio de metadatos y no utilizan el motor de búsqueda eficientemente. La información está allí, en algún lado, pero los usuarios no la pueden encontrar. SharePoint Server 2010 dispone de un mecanismo para mejorar el etiquetado (el Servicio de Metadatos Administrados) que puede funcionar como "pegante" para aglutinar información dispersa a través de todo el sistema y alivia en alguna medida el problema. Para SharePoint 2007 existe software comercial que puede realizar algo similar, aunque con bastantes dificultades. Este sería un terreno ideal para un Algoritmo Evolucionario. Imagínese un sistema de SharePoint en donde no existan Listas ni Bibliotecas estáticas como las conocemos en este momento, sino que un usuario simplemente sube la información al servidor, y un algoritmo se encarga de almacenarlo en el sitio correcto basado en información existe en el Portal mismo. Y no solo eso, sino que también la "mueve" de sitio a sitio y de Biblioteca a Biblioteca dependiendo de en donde sea más efectivo mantenerla... algo así como el árbol que crece buscando el sol, pero en este caso la información crece buscando al usuario... apasionante...

Gustavo - http://www.gavd.net
Escriba un Comentario que me haga reir...

Publicado por Gustavo Velez con no comments
Archivado en: