<?xml version="1.0" encoding="utf-8"?>
<feed xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom">
  <title>byteabyte.net</title>
  <link rel="alternate" type="text/html" href="http://www.byteabyte.net/" />
  <link rel="self" href="http://www.byteabyte.net/SyndicationService.asmx/GetAtom" />
  <icon>favicon.ico</icon>
  <updated>2009-10-07T04:58:20.6768698-07:00</updated>
  <author>
    <name>Alejandro Mezcua</name>
  </author>
  <subtitle />
  <id>http://www.byteabyte.net/</id>
  <generator uri="http://www.dasblog.net" version="2.0.7180.0">DasBlog</generator>
  <entry>
    <title>La ciencia española no necesita tijeras.</title>
    <link rel="alternate" type="text/html" href="http://www.byteabyte.net/2009/10/07/LaCienciaEspa%c3%b1olaNoNecesitaTijeras.aspx" />
    <id>http://www.byteabyte.net/PermaLink,guid,0EC11172-655E-4e9b-86E4-120417A1E616.aspx</id>
    <published>2009-10-07T04:58:20.6768698-07:00</published>
    <updated>2009-10-07T04:58:20.6768698-07:00</updated>
    <category term="Ciencia" label="Ciencia" scheme="http://www.byteabyte.net/CategoryView,category,Ciencia.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
"Los científicos no estudian la naturaleza porque sea útil; la estudian porque les
place, y les place porque es bella. Si la naturaleza no fuese bella, no valdría la
pena conocerla, no valdría la pena vivir la vida" (Henri Poincaré)
</p>
        <p>
“La verdadera ciencia enseña, sobre todo, a dudar y a ser ignorante.” (Miguel de Unamuno)
</p>
        <p>
“Mientras los hombres sean libres para preguntar lo que deben; libres para decir lo
que piensan; libres para pensar lo que quieran; la libertad nunca se perderá y la
ciencia nunca retrocederá.” (Julius Robert Oppenheimer)
</p>
        <p>
“En la vejez la ciencia es para nosotros un cómodo refugio; y si no la plantamos de
jóvenes, no nos dará sombra cuando seremos viejos” (Conde de Chesterfield)
</p>
        <p>
“La ciencia que la humanidad tiene en un momento dado depende de lo que es la humanidad
en ese momento.” (Georg Simmel)
</p>
        <p>
          <img src="http://farm3.static.flickr.com/2488/3973473121_e76fde787c_o.jpg" width="400" />
        </p>
        <p>
“Y sobre este tema no tengo más que decir." (Forest Gump)
</p>
        <p>
          <b>
            <i>Nota:</i>
          </b>
          <br />
          <i>Esta entrada se suma a la iniciativa <a href="http://aldea-irreductible.blogspot.com/2009/10/la-ciencia-en-espana-no-necesita.html"><b>LA
CIENCIA ESPAÑOLA NO NECESITA TIJERAS</b></a>, promovida desde <a href="http://aldea-irreductible.blogspot.com/">La
Aldea Irreductible</a>.</i>
        </p>
        <img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=0EC11172-655E-4e9b-86E4-120417A1E616" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Alucino con los niños; o cómo el paradigma del iPhone lo cambia todo...</title>
    <link rel="alternate" type="text/html" href="http://www.byteabyte.net/2009/10/07/AlucinoConLosNi%c3%b1osOC%c3%b3moElParadigmaDelIPhoneLoCambiaTodo.aspx" />
    <id>http://www.byteabyte.net/PermaLink,guid,4F734F81-A880-4de8-80DF-784A3500E779.aspx</id>
    <published>2009-10-07T04:58:20.6768698-07:00</published>
    <updated>2009-10-07T04:58:20.6768698-07:00</updated>
    <category term="Evolution" label="Evolution" scheme="http://www.byteabyte.net/CategoryView,category,Evolution.aspx" />
    <content type="html">&lt;p&gt;
