Welcome to MSDN Blogs Sign in | Join | Help

Estoy trabajando en un proyecto personal (hasta que deje de serlo y se convierta en una tool que quiero usar en el trabajo) sobre Excel. No hay mucho que explicar sobre el DateTimePicker, la idea es poder seleccionar fechas, sin tener que escribirlas a mano:

image

Luego de ver unos minutos sobre las opciones de Data Validation, opté por crear una proyecto con VSTO. Data Validation permitiría verificar que se esté ingresando una fecha valida, pero el mensaje de error que despliega no es la más amigable del mundo.

Les comparto aquí el código que escribí asociado al sheet. Entiendo que lo mismo puede lograrse mediante VBA, pero me siento más cómodo con C#:

 

       void Table_SelectionChange(Excel.Range Target)
       {
         AddPickerIfDateTimeCellSelected(Target);
       }
 
       private void AddPickerIfDateTimeCellSelected(Excel.Range Target)
       {
           var isSingleCell = Target.Columns.Count == 1 && Target.Columns.Count == 1;
           var isDateColumn = Target.Column == _startDateColumnIndex || Target.Column == _dueDateColumnIndex;
           if (isSingleCell && isDateColumn)
           {
               _dateTimeCellIsSelected = true;
               this.CreateDateTimePicker(Target);
           }
           else if (_dateTimeCellIsSelected)
           {
               _dateTimePicker.Delete();
               _dateTimeCellIsSelected = false;
           }
       } 
 
       private void CreateDateTimePicker(Microsoft.Office.Interop.Excel.Range Target)
       {
           if (_dateTimePicker != null)
           {
               _dateTimePicker.Delete();
           }
           _dateTimePicker = this.Controls.AddDateTimePicker(Target, "dateTimePicker");
           _dateTimePicker.Format = DateTimePickerFormat.Short; 
 
           _dateTimePicker.Value = Convert.ToDateTime(Target.get_Value(System.Reflection.Missing.Value));
           _dateTimePicker.ValueChanged += (s, e) => Target.set_Value(System.Reflection.Missing.Value, _dateTimePicker.Value);
       }
 

El código verifica que el rango de la selección corresponda a una única celda, y que pertenezca a algunas de las dos columnas definidas para fecha. Luego crea o elimina un DateTimePicker ante la selección o deselección de la celda. Tal vez no es el código más prolijo que alguien pueda escribir, pero after all estamos hablando de COM intefaces y funciona :).

Saludos!

Hoy me encontré con un player en Silverlight liberado por la gente de Photosynth. Una de las características de Photosynth es la generación de formas tridimencionales a partir de la conjunción de imagenes que podemos tomar, subir y compartir.

El player aprovecha Deep Zoom para navegar el modelo creado, pero la característica que más me llamó la atención es la simulación del espacio 3D hecha en Silverlight (digo simulación ya que Silverlight 2 no soporta modelos 3D).

Un ejemplo (grotesco pero sorprendente) es la imagen denominada “Doug”: http://photosynth.net/silverlight/photosynth.aspx?cid=ae29c242-92bd-4a20-b92b-db3ca57eeb6e

