Sql Server 2005 Everywhere Edition ( SSEv ) Access Database Synchronizer

De CTP a CTP y tiro por que me toca… sin duda algun friki ya estará pensando en crear un juego de la 'Oca' para las CTP's de Microsoft, pero eso es lo que nos toca en estos tiempos y la verdad para no mentir, nos gusta jueguetear :-)

En esta ocasión se presenta la CTP de Access Database Synchronizer la cual nos permitirá sincronizar bases de datos Access de escritorio con bases de datos de SSEv mediante Active Sync. Entre las características de este nuevo producto podemos destacar las siguientes:

 

  • La sincronización de los datos se realiza mediante una conexión ActiveSync ( cable, bluetooth..)
  • No requiere actualizar SSEv es simplemente un componente de escritorio que se comunica con el 'Agente móvil' del dispositivo
  • Basado en RDA ( Remote Data Access )
  • No implemente ni detección ni resolución de conflictos

Una de las cosas más interesantes es que terceros pueden usar los componentes instalados en el escritorio para realizar las sincronizaciones entre las bases de datos de Access y SSEv. Por ahora se soportan las siguientes versiones de S.O y Office

  • Windows XP SP2 Proffesional,Home,Media Center y Tablet
  • Windows Vista y Media Center 2005 Edition
  • Microsoft Office Access 2000 SP3
  • Microsoft Office Access 2002 SP3
  • Microsoft Office Access 2003 SP2

Logicamente para la version release se soportar'a Office 12

 

Podeis descargaros la CTP de SSEv Access Database Synchronizer desde aqui

 

 

Saludos Unai

Instalación de SQL Server 2005 Mobile Edition Server Tools

Pongo este post porque ya son bastantes las preguntas que me llegan sobre este tema, y que hacen referencia a la instalación de las herramientas de servidor para la edición movil de Sql Server 2005. Para manejar las bases de datos de Sql Mobile, crear bases de datos, subscripciones de replicación etc etc .. desde Sql Server Managment Studio es necesario instalar las 'Sql Server 2005 Mobile Edition Tools'  que generalmente se encuentran en el Path

<drive>:Program FilesMicrosoft SQL Server90ToolsBinnVSShellCommon7IDESqlce30setupen.msi

 Espero que os ayude…

 

[EDITADO]

Para Sql Ce Everywhere será exáctamente lo mismo… según se puede leer en su blog..

Saludos

Unai Zorrilla Castro

Evento Hibernate en Windows Mobile 5.0

Hace poco leí un post en el blog de Windows Mobile acerca del manejo de situaciones de pocos recursos de memoria por parte de los dispositivos PocketPC y SmartPhone. El post me hizo recordar varias preguntas sobre estos temas que me han formulado durante algunas charlas y cursos sobre desarrollo en Compact Framework, en concreto se trataba del manejo del evento Hibernate.

La shell de Windows Mobile 5.0 chequea cada cierto tiempo ( los valores apróximados son de 5 segundos para PocketPC y de 30 para SmartPhone ) el estado de la memoria del dispositivo. En el momento en que el estado del dispositivo detecta que existe un nivel bajo de recursos de memoria, establecido por los OEM ,lanza el evento Hibernate a las aplicaciones válidas ( ver nota ) en ejecución.

Realmente el evento de Hibernate  no es más que lanzar el mensaje WM_HIBERNATE, cuando una aplicación recibe este evento debería liberar los recursos todos los recursos que pueda con el fin de aumentar la memoria disponible para el dispositivo. Si en el siguiente chequeo de la Shell aún se detecta que la cantidad de memoria disponible aún está por debajo de los umbrales fijados, se lanza el mensaje WM_CLOSE a las aplicaciones usadas ‘menos frequentemente’.

Nota:

Se consideran aplicaciones válidas para lanzar el evento de Hibernate a aquellas que no están en ‘foreground’ y a las que no tengan el estilo WS_EX_TOOLWINDOW o WS_EX_NOACTIVATE.

 

 

 