Actualmente tengo dos niñas (la luz de mi vida, las perlas de mis ojos, etc, etc,
bla, bla, bla, ... eso no viene al caso...) una de 5 años y otra que acaba de cumplir
dos... Ayer y antesdeayer he estado en el hospital con la más pequeña para hacerle
unas pruebas de alergia; yo acojonado, y ella encantada, pero ese no es el tema de
este post...
&lt;/p&gt;
&lt;p&gt;
El caso es que las pruebas de alergia que le han hecho constan de 2 mañanas competas,
de 9.00 am a 14.00 pm, esperando a ver si lo que le dan para tomar reacciona o no.
Mientras tanto, pues hay que esperar.
&lt;/p&gt;
&lt;p&gt;
Así, mientras esperaba ayer, mi pequeña y las demás que había por allí se divertían,
a la vez que los padres que estábamos con ellos/as hacíamos lo que podíamos por llevarnos
bien; &lt;a href="http://www.byteabyte.net/2009/10/07/LaCienciaEspa%C3%B1olaNoNecesitaTijeras.aspx"&gt;que
para eso en nuestra generación nos enseñaron algo de educación&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
El caso es que para pasar el rato yo le dejaba el iPhone para jugar (que lo maneja
mejor que mis hermanos, que son unos bandarras, todo hay que decirlo) y ha abierto
entre otras cosas la aplicación de Seadragon, que, si no la conocéis, y tenéis un
iPhone o iPod Touch, pues no sé a qué esperáis a descargarla... (por cierto, los cutres
de Windows Mobile criticaron a la gente que publicó la aplicación por favorecer al
iPhone; a ver si ellos sacan de una p…ta vez algo que mi niña de 2 años pueda usar
sin que yo la tenga que enseñar... pero ese es otro tema...) 
&lt;/p&gt;
&lt;p&gt;
El caso es que abrió la aplicación y estuvo viendo las fotos, zoom para arriba, zoom
para abajo, con el gesto de &lt;a href="http://video.google.es/videosearch?q=iphone+pinch&amp;rls=com.microsoft:es&amp;oe=UTF-8&amp;um=1&amp;ie=UTF-8&amp;ei=7n3PSsufDd2MjAfn6YSkBQ&amp;sa=X&amp;oi=video_result_group&amp;ct=title&amp;resnum=1&amp;ved=0CBMQqwQwAA#"&gt;abrir
y cerrar los dedos típico&lt;/a&gt;, como se espera en esa aplicación y en otras del iPhone.
&lt;/p&gt;
&lt;p&gt;
Yo, tan listo como soy, le dejé el iPhone para que &lt;strike&gt;me dejara en paz &lt;/strike&gt;se
divirtiera y me cogí el último número de Sky&amp; Telescope, que me había llegado la noche
anterior.
&lt;/p&gt;
&lt;p&gt;
Mientras ella jugaba, pues yo me leía la revista... Y ahí llega lo que me deja alucinado...
Yo le he enseñado a la pequeña que con el gesto de &lt;a href="http://video.google.es/videosearch?q=iphone+pinch&amp;rls=com.microsoft:es&amp;oe=UTF-8&amp;um=1&amp;ie=UTF-8&amp;ei=7n3PSsufDd2MjAfn6YSkBQ&amp;sa=X&amp;oi=video_result_group&amp;ct=title&amp;resnum=1&amp;ved=0CBMQqwQwAA#"&gt;"pinch"&lt;/a&gt; puede
hacer zoom alejando y acercando la imagen... y luego, cuando se aburrió del teléfono
pues me quitó la revista que estaba leyendo, como no podía ser de otra manera y …
&lt;/p&gt;
&lt;p&gt;
¿qué es lo que se le ocurre hacer sobre las fotos de las galaxías que se ven en la
revista?
&lt;/p&gt;
&lt;p&gt;
Exactamente!!!!, quería, con el gesto de pinch de los dedos, hacer un "zoom" sobre
la foto en el papel....
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Pues eso, ahí os lo dejo la duda a todos los que estáis estudiando temas de UX, que
yo me voy a tomar unas cañas… (yo seguiré con mis cajas de texto hasta extinguirme,
que es cosa de evolución...)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=4F734F81-A880-4de8-80DF-784A3500E779" /&gt;</content>
  </entry>
  <entry>
    <title>Microsoft Pre-Incubation Program y Barcelona Activa. Un modelo a seguir.</title>
    <link rel="alternate" type="text/html" href="http://www.byteabyte.net/2008/12/22/MicrosoftPreIncubationProgramYBarcelonaActivaUnModeloASeguir.aspx" />
    <id>http://www.byteabyte.net/PermaLink,guid,f4a42f6c-4930-4052-981b-a142fca842e0.aspx</id>
    <published>2008-12-22T03:58:20.6768698-08:00</published>
    <updated>2008-12-22T03:58:20.6768698-08:00</updated>
    <category term="Emprendedores" label="Emprendedores" scheme="http://www.byteabyte.net/CategoryView,category,Emprendedores.aspx" />
    <category term="Microsoft" label="Microsoft" scheme="http://www.byteabyte.net/CategoryView,category,Microsoft.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
La semana pasada y parte de la anterior he estado realizando una serie de entrevistas
con emprendedores (11 en total) para conocer y ayudar en la arquitectura de sus aplicaciones.
Esta tarea forma parte de los servicios que se ofrecen dentro del programa "Microsoft
Pre-Incubation Program", un programa impulsado en este caso por Microsoft, Barcelona
Activa y Osborne Clark.
</p>
        <p>
          <a href="http://www.barcelonactiva.cat/barcelonactiva/es/que-es-barcelona-activa/quienes-somos/index.jsp" target="_blank">Barcelona
Activa</a> es una iniciativa del ayuntamiento de Barcelona para impulsar la creación
de empresas de todo tipo. Disponen de espacios de encuentro de libre uso, formación
y asesoramiento gratuito en todos los ámbitos de creación de empresa y espacio
de oficinas a costes MUY competitivos durante los primeros años de funcionamiento
de la empresa. Las oficinas se encuentran dentro de la ciudad con muy buen acceso
de transporte público.
</p>
        <p>
          <a href="http://www.microsoft.com/spain/prensa/content/noticias/2008/noviembre/n27.aspx" target="_blank">Microsoft