Presionando la tecla t, podemos ver los triangulos definidos y texturados con la imagen original. Estos triangulos son luego modificados mediante transformaciones afines, simulando una proyección y rotación tridimencional de la imagen (ver http://www.gamedev.net/reference/articles/article852.asp para un ejemplo de aplicación de la técnica).

image

Más detalles del player en http://photosynth.net/silverlight/about.aspx

Saludos!

Atención! Si está por escribir una linea de código en WPF o Silverlight recomiendo ver este video antes de hacerlo!

Hoy me encontré con este excelente video explicatorio del patrón MVVM. El patrón en sí es muy similar al patrón MVP, donde la vista delega la lógica de presentación en una segunda clase (el presenter), solo que en el caso del ViewModel se hace uso del TwoWayBinding existente en WPF, evitando la necesidad de tener que setear el valor de las propiedades de la vista desde el code behind.

Les comparto el link que me hizo llegar al video, donde se indica el caso de cómo aplicar el patrón para el caso de Silverlight.

Una de las características mencionadas es que podemos notar que estamos yendo por el buen camino, cuando minimizamos el uso de x:Name para referenciar a nuestros controles. Esto no solo parece una buena práctica para TDD (ya que minimizamos el código en el Code-Behind que no suele ser testeable), sino que facilita el trabajo Diseñador-Desarrollador, ya que minimiza nuestro acoplamiento contra el Xaml.

 

Comentarios?

Daniel Seara me avisa del nuevo release del que fué participe: http://www.microsoft.com/downloads/details.aspx?familyid=66D3E6F5-6902-4FDD-AF75-9975AEA5BEA7&displaylang=en

El overview pinta muy interesante:

Overview

A successful upgrade to SQL Server 2008 should be smooth and trouble-free. To achieve that smooth transition, you must devote plan sufficiently for the upgrade, and match the complexity of your database application. Otherwise, you risk costly and stressful errors and upgrade problems. Like all IT projects, planning for every contingency and then testing your plan gives you confidence that you will succeed. But if you ignore the planning process, you increase the chances of running into difficulties that can derail and delay your upgrade. This document covers the essential phases and steps involved in upgrading existing SQL Server 2000 and 2005 instances to SQL Server 2008 by using best practices. These include preparation tasks, upgrade tasks, and post-upgrade tasks.

  • Chapter 1 gives an overview of the technical issues and decisions that are involved in an upgrade to SQL Server 2008, as well as recommendations for planning and deploying an upgrade.
  • Chapter 2 addresses issues related to upgrading to SQL Server 2008 Management Tools.
  • Chapters 3 through 8 focus on upgrade issues for SQL Server relational databases.
  • Chapter 9 addresses upgrading to SQL Server 2008 Express.
  • Chapters 10 through 14 focus on upgrading to SQL Server 2008 Business Intelligence components: Analysis Services, Data Mining, Integration Services, and Reporting Services.
  • Chapter 15 addresses the implications of upgrading to SQL Server 2008 for other Microsoft applications and platforms.
  • Appendix 1 contains a table of allowed SQL Server 2008 version and edition upgrade paths.
  • Appendix 2 contains an upgrade planning checklist.

El día de ayer realicé un Webcast sobre Silverlight para Windows Mobile. Para los interesados en ver el webcast completo podrán descargarlo aquí: http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=es-AR&EventID=1032389983&CountryCode=AR

Para quienes prefieren los videos en la red, subí un extracto incluyendo las demostraciones que hice. Como comenté en el webcast, la CTP de Silverlight para Mobile no será liberada hasta el próximo año, pero al menos podrán tener una mirada al modelo de programación con el que podremos trabajar.

Saludos!

clip_image002

El día de ayer tuvimos nuestro evento local del PDC. Qué decir de las sesiones: Fantásticas. Nuevamente quiero agradecer a todos los oradores por haber participado. Coordinamos todo con muy poco tiempo y la verdad es que si el evento fué éxitoso, en gran medida se debe al empeño que le han puesto a la preparación de cada una de las sesiones.

En mi caso me tocó hablar de Live Framework y Mesh Services. Basé mi demostración en la que había hecho Ori Amiga durante el PDC, y también mostré como hacer deploy de una aplicación en la nube sobre Mesh, y cómo depurarla desde Visual Studio (I loooove “attach process”).

El material? En la nube claro!:

Para probar la solución van a necesitar contar con acceso a los servicios de Live Framework que por ahora son limitados. En el sitio de Live Framework podrán descargar el SDK y las tools, y a través de la consola de Azure (http://lx.azure.microsoft.com/) podrán acceder a Connect para solicitar acceso a los servicios.

Saludos!

performance

¿Cuántas veces verificamos la performance de nuestras aplicaciones antes de hacer una puesta en producción, y cuantas veces somos tán amables de dejar esa tarea para los usuarios?

Ary Boretc tuvo uno de esos “Ajaaaaáá!” moments, lo compartió en su blog, y me pareció muy interesante compartirlo también aquí.

Se trata del uso del (mal) uso del procesador que podemos realizar al no verificar correctamente la liberación de los recursos al trabajar con StoryBoards. Particularmente interesante el detalle que remarca, de la ausencia de la interfaz IDisposable en Silverlight.

Les comparto el link en cuestión, ya que Ary lo explica bárbaro: http://weblogs.manas.com.ar/ary/2008/11/19/constant-silverlight-cpu-usage-double-check-your-animations/

Saludos!

Pero qué buen momento que nos hicieron pasar los amigos del grupo UNTIL. No puedo dejar de agradecer a Ignacio, Federico, Maria Eugenia, Agustín, Enrique y el resto de los chicos por la organizaGrupo Untilción e invitación a participar del evento. Realmente ha sido mucho el esfuerzo que han realizado y creo que mereció muchísimo la pena.

La presentación que hizo Ignacio fue realmente muy emotiva, comentando sobre cómo es que nos acercamos a investigar sobre computación, desembocando luego en profesión. Me recordó a la epoca en que programaba sobre BASIC sobre mi vieja Timex Sinclair :)

Luego tuve el placer de presentar junto a Eric Delahaye de Hexacta sobre Silverlight. Contruimos una aplicación dedicada a listar productos y categorías pertenecientes a una empresa imaginaria, y exploramos nuestros skills de diseñadores.

Impecable la presentación de Matias y Andres sobre Dynamic Data, y muy buena introducción a Sharepoint de Ignacio y Eugenia (los programas 80x25 nunca fallan ;-) ).