A continuación se muestra como manejar el evento de Hibernate en Compact Framework 2.0, para ello lo primero que debemos hacer es agregar la referencia al ensamblado Microsoft.WindowsCE.Forms.

   18         public void ManageHibernate()

   19         {

   20             Microsoft.WindowsCE.Forms.MobileDevice.Hibernate += new EventHandler(MobileDevice_Hibernate);

   21         }

   22 

   23         void MobileDevice_Hibernate(object sender, EventArgs e)

   24         {

   25             //

   26             //TODO: Liberar la mayor cantidad de recursos posibles en este punto

   27             //

   28         }

 

 

 

 

 

 

Saludos

Unai Zorrilla Castro

Automatizando SandCastle

Si alguno de vosotros ha leído mi post anterior seguramente habreis ido de cabeza a probar SandCastle y muchos habreis pensado que era un rollo la generacion de los reflection.org y los manifest.xml ¿ Cómo no lo han autimatizado un poco? pues si, la verdad es que es un rollo andar jugando con todos los ejecutables y demás pero por suerte siempre hay quien nos ahorra trabajo, como ixnay2infinity.


Ixnay2infinity nos proporciona un herramienta simple para generar los bats de una forma sencilla…



 


<EDITADO>


Si teneis la instalación del sistema operativo en castellano debereis modifcar el archivo template.xml que acompaña a sandCastleCreatebat.exe y modificar un par de rutas


<SandCastleInstallPath>C:Archivos de programaSandcastle</SandCastleInstallPath>
 <HtmlHelpInstallPath>C:Archivos de programaHTML Help Workshop</HtmlHelpInstallPath>


El original las trae como Program Files


</EDITADO>


 


Espero que lo disfruteis


Saludos


Unai Zorrilla

Documentación de código al estilo MSDN

Seguramente muchos de vosotros, entre los que yo me incluía, notábamos la falta de NDOC para .NET 2.0 con soporte para genéricos etc etc. NDOC, hasta dónde yo se estaba relativamente parado debido a diversos problemas del administrador del proyecto, y muchos nos partíamos los cuernos intentando ver como generar una documentación decente ¡cuantas hojas de estilo han sido probadas :-)!!!!!.


Pues bien, se acaba de liberar una CTP de SandCastle, un proyecto de generación de documentación que además es con la que se genera la documentación interna de .NET, entre sus características encontramos:



  • Trabaja con documentación de autor o libre de ella
  • Soporta Generics y .NET 2.0
  • Posee dos componentes básicos ( MrefBuilder y Build Assember )
  • MrefBuilder genera el xml mediante reflexión
  • BuildAssembler es el generador de la documentación y las transformaciones de estilo.

Seguro que muchos estais pensando ya en descargarlo…. pues desde aquí podeis hacerlo


Si quereis saber más sobre ‘SandCastle’ su blog es una buena forma


P.D: Espero vuestros comentarios una vez probado


Saludo


Unai


 

Contadores de rendimiento y logging en Compact Framework

Hace ya algún tiempo mencioné en este mismo blog que con la llegada del Path SP1 para CF 2.0 íbamos a tener a nuestra disposición una herramienta para seguir los contadores de rendimiento de nuestras aplicaciones, de hecho mencioné con cierto cabreo que me había pasado unos cuantos ratos de mi tiempo libre haciéndome una puesto que la lectura de los contadores a partir del fichero .stat era bastante tediosa, aún cuando es un archivo csv separado por tabulaciones,para obtener información sobre la activación y los pormenores de los contadores les recomiendo estos enlaces:


Activación de contadores de rendimiento


Seguimiento de los contadores de rendimiento


 


Uso de NETCFRPM ( NET Compac Framework Remote Performance Monitor )


Una vez instalado el SP1 de Compact Framework tenemos a nuestra disposición un par de herramientas NETCFRPM.exe y logviewer.exe en el directorio de instalación de Visual Studio, en concreto en


C:Archivos de programaMicrosoft Visual Studio 8SmartDevicesSDKCompactFramework2.0v2.0bin


NETCFRPM es la utilidad para llevar el seguimiento de los contadores de rendimiento, si bien para usarla previamente es necesario llevarse un para de archivos a nuestro dispositivo, tal y como explicamos a continuación:


Si estamos trabajando para Windows Mobile y procesador ARM ( lo más usual ) necesitaremos llevar al directorio Windows de nuestro dispositivo los archivos netcfrtl.dll y netcflaunch.exe, además de realizar el siguiente provisionamiento XML, que podremos hacer con el util rapinconfig.exe


 <wap-provisioningdoc>
   – <characteristic type=”Metabase”>
      – <characteristic type=”RAPIWindowsnetcfrtl.dll*”>
         <parm name=”rw-access” value=”3″ />
         <parm name=”access-role” value=”152″ />
         <!– 152 maps to “CARRIER_TPS | USER_AUTH | MANAGER”–>
      </characteristic>
   </characteristic>
</wap-provisioningdoc>


Una vez hecho esto ya tendremos a nuestra disposición para usar NETCFRPM.exe, la cual además nos va a permitir activar los logs del CLR en el dispositivo, puede obtener más información sobre como activar los logs de CF aqui, básicamente es el mismo proceso que con los contadores de rendimiento, ie, crear una cuantas claves de registro en los dispositivos.


 


 


USO de logviewer.exe


Logviewer es mucho más sencillo de usar, una vez activados los logging de CLR en el mismo directorio de instalación disponemos de unos archivos de texto para cada tipo de logging activado que podremos ver mediante esta herramienta.


 


Hace ya tiempo que no soy crítico con alguna de las herramientas de Microsoft, pero en esta ocasión me temo que no me queda más remedio, y trataré de explicar porqué:



  • La instalación de NETCFRPM en los dispositivos es bastante tediosa, más si cabe en Windows Mobile 5.0 teniendo que realizar un provisionamiento XML.
  • No han firmado netcfrtl.dll, con lo cual salen los PROMPT de seguridad en los dispositivos, ya les vale!!!
  • La interfaz gráfica de NETCFRPM no está nada cuidada, es muy tosca y poco amigable.
  • Saltan excepciones no manejadas con cierta facilidad, por ejemplo si intentas ver el log de un archivo vacío.

 



Espero que os resulte de utilidad.


Unai

Alpha Blending en Compact Framework

Seguramente muchos de los que trabajais en Compact Framework habreis notado los problemas de no poder  usar Alpha Blending de forma manejada. De hecho son muchas las cuestiones que se preguntan acerca de este tema, mucha gente desea crearse controles estilo botón imagen y que este preserve las transparencias de un png. El caso es que siempre que pintemos un png, por ejemplo, en un Bitmap se pierden las transparencias y el efecto que queda es bastante feo, por ello se recurre a pintar sobre el color base del contenedor del control,si bien esto nos resulve el problema en ciertos casos no siempre nos será de utilidad. Imaginaros que deseais tener un botón imagen encima de un formulario o panel que tiene una imagen de fondo, no un color… ¿ Cuál es la solución ?


En Windows Mobile 5.0 disponemos de una llamada nativa en coredll que nos permite agregar el canal alpha a nuestras imágenes.


[DllImport(“coredll.dll”)]
extern public static Int32 AlphaBlend(IntPtr hdcDest, Int32 xDest, Int32 yDest, Int32 cxDest, Int32 cyDest, IntPtr hdcSrc, Int32 xSrc, Int32 ySrc, Int32 cxSrc, Int32 cySrc, BlendFunction blendFunction);


Para el que desee averiguar más acerca de AlphaBlend le recomiendo que se mire el post de Cris Lorton AlphaBlending with NETCF.


Ahora que sabemos como realizar Alpha Blending mediante una simple llamada P/Invoke surge una nueva incógnita. Si hacemos esto heredando de control realmente estamos haciendo canal Alpha sobre el Bitmap en Background del control pero no sobre la imagen de fondo del contenedor de esta  ¿ Como hacemos entonces ? Bastaría con pintar como imagen de fondo del control la superficie de la imagen de fondo del control contenedor y para esto no tenemos más que crear un Rectangle especificando las coordenadas y tamaño de la imagen que deseamos copiar pudiéndola obtener de las propiedades del control Location y Size.


 


 


Espero que os resulte de interés


 


Saludos


Unai Zorrilla Castro