Pre-Incubation Program</a> es un programa que ofrece diferentes servicios de tutorías,
formación y consultoría tecnológica (donde yo entro), así como
la integración en el programa <a href="http://www.microsoftstartupzone.com/BizSpark/Pages/At_a_Glance.aspx" target="_blank">BizSpark</a> para
aquellos emprendedores cuyo foco de empresa sea más tecnológico.
</p>
        <p>
Dentro de estos programas, una vez que un emprendedor dispone de un plan de negocio
viable, se le ofrece la posibilidad de ponerse en contacto con inversores para que
intenten conseguir la financiación necesaria para arrancar su proyecto.
</p>
        <p>
En mi opinión, esta combinación de iniciativas promueve muy claramente la
creación de empresas y de empleo potencialmente de calidad. Por un lado, el propio
centro de Barcelona Activa da trabajo a un buen número de personas, personal
administrativo y técnicos en diversos campos. Luego, personal externo ofrece
formación y consultoría de manera temporal muy concreta. Finalmente, aquellas
empresas que consiguen arrancar, emplean inicialmente a sus fundadores y, si funcionan,
ofrecerán trabajo a un número indeterminado de personas. Además, aunque
las empresas no funcionen o no consigan arrancar, la formación que los emprendedores
adquieren es muy válida para comenzar otros proyectos empresariales teniendo
gran parte del camino ya andado.
</p>
        <p>
Ahora que estamos inundados todo el día con noticias sobre la crisis, creo que
se debería gastar dinero público en la creación de centros de este
estilo, uno por provincia no estaría mal, para potenciar las economías locales
con empleos y formación de calidad, poniendo la vista en proyectos de larga duración
con un gran potencial de crecimiento.
</p>
        <img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=f4a42f6c-4930-4052-981b-a142fca842e0" />
      </div>
    </content>
  </entry>
  <entry>
    <title>IEMobile 6</title>
    <link rel="alternate" type="text/html" href="http://www.byteabyte.net/2008/11/12/IEMobile6.aspx" />
    <id>http://www.byteabyte.net/PermaLink,guid,8ec0753a-2ed6-433f-b2dc-198728bc68a2.aspx</id>
    <published>2008-11-12T01:05:50.0873843-08:00</published>
    <updated>2008-11-12T01:05:50.0873843-08:00</updated>
    <category term=".NET Compact Framework" label=".NET Compact Framework" scheme="http://www.byteabyte.net/CategoryView,category,.NET%2BCompact%2BFramework.aspx" />
    <category term="Windows Mobile" label="Windows Mobile" scheme="http://www.byteabyte.net/CategoryView,category,Windows%2BMobile.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://blogs.msdn.com/windowsmobile/archive/2008/11/11/internet-explorer-mobile-6.aspx" target="_blank">Ya
es oficial</a>. Desde hace un tiempo se vienen oyendo rumores de que se estaba desarrollando
un nuevo navegador para Windows Mobile; ayer se anunció en el TechEd en Barcelona.
</p>
        <p>
El nuevo navegador se llama "Internet Eexplorer Mobile 6" y estará
disponible en los nuevos dispositivos que vayan saliendo a la venta (según los
fabricantes vayan actualizando la plataforma). Desgraciadamente no se puede descargar
e instalar sin más, como nos gustaría que pasase a muchos.
</p>
        <p>
Como novedades a destacar, han sustituido completamente el núcleo de la aplicación
y es capaz de "pintar" las páginas de forma completa, con capacidad
de zoom y de desplazamiento con el dedo. Se ha incluido JScript 5.7 (heredado de IE
8) y dispone de Adobe Flash Lite 3.1 (toma ya iPhone!! ;-)) para poder ver clips de
Flash incrustados en las páginas.
</p>
        <p>
Aunque que yo sepa todavía no hay terminales con esta versión cargados, <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=1A7A6B52-F89E-4354-84CE-5D19C204498A&amp;displaylang=en" target="_blank">ya
están disponibles los emuladores</a> para probarlo.
</p>
        <p>
Yo por mi parte quiero probar cómo funciona, o si es del todo posible que funcione,
alojado en una aplicación .NET Compact Framework...
</p>
        <img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=8ec0753a-2ed6-433f-b2dc-198728bc68a2" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Mobile MVC en CodePlex</title>
    <link rel="alternate" type="text/html" href="http://www.byteabyte.net/2008/11/11/MobileMVCEnCodePlex.aspx" />
    <id>http://www.byteabyte.net/PermaLink,guid,e49b69a9-ced2-4840-a8af-95c45338a70a.aspx</id>
    <published>2008-11-11T01:10:58.2391234-08:00</published>
    <updated>2008-11-11T01:10:58.2391234-08:00</updated>
    <category term=".NET Compact Framework" label=".NET Compact Framework" scheme="http://www.byteabyte.net/CategoryView,category,.NET%2BCompact%2BFramework.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://blogs.msdn.com/priozersk/archive/2008/11/11/mobile-mvc-on-codeplex.aspx" target="_blank">Alex