Subi el código que escribimos con Eric a mi Skydrive. Un lindo sitio que he visto en los últimos días en Silverlight 2 es SmoothHD, donde se utilizan las nuevas capacidades de Video Throttling de IIS 7, adaptando el bit rate de acuerdo a nuestra conexión.

Herramientas a tener listas para empezar a trabajar:

  1. Instalar Silverlight Tools para Visual Studio 2008 SP1
    Este add-on para Visual Studio 2008 SP1 o Visual Web Developer Express con SP1 instala los updates necesarios para Visual Studio, las plantillas de proyectos Silverlight, el runtime de desarrollo, y el SDK.
  2. Instalar Microsoft Expression Blend 2 y luego el Microsoft Expression Blend 2 Service Pack 1
  3. Instalar Deep Zoom Composer
    Para trabajar con Deep Zoom y crear experiencias como la de Memorabilia.
  4. Download Silverlight Toolkit
    Contiene controles y componentes extra para nuestras aplicaciones.

Espero podamos encontrarnos pronto nuevamente. Saludos!

El próximo 18 de Noviembre a las 16hs se realizará un evento en Buenos Aires donde se presentarán las novedades que fueron anunciadas en el reciente PDC realizado en Los Angeles.

Para más detalle del evento, los invito a acceder al sitio de registración: http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032394696&Culture=es-AR.

Es muy importante registrarse con anticipación. Estaremos realizando el evento en las instalaciones de ITTC, y probablemente haya mucha gente.

Mientras tanto les comparto la agenda. Seguramente durante el Keynote se esté mostrando Windows 7 y Windows Azure:

Horario

Servicios en la nube

Cliente y Presentación

Herramientas, Lenguajes y Framework

16:00 - 16:30

Registración

16:30 - 18:00

Keynote

18:00 - 18:30

Coffee Break

18:30 - 19:15

Un recorrido por Cloud Services

Windows Presentation Foundation (WPF) Roadmap

El futuro de los lenguajes manejados: F#, C# y Visual Basic

19:15 - 20:00

Desarrollando y desplegando tu primer servicio en la nube

Desarrollando Aplicaciones Centradas en Datos utilizando el los controles DataGrid y Ribbon

Una recorrido por "Oslo"

20:00 - 20:15

Break

20:15 - 21:00

Una recorrida por Live Framework y Mesh Services

Construyendo apliaciones orientadas a negocio utilizando Silverlight 2

Un recorrido por Visual Studio 2010

21:00 - 21:45

Desarrollando aplicaciones utilizando Data Services

ASP.NET 4.0 Roadmap

Parallel Programming

Saludos!

Grupo UntilEl próximo Jueves el grupo UNTIL estará realizando su primer actividad presentándose formalmente en sociedad. La sesión integrará a oradores de diferentes compañias y del propio grupo UNTIL. Para más detalles del evento pueden acceder directamente al sitio de registración del evento.