Yakhnin</a> (antiguo MVP, ahora consultor en Microsoft) acaba de <a href="http://www.codeplex.com/MobileMVC" target="_blank">publicar
en CodePlex</a> un modelo de patrón MVC para aplicaciones .NET Compact Framework.
Lleva bastante tiempo con el tema, escribiendo sobre ello y refinando el código.
Yo la última versión publicada aún no la he probado, pero los ejemplos
anteriores si y tienen buena pinta...
</p>
        <img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=e49b69a9-ced2-4840-a8af-95c45338a70a" />
      </div>
    </content>
  </entry>
  <entry>
    <title>C&amp;oacute;mo acceder a las cabeceras de HTTP de la respuesta de un servicio WCF en .NET Compact Framework</title>
    <link rel="alternate" type="text/html" href="http://www.byteabyte.net/2008/07/17/CoacutemoAccederALasCabecerasDeHTTPDeLaRespuestaDeUnServicioWCFEnNETCompactFramework.aspx" />
    <id>http://www.byteabyte.net/PermaLink,guid,68b6bb3a-6465-43d2-aa9d-60931c4d2dd2.aspx</id>
    <published>2008-07-17T03:43:15.941134-07:00</published>
    <updated>2008-07-17T03:43:15.941134-07:00</updated>
    <category term=".NET Compact Framework" label=".NET Compact Framework" scheme="http://www.byteabyte.net/CategoryView,category,.NET%2BCompact%2BFramework.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Si has programado algún cliente WCF en .NET Compact Framework, habrás visto
que, por el momento, el único binding admitido es el básico (basicHttpBinding)
con lo que se están tratando esencialmente servicios Web.
</p>
        <p>
Para usarlos desde .NET Compact Framework lo habitual es crear una clase proxy que
facilite el acceso al servicio. Para ello se utiliza la herramienta "netcfsvcutil.exe"
que funciona de manera similar a la utilidad de "Agregar referencia web"
de Visual Studio. Se apunta la herramienta al WSDL del servicio y ésta genera
el código necesario para utilizarlo.
</p>
        <p>
En este caso, "netcfsvcutil" generará dos ficheros que hay que incluir
en los proyectos. Uno llamado CFClientBase y otro con el nombre del servicio, que
será la clase proxy a usar y que a su vez hereda de CFClientBase.
</p>
        <p>
Al usarlos en el código, habrá que crear una instancia de la clase generada
como proxy que incorpora todas las operaciones disponibles en el servicio que serán
los métodos marcados en el servicio WCF como "OperationContract" y
los datos exportados, marcados como "DataContract".
</p>
        <p>
Su uso final es muy simple ya que sólo hay que crear un objeto del tipo del proxy
y llamar a la función generada correspondiente, pero de tan sencillo que es,
se oculta mucha funcionalidad que puede ser necesaria en algún momento y no está
accesible.
</p>
        <p>
En un caso reciente quise obtener la cabecera "Date" de la respuesta HTTP
del servicio WCF, pero esta información no está presente en el proxy en
ningún sitio. Después de indagar bastante di con la solución. En la
clase <strong>CFClientBase</strong> generada hay un método llamado "<strong>getReply</strong>".
Este método devuelve un objeto de tipo <strong>System.ServiceModel.Channels.Message</strong>,
que contiene el mensaje devuelto por el servicio WCF. Este mensaje a su vez incluye
una colección llamada "<strong>Properties</strong>". Dentro de estas
propiedades hay una llamada "<strong>httpResponse</strong>" (accesible como
message.Properties["httpResponse"]) que es de tipo HttpResponseMessageProperty.
Una vez ahí se dispone de toda la respuesta http y, en concreto, están accesibles
las cabeceras HTTP como una colección llamada "<strong>Headers</strong>".
</p>
        <p>
En mi caso, modifiqué la clase CFClientBase para exponer el mensaje de respuesta
como una propiedad y tenerlo accesible así desde mi código de una forma
cómoda. Hay que recordar que si se vuelve a generar el proxy mediante netcfsvcutil
se perderán esos cambios y habrá que volver a incorporarlos.
</p>
        <p>
Mi código final para acceder a la fecha de la respuesta HTTP queda algo así
(una vez he expuesto la propiedad ReplyMessage en el proxy y sin control de errores):
</p>
        <div class="csharpcode">
          <pre class="alt">
            <span class="kwrd">string</span> fechaHeader = </pre>
          <pre> ((HttpResponseMessageProperty)</pre>
          <pre class="alt"> proxy.ReplyMessage.Properties[<span class="str">"httpResponse"</span>]).Headers[<span class="str">"Date"</span>];</pre>
          <pre> </pre>
          <pre class="alt">DateTime fecha = DateTime.Parse(fechaHeader);</pre>
        </div>
        <style type="text/css">

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
        <p>
 
</p>
        <p>
El problema que le veo a todo esto es que la respuesta Http venga como una propiedad
indexada de esa forma, lo que no me da mucha confianza en que esta funcionalidad se
pueda perder en futuras versiones de .NET Compact Framework, ya veremos...
</p>
        <img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=68b6bb3a-6465-43d2-aa9d-60931c4d2dd2" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Dll de mensajes de error de .NET Compact Framework 3.5</title>
    <link rel="alternate" type="text/html" href="http://www.byteabyte.net/2008/06/04/DllDeMensajesDeErrorDeNETCompactFramework35.aspx" />
    <id>http://www.byteabyte.net/PermaLink,guid,cfebde38-bd63-440e-8cb0-6915ac9b3f2c.aspx</id>
    <published>2008-06-04T10:32:38.1075306-07:00</published>
    <updated>2008-06-04T10:32:38.1075306-07:00</updated>
    <category term=".NET Compact Framework" label=".NET Compact Framework" scheme="http://www.byteabyte.net/CategoryView,category,.NET%2BCompact%2BFramework.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Recientemente, trabajando con .NET Compact Framework 3.5 en un terminal en español,
al producirse una excepción en el código  me he encontrado con el siguiente
error:
</p>
        <p>
          <em>Hay un mensaje de error disponible para esta excepción, pero no se puede
mostrar porque estos mensajes son opcionales y no están instalados en este dispositivo.
Instale ‘NETCFv35.Messages.ES.wm.cab’ para Windows Mobile 5.0 y posterior,
o  ‘NETCFv35.Messages.ES.cab’ para otras plataformas. Reinicie la
aplicación para ver el mensaje.</em>
        </p>
        <p>
El mensaje parece claro, faltan las Dll's de mensajes de error que están en los
cabs indicados, con lo que parece que si instalación debería solucionarlo; <strong>pero
la instalación de cualquiera de esos cabs no lo soluciona</strong>, siguiendo
el error y la imposibilidad de saber rápidamente la razón de ser de la excepción.
</p>
        <p>
Después de darme un par de veces (o tres) con la cabeza en el monitor <a href="http://blogs.msdn.com/martijnh/archive/2008/01/03/fixing-exception-messages-on-the-net-compact-framework-3-5.aspx" target="_blank">encontré
la solución</a> buscando en Google el nombre del archivo .cab pero en su versión
en inglés (NETCFv35.Messages.EN.wm.cab). Por mucho que se instale el cab no se
va a solucionar el problema, pero si se descomprime el cab en cualquier sitio del
PC, se toma el archivo <strong>'SYCCFA~1.001'</strong> y se renombra a <strong>'System.SR.dll'</strong> y
luego en el proyecto en el que se esté trabajando se hace una referencia a esta
dll, los mensajes de ayuda de la excepción volverán a aparecer correctamente.
</p>
        <p>
Espero que os sea útil.
</p>
        <img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=cfebde38-bd63-440e-8cb0-6915ac9b3f2c" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Sync Services for ADO.NET vs. Sync Framework vs. ... &amp;iquest;Live Mesh?</title>
    <link rel="alternate" type="text/html" href="http://www.byteabyte.net/2008/04/24/SyncServicesForADONETVsSyncFrameworkVsIquestLiveMesh.aspx" />
    <id>http://www.byteabyte.net/PermaLink,guid,0f3687c0-7b3b-4f88-a13b-6c6448e7bd5e.aspx</id>
    <published>2008-04-24T03:19:23.6456703-07:00</published>
    <updated>2008-04-24T03:19:23.6456703-07:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Sync, sync, sync...
</p>
        <p>
El panorama de los sistemas de sincronización ofrecidos por Microsoft ultimamente
crece muy rápidamente lo que nos deja a los programadores con la duda de qué
sistema escoger y si hemos hecho bien al escoger uno u otro. Desde siempre ha existido
en Windows el servicio de replicación de ficheros, usado normalmente por los
adminitradores de la red para replicar archivos relacionados con los perfiles de usuario
y demás. Aunque es un servicio de replicación genérico, no es común
verlo en otros escenarios.
</p>
        <p>
En el caso de replicación de datos de una base de datos, SQL Server ofrece desde
hace mucho tiempo sus propios mecanismos de replicación. Merge, que funciona
en modo de publicador-suscriptor permite que un servidor publique datos y que otros
se suscriban a los mismos para recibir copias de la información. Este mecanismo
está disponible también para replicar datos a SQL Server Compact Edition
(SQLCE) muy usado en dispositivos móviles. Funciona muy bien pero todo el control
está en manos del administrador del servidor de base de datos lo que crea en
algunos casos problemas con los desarrolladores. Por otro lado existe RDA (Remote
Data Access), útil para replicar datos igualmente entre SQL Server y SQLCE. Es
un sistema más ligero, que no requiere configuración especial del servidor
de base de datos ya que a éste sólo se le pasan consultas, pero ofrece menos
posibilidades que el anterior en cuanto a seguimiento de los datos y resolución
de conflictos. Estos dos sistemas además tienen la pega de que sólo funcionan
con SQL Server y no con ningún otro tipo de bases de datos.
</p>
        <p>