Ahora bien, cuál es el espiritu del grupo UNTIL?

Dejenme compartir un texto escrito por Ignacio Rodríguez a sus compañeros de trabajo, quien forma parte del grupo desde sus inicios:

Cuando yo era chico, las computadoras eran como el aeromodelismo o la filatelia. Los locales donde podías aprender y compartir experiencias no estaban nunca en la peatonal a la calle, sólo dentro de las galerías. No los verías nunca al pasar, tenías que entrar.

Mis tíos me preguntaban "¿qué hacés con la Spectrum? ¿jugás?" y entonces les explicaba que me gustaba hacer programas, para lo que había que explicar qué eran y no sé cuánto se entendía.

El gran día de la compu era el sábado y tenía casi el mismo regimen de uso que los Rasti.

Las cosas cambiaron: hoy hasta mis abuelos saben qué es un programa, y la computadora ocupa el lunes a viernes. Pero algo se perdió en el camino.

Me junté con otros que piensan como yo en la ciudad de Santa Fe y armamos un proyecto espacio no comercial donde probar tecnologías nuevas y recibir a quienes ya las han probado.

Contar historias donde el protagonista resuelve protocolos crípticos, ordena caóticos racimos de hilos de ejecución, endereza paridades o encuentra una variable de configuración que cambia el rumbo de los eventos y lleva al final feliz.

Mis amigos en Microsoft en seguida se sumaron, lo que nos llevó a tomarnos la cosa bastante en serio. Conseguimos un lugar espléndido para la primera charla (el cine auditorio de ATE, acá en Santa Fe) y convocamos sponsors (que dijeron que sí).

El primero en dar el sí fue Globant (lo cual me liberó de bastantes problemas, ya que para empezar, la charla es un jueves). Y no me sorprendió porque creo que hay muchos aquí que conocen y aprecian el lado heroico/místico/hobbista de trabajar con computadoras.

http://www.grupountil.org/

Nos vemos el jueves!

El Sábado pasado asistí al Barcamp, un evento que se realizó en las oficinas de Microsoft Argentina, y donde se discutió sobre la Web 2.0 (o 2.5, según adoptaron los chicos del Barcamp).

Con Juan dimos una charla sobre los servicios Building Blocksde la plataforma Windows Live, donde tuvimos oportunidad de discutir sobre algunos servicios Live, y sobre cómo podemos lograr obtener una Web más personal.

Entre las presentaciones a las que asistí, me llamó la atención la de Firefox 3.1 (aún beta), dada por uno de los chicos de la comunidad quien aporta en la traducción del browser. Uno de los features que se comentó y me llamó la atención fue la posibilidad que tendrá Firefox 3.1 de integrar geolocalización. De esta manera, al estar navegando un sitio, podríamos acceder a información de acuerdo al lugar en el cual nos encontremos. No dejo de pensar en las posibilidades que esto abre, permitiendo integrar los diferentes servicios que hoy ya tenemos disponibles, permitiendo acceder a ellos de manera más sencilla, lo cual me recuerda a aceleradores de IE8.

Para dar un ejemplo de como funcionaría esto, les muestro un mashup hecho desde MultiMap:

image

Podemos ver distintas entradas en Wikipedia que han sido geolocalizadas.

Como ya saben prontito tenemos la Profesional Developer Conference, donde Microsoft estará haciendo importantes anuncios alrededor de su plataforma de desarrollo, incluyendo la plataforma de servicios Windows Live.

Les dejo una crónica del Barcamp para los que no fueron. Gracias al equipo de Barcamp por organizar el evento!

Miguel.

 

Comparto los recursos que presenté durante las dos últimas presentaciones en las que participe en estas semanas:

Saludos!

En realidad las novedades en Live Maps Argentina son mucho más que esas, pero no deja de asombrarme la información de transito que se muestra para la ciudad de Buenos Aires:

image

Se trata de una nueva versión de Live Maps, integrando nuevos mapas provistos por MapLink. Contamos con búsqueda basada en direcciones y comercios. Cuando vemos la información del tránsito, podemos además ver el detalle dado por cada mano de las avenidas más importantes. Vemos la entrada de tránsito durante la mañana desde Ruta Panamericana:

image