Recientemente han aparecido otros dos nuevos mecanismos de replicación, orientados
a los desarrolladores pricipalmente.
</p>
        <p>
Sync Services for ADO.NET permite replicar datos entre dos sistemas para los que existan
proveedores ADO.NET permitiendo por ejemplo la replicación de datos entre SQLCE
y Oracle o cualquier otro escenario similar. La idea inicial de este entorno es la
de sustituir RDA mejorándolo en muchos aspectos. Este entorno <a href="http://www.microsoft.com/Downloads/details.aspx?familyid=75FEF59F-1B5E-49BC-A21A-9EF4F34DE6FC&amp;displaylang=en" target="_blank">está
ya disponible también para dispositivos móviles</a>.
</p>
        <p>
A continuación, y siguiendo la misma filosofía, aparece <a href="http://msdn2.microsoft.com/en-us/sync/default.aspx" target="_blank">Sync
Framework</a>. Este es un entorno más general, que engloba al anterior, y cuyo
objetivo es el de <strong>permitir la sincronización de cualquier fuente de datos</strong>,
sean bases de datos u otra cosa. De hecho en su primera versión pública
se incluye a "Sync Services for ADO.NET", a "Sync Services for File
Systems" y a "Sync Services for FeedSync", permitiendo la sicronización
respectivamente de dos fuentes cualquiera de bases de datos para las que tengamos
un proveedor ADO.NET, la sincronización de ficheros entre dos puntos, o la sincronización
de "feeds" RSS o ATOM entre dos puntos. Como se puede imaginar lo que se
proporciona es un mecanismo mediante el cual, si disponemos de los <strong>proveedores
adecuados</strong>, se podrá <em>sincronizar cualquier cosa sincronizable</em>.
Microsoft proporcionará inicialmente unos proveedores pero se le deja al programador
la libertad de programarse sus propios proveedores para sincronizar cualquier tipo
de información.
</p>
        <p>
Finalmente se acaba de anunciar el lanzamiento de <a href="https://www.mesh.com/" target="_blank">Live
Mesh</a>, siendo uno de sus objetivos la sincronización de datos. Según
la información publicada, incialmente es capaz de sincronizar archivos de forma
muy similar a como lo hace <a href="http://office.microsoft.com/es-es/groove/HA101656333082.aspx" target="_blank">Groove</a>,
conectando dos o más puntos a través de Internet de forma transparente.
Pero según se comenta, toda la plataforma estará disponible para que los
desarrolladores puedan crear aplicaciones que sean capaces de sincronizar cualquier
tipo de datos de forma igualmente transparente con lo que podría usarse en principio
como sustituto de los métodos mencionados anteriormente. Si esto es así,
este mecanismo tiene una gran ventaja con respecto a los anteriores. En los anteriores
es necesaria una conexión explícila entre los puntos que sincronizan que
sea direccionable, es decir, necesito saber desde el origen la dirección IP de
destino. En el caso de Mesh, la localización de los diferentes dispositivos es
transparente y se podrían sincronizar datos <strong>entre equipos que estén
localizados tras NATs y firewalls</strong> sin problema lo que proporciona muchas
ventajas a la hora de sincronizar datos sobre todo para dispositivos móviles.
</p>
        <p>
En fin, cada vez hay más y más opciones. Esperemos a las versiones finales
a ver cómo se consolidan las diferentes ofertas de sincronización.
</p>
        <img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=0f3687c0-7b3b-4f88-a13b-6c6448e7bd5e" />
      </div>
    </content>
  </entry>
  <entry>
    <title>WCF y transporte basado en Exchange 2007. Ejemplo para PC y .NET Compact Framework 3.5 del evento TechDays</title>
    <link rel="alternate" type="text/html" href="http://www.byteabyte.net/2008/02/28/WCFYTransporteBasadoEnExchange2007EjemploParaPCYNETCompactFramework35DelEventoTechDays.aspx" />
    <id>http://www.byteabyte.net/PermaLink,guid,0540de4c-65bd-45b5-afaf-e26558272d0a.aspx</id>
    <published>2008-02-28T09:57:13.5122875-08:00</published>
    <updated>2008-02-28T09:57:13.5122875-08:00</updated>
    <category term=".NET Compact Framework" label=".NET Compact Framework" scheme="http://www.byteabyte.net/CategoryView,category,.NET%2BCompact%2BFramework.aspx" />
    <category term="Eventos" label="Eventos" scheme="http://www.byteabyte.net/CategoryView,category,Eventos.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Al igual que <a href="http://www.byteabyte.net/2008/02/28/WCFYNETCompactFramework35EjemploDeQuotLugaresVisitadosquotDelEventoTechDays.aspx" target="_blank">el
ejemplo anterior</a>, ya están disponibles tanto <a href="http://www.byteabyte.net/content/binary/wcfexchangeppt.zip" target="_blank">la
presentación (en formato de Office 2007)</a> como <a href="http://www.byteabyte.net/content/binary/wcfexchangesample.zip" target="_blank">la
aplicación de ejemplo "eLoc" (proyectos de Visual Studio 2008)</a> de
la sesión impartida en el evento de Microsoft TechDays del martes pasado (26
de Febrero).
</p>
        <p>