Otra novedad es la inclusión de información climática en tiempo real en mapas tridimensionales.  En la imagen de abajo puede verse una vista aérea de la ciudad de Buenos Aires cubierta de nubes:

image

Y claro, todo esto acompañado de novedades en las APIs. Pero eso queda para otro post.

Saludos!

Nueva versión de Windows Live Writer, Messimageenger y Mail.

Ya noté varias mejoras (y correcciones de defectos) en Writer (revisión ortográfica en español), y me encanta la nueva estética de Messenger, con bastantes semejanzas a la de communicator:

La descarga aquí.

Saludos!

En un post anterior contaba sobre la dificultad que presenta el testing cuando se trata del desarrollo de aplicaciones Web. El ecosistema de navegadores es grande, y la familia sigue creciendo.

Dentro de este proceso de testing, frecuentemente es necesaria la utilización de herramientas que permitan hacer una depuración de la ejecución de nuestro código fuente (Javascript), y la inspección del código HTML, y dado que esta ejecución es realizada en el entorno del navegador, es favorable que dichas herramientas estén acopladas en el mismo.

Ya hace un largo tiempo que Firefox contaba con excelentes herramientas en este sentido (Web Developer, Firebug, etc). Sin embargo dichas herramientas son instaladas como add-ons del browser, y no son provistas de forma nativa.

En el caso de Internet Explorer 8, se han incluido herramientas que ayudan en el desarrollo sin necesidad de instalar ningún plugin extra. En este post trataré de hacer un resumen de las mismas, detallando cómo podemos utilizarlas en el desarrollo de aplicaciones Web. Me gustó la explicación que se realiza en este post, aunque no estoy muy de acuerdo con el título, dado que el disponer de nuevas herramientas es en mi criterio un aporte extra, y no un reemplazo.

  • Developer Tools: Las herramientas se encuentran consolidadas en la ventana de Developers Tools. Se puede abrir una ventana de tools por cada tab del explorer y también podemos optar por embeber la ventana de tools en la propia ventana de exploración mediante el botón de Pin.

image

  • Inspección HTML: Acá hay varias opciones, se cuenta con un selector donde haciendo click en la página nos lleva a la porción de HTML que la sustenta. A su vez contamos con información contextual de estilos, incluyendo estilos heredados y redefinidos, layout (posicionamiento), etc. Todo cambio que realicemos en la tool, será automáticamente reflejado en el sitio.

image image

  •  Depuración Javascript: Como dice el jefe: “Uffff….!!”. Me animo a decir que el engine de Debugging es casi tan completo como el de Visual Studio: Se puede hacer Watch de variables, verificar el Stack de llamadas, fijar breakpoints y hasta escribir instrucciones en la consola de pruebas. Además es posible seleccionar de un combo el script sobre el cual se quiere hacer la depuración entre todos los cargados por la página.

image

  • Profiler: Similar al profiler de SQL, podemos verificar el tiempo de ejecución de cada función Javascript, la linea de código desde donde fue realizada la invocación, y si hacemos doble click, nos lleva a la linea de código que realizó la invocación.

image

  • Outlining: Similar a lo que existe en Web Developer: Tablas, celdas, divs, imagenes, etc.

image

  • Browser y Document Mode: No sólo podemos elegir el engine de rendering (IE7, IE8, IE8 Compatibility View), sino el modo de rendering de documentos (Quirck, Standard).

 

  • Regla: Esto no lo había encontrado en otras herramientas y me pareció excelente. La posibilidad de usar la lupa para marcar exactamente el pixel que buscamos resulta muy útil.

image

  • Selector de colores: Probablemente más utilizada por quienes están en diseño, pero no deja de ser una buena herramienta para tener a mano. No he encontrado un short-cut para disparar el selector, lo cual sería útil. 

image

  • Cambiar tamaño: Para quienes usamos la resolución mas alta posible y tenemos que acordarnos de los usuarios que utilizan un 800x600.

Y varias cosas más: Información de imágenes, manejo de Cache, la posibilidad de ver el Tab index, listado de Link Paths, etc.

Recuerden que ya se puede descargar la beta 2 de IE8 en español.

Saludos!

More Posts Next page »
 
Page view tracker