Este ejemplo muestra el uso del transporte <a href="http://www.byteabyte.net/2007/08/21/CaracteriacutesticasDeWCFIncluidasEnNETCompactFramework35.aspx" target="_blank">WCF
basado en Microsft Exchange 2007 tanto en un entorno de PC con .NET Framework 3.5
como en un entorno de Windows Mobile</a>, con .NET Compact Framework 3.5.
</p>
        <p>
Para aquellos que quieran probar los ejemplos, van a necesitar lo siguiente:
</p>
        <ul>
          <li>
            <font face="Segoe UI">Un servidor Exchange 2007 (si es SP1 mejor)</font>
          </li>
          <li>
            <font face="Segoe UI">Dos buzones creados, uno de ellos con acceso por ActiveSync</font>
          </li>
          <li>
            <font face="Segoe UI">Un terminal Windows Mobile (o emulador) con uno de los buzones
anteriores configurado para su sincronización mediante ActiveSync</font>
          </li>
          <li>
            <font face="Segoe UI">Un PC en el que configurar la aplicación Windows Forms
con acceso al servidor Exchange.</font>
          </li>
          <li>
            <font face="Segoe UI">Un certificado para SSL de comunicación con el servidor
Exchange</font>
          </li>
          <li>
            <font face="Segoe UI">Configurar tanto el PC como el terminal Windows Mobile para
que acepten el certificado raiz del certificado SSL. Si es un certificado comprado
a Verisign o alguna entidad similar no será necesario hacer nada. Si es un certificado
propio, el certificado raíz deberá estar configurado en el store de "Trusted
Roots" del PC y del dispositivo Windows Mobile.</font>
          </li>
          <li>
            <font face="Segoe UI">Un dispositivo GPS/GSM si se quiere probar la funcionalidad
en vivo. Si no, este dispositivo no es necesario y se puede probar WCF para Exchange
simulando el mensaje de respuesta.</font>
          </li>
        </ul>
        <p>
 
</p>
        <p>
El escenario presentado por el ejemplo es el de poder localizar a un terminal GPS
remoto (con capacidad de GSM) mediante un mensaje SMS (útil por ejemplo en el
caso de un equipo de personas que trabajen en un servicio de emergencias). La solicitud
de localización se puede enviar tanto desde la aplicación de la 'central'
como desde el terminal Windows Mobile. El terminal GPS, una vez recibido el SMS, devuelve
otro SMS al dispositivo Windows Mobile, quien, a su vez, envía un mensaje WCF
mediante Exchange a la aplicación de la 'central', que mostrará la localización
del terminal GPS en un mapa de Virtual Earth.
</p>
        <p>
Existen diversos terminales de GPS/GSM en el mercado de forma que en el código
no se ha incluido ningun mensaje específico para ninguno de ellos. Si el lector
cuenta con uno de esos terminales tendrá que establecer el texto del SMS a enviar
en la clase Localizador y configurar el código del MessageInterceptor en el formulario
principal de la aplicación Windows Mobile para capturar los mensajes SMS recibidos.
</p>
        <p>
Como no es común que se disponga de estos terminales, se puede probar la funcionalidad
en la aplicación de Windows Mobile sin necesidad de tener uno de ellos ya que
ésta dispone de un botón que pemite enviar una respuesta simulada.
</p>
        <p>
Una vez configurado esto, la solución Visual Studio 2008 cuenta con tres proyectos:
</p>
        <ul>
          <li>
Un proyecto Web que dispone de dos páginas, una con un mensaje de espera y otra
que muestra en un mapa la localización de un GPS encontrado. Esta aplicación
Web se usará integrada en el cliente de la 'central'.</li>
          <li>
Un proyecto .NET Compact Framework 3.5 que envía y recibe mensajes WCF mediante
la conexión de ActiveSync.</li>
          <li>
Un proyecto .NET Framework 3.5 que envía y recibe mensajes WCF mediante los servicios
Web de Exchange 2007.</li>
        </ul>
        <p>
 
</p>
        <p>
Para terminar de configurar el código, el lector deberá modificar los parámetros
de cuentas de correo, usuarios y contraseñas y números de teléfono
(si se va a usar el GPS real) en el código para adecuarlos a su entorno. Los
parámetros son cadenas de texto encontradas en las clases 'MainForm' de cada
uno de los proyectos.
</p>
        <p>
Gracias a todos los asistentes su participación y espero que los ejemplos les
resultasen interesantes.
</p>
        <img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=0540de4c-65bd-45b5-afaf-e26558272d0a" />
      </div>
    </content>
  </entry>
  <entry>
    <title>WCF y .NET Compact Framework 3.5, ejemplo de &amp;quot;LugaresVisitados&amp;quot; del evento TechDays</title>
    <link rel="alternate" type="text/html" href="http://www.byteabyte.net/2008/02/28/WCFYNETCompactFramework35EjemploDeQuotLugaresVisitadosquotDelEventoTechDays.aspx" />
    <id>http://www.byteabyte.net/PermaLink,guid,4ddb4956-e802-44c8-8c47-85827fa0da92.aspx</id>
    <published>2008-02-28T08:28:57.4029125-08:00</published>
    <updated>2008-02-28T08:28:57.4029125-08:00</updated>
    <category term=".NET Compact Framework" label=".NET Compact Framework" scheme="http://www.byteabyte.net/CategoryView,category,.NET%2BCompact%2BFramework.aspx" />
    <category term="Eventos" label="Eventos" scheme="http://www.byteabyte.net/CategoryView,category,Eventos.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Ya están disponibles <a href="http://www.byteabyte.net/content/binary/lugaresvisitadosppt.zip" target="_blank">la
presentación (en formato de Office 2007)</a> y la <a href="http://www.byteabyte.net/content/binary/lugaresvisitadossample.zip" target="_blank">aplicación
de ejemplo "LugaresVisitados" (proyectos de Visual Studio 2008)</a> de la
sesión práctica impartida en el evento de Microsoft TechDays del martes
pasado (26 de Febrero).
</p>
        <p>
La solución de Visual Studio de ejemplo consta de dos proyectos, una aplicación
.NET Compact Framework 3.5 y una aplicación servidor basada en ASP.NET (con .NET
Framework 3.5)
</p>
        <p>
La aplicación cliente permite tomar una foto con la cámara de fotos de un
terminal Windows Mobile, añadirle unas notas y, si hay un GPS conectado, asociarle
a la foto unas coordenadas. Una vez tomada la foto y definidas las notas la aplicación,
ésta puede ser subida al servidor Web donde quedará almacenada. Para quellos
que se instalen el ejemplo, lo primero que han de hacer es modificar el archivo de
configuración "config.txt" (en formato XML) para establecer un nombre
de un puerto de serie correcto para el GPS y una URL válida de conexión
al servicio Web.
</p>
        <p>
La aplicación servidora es una aplicación ASP .NET que permite visualizar
las fotos, taanto en una lista como individualmente y, para aquellas fotos que tengan
asociadas coordenadas GPS, visualizarlas además en un mapa de Virtual Earth.
En esta aplicación hay dos servicios Web WCF definidos. El primero permite subir
las fotos al servidor (FotoUploader.svc) y el segundo permite obtener la lista de
fotos que tienen coordenadas GPS asociadas (FotosCoordenadas.svc). Este último
servicio existe para poder ser invocado desde JavaScript, desde la página que
tiene el mapa de Virtual Earth obteniendo los datos en formato JSON.
</p>
        <p>
Es conveniente revisar la presentación para ver qué parámetros de configuración
de los servicios WCF se han establecido en el archivo Web.Config de la aplicación
Web para configurar el sistema tal como funciona.
</p>
        <p>
Por otro lado, para poder crear aplicaciones cliente en .NET Compact Framework para
este tipo de servicios WCF, hay que recordar que es necesario instalarse los <a href="http://www.byteabyte.net/2007/09/13/PowerToysParaNETCompactFramework35.aspx" target="_blank">Power
Toys para .NET Compact Framework 3.5</a>, que incluyen, entre otras cosas, la utilidad
"netcfsvcutil.exe" que es la que permite la generación del proxy que
realiza la llamada al servicio Web.
</p>
        <p>
Quiro agradecer a todos los asistentes su participación y espero que los ejemplos
les resultasen interesantes.
</p>
        <img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=4ddb4956-e802-44c8-8c47-85827fa0da92" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Art&amp;iacute;culo: Novedades para desarrolladores en Windows Mobile 6</title>
    <link rel="alternate" type="text/html" href="http://www.byteabyte.net/2008/02/14/ArtiacuteculoNovedadesParaDesarrolladoresEnWindowsMobile6.aspx" />
    <id>http://www.byteabyte.net/PermaLink,guid,7a1645f9-1246-4167-ba27-0934aa042375.aspx</id>
    <published>2008-02-14T01:52:22.7772067-08:00</published>
    <updated>2008-02-14T01:53:37.3084567-08:00</updated>
    <category term="Art&amp;#237;culos" label="Art&amp;#237;culos" scheme="http://www.byteabyte.net/CategoryView,category,Art%c3%adculos.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
He replicado un artículo que apareció originalmente en la revista PC World
de Julio-Agosto de 2007 con el título original de "Desarrollando 'On the
road' con Windows Mobile 6".
</p>
        <p>
En este artículo se comentan las novedades incluidas en la plataforma y en los
SDKs de Windows Mobile 6 y se desarrolla una pequeña aplicación paso a paso
de la que el código está disponible para su descarga.
</p>
        <p>
          <a href="http://www.byteabyte.net/verarticulo.aspx?art=novedadesWM6.xml" target="_blank">Podéis
acceder al artículo completo aquí</a>.
</p>
        <img width="0" height="0" src="http://www.byteabyte.net/aggbug.ashx?id=7a1645f9-1246-4167-ba27-0934aa042375" />
      </div>
    </content>
  </entry>
</feed>