martes, abril 22, 2014

[Evento] //LEARN/ Windows Phone 8.1

Hola a tod@s!

En dias pasados se realizo el Build en donde se lanzaron inumerables avances y mejoras tanto para la plataforma de desarrollo como para las plataformas existentes. Una de las mejoras son las qu evinene con el nuevo sistema operativo para moviles: Windows Phone 8.1.

El dia 24 de Abril tendre el gusto de acompañar a grandes personas que se han destacado en esta plataforma.

Lo importante es que todas las conferencias de ese dia seran en nuestro idioma español!

Aqui la promocion:

Aqui el Link desde el cual pueden registrarse: bit.ly/LearnWindowsSpanish

La agenda a tratar en este dia es la siguiente:

1. Introducción a Windows Phone 8.1 (@joslat)
2. Construyendo apps Windows XAML (@josueyeray)
3. Controles y transiciones de páginas (@acasquete)
4. Ciclo de vida de las aplicaciones Windows XAML (@acasquete)
5. Listas (@ralvaradot)
6. Tiles y notificaciones (@itoledo)
7. Aplicaciones en segundo plano y multitasking (@soreygarcia)
8. Adaptando la UI a diferentes pantallas (@soreygarcia)

 

Los espero no se lo pierdan!!!

martes, abril 01, 2014

[WP8] Como crear un Traductor para Windows Phone 8

Hola a tod@s!

Hoy quiero mostrales como crear un programa que utilice un servicio de traduccion, que es gratis hasta cierto numero de caracteres traducidos en el mes y lo mas importante que esta en la nube.

Para este tutorial vamos a utilizar el servicio de Bing Translator que es una aplicacion en Windows Azure marketplace.

Lo primero que debemos hacer es crear una cuenta de desarrollador en el Windows Azure MarketPlace, a contnuacion los pasois necesarios para acceder al servicio y crea nuestra cuenta de acceso al servicio.

 

Registro en el Windows Azure MarketPlace

Debemos ingresar a la siguiente url: Tienda de Windows Azure

image

Damos clic en el menu superior, en la opcion de la parte derecha que dice “Iniciar Sesion”.

Para el ingreso al marketplace se necesita una cuenta Live ID, si no cuenta con una debe crear una para poder ingresar al portal.

Al escoger la opcion aparece la pantalla para el ingreso utilizando Live ID:

image

Al ingresar los parametros correctos en esta pantalla, nos regresa a la pantalla anterior, pero ya indicando que estamos autenticados en el portal del marketplace de windows azure.

image

En la imagen se puede observar en la barra de menu, en la primera opcion de la izquierda el nombre del usuario autenticado en el sitio web.

Ahora buscamos el servicio “Microsoft Translator API” en Windows Azure Marketplace, para ello vamos a digitar en la caja de búsqueda “translator”

image

Al digitar y dar clic sobre la imagen de la lupa, para lanzar la busqueda, esto nos arroja un resultado que podemos apreciar en la siguiente imagen:

image

El la lista aparece en primer lugar la aplicacion que nos interesa, el servicio de Microsoft Translator, hacemos clic sobre esta opcion en la lista para subscribirnos al servicio.

Lo anterior nos muestra una nueva pantalla en la cual observamos lo siguiente:

image

Como podemos observar, el servicio de traduccion ofrece diferentes valores para diferentes cantidades de caracteres traducidos.

Seleccionamos la primera opcion para nuestro ejemplo.

image

Seleccionamos el check de aceptar las condiciones y se activa el botón de registrarse

image

Luego de registrarnos en el sitio, como se puede apreciar en la imagen anterior, ya podemos regresar a la pagina o pantalla principal del sitio, para ello damos clic sobre el logo rectangular en la parte superior izquierda de “Windows Azure Marketplace”. Nos desplazamos hacia la parte inferior de la pagina, en ella vamos a encontrar varias secciones, ubicamos la seccion de “Desarrollar”, es la columna

image

 

En este menú ubicamos la opcion de Registrar su Aplicación 

 image

Esto nos lleva a la pantalla de registro:

image

El Id de cliente lo rellenamos con un código que identifique nuestra aplicación, el nombre, el nombre de la aplicación o el nuestro, el secreto del cliente es la clave secreta que debemos utilizar en nuestra aplicación, no se debe cambiar, la URI de re direccionamiento debe ser una dirección https que se exige pero no es utilizada por el servicio o por nuestra aplicación, en este caso utilizamos la de Microsoft.

image

Damos clic al botón Crear para crear nuestra aplicación, si en el futuro desea crear nuevas aplicaciones puede ingresar directamente al url https://datamarket.azure.com/developer/applications/register

image

Aparece nuestra aplicación registrada, si tuviéramos varias parecería en esta lista.

 

Consumir el servicio desde Windows Phone 8

Vamos a crear un proyecto de Windows Phone, para ello abrimos Visual Studio 2013, seleccionamos “New Project”, o nuevo proyecto en la pantalla de inicio, o en el menu File (Archivo).

image

Seleccionamos el lenguaje de programacion o desarrollo, ubicamos el tipo de proyecto, en nuestro caso es un proyecto Windows Phone, y seleccionamos la plantilla inicial, la primera de lista.

image

Ahora que ya tenemos nuestra App, iniciemos a cambiar la apariencia de la pantalla, entonces cambiamos el titulo de nuestra aplicacion por “TRADUCTOR ELECTRONICO” en vez de “MY APPLICATION” y “traductor” por “page name”.

En la parte del cuerpo de la página vamos a crear nuestra interface de usuario para la traducción

 

   1:  <StackPanel x:Name="TitlePanel1" Grid.Row="0" Margin="12,17,0,28"/>
   2:   
   3:          <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
   4:              <TextBox x:Name="txtToTrans" HorizontalAlignment="Left" Height="72" 
   5:                   TextWrapping="Wrap" VerticalAlignment="Top" Width="446" 
   6:                   AcceptsReturn="True"/>
   7:              <Button Content="Tranducir" HorizontalAlignment="Left" Margin="10,131,0,0" 
   8:                  VerticalAlignment="Top" Width="436" Click="Button_Click_1"/>
   9:              <RadioButton x:Name="optFrench" Content="Frances" HorizontalAlignment="Left" 
  10:                  Margin="10,59,0,0" VerticalAlignment="Top" IsChecked="True" 
  11:                  Checked="optFrench_Checked"/>
  12:              <RadioButton x:Name="optSpanish" Content="Espanol" HorizontalAlignment="Left" 
  13:                       Margin="150,59,0,0" VerticalAlignment="Top" 
  14:                       Checked="optSpanish_Checked"/>
  15:              <RadioButton x:Name="optGerman" Content="Aleman" HorizontalAlignment="Left" 
  16:                       Margin="296,59,0,0" VerticalAlignment="Top" 
  17:                       Checked="optGerman_Checked"/>
  18:              <TextBlock HorizontalAlignment="Left" Height="31" Margin="28,208,0,0" 
  19:                     TextWrapping="Wrap" Text="Translation:" VerticalAlignment="Top" 
  20:                     Width="117"/>
  21:              <TextBlock x:Name="lblTranslatedText" HorizontalAlignment="Left" Height="208" 
  22:                     Margin="28,257,0,0" TextWrapping="Wrap" VerticalAlignment="Top" 
  23:                     Width="402"/>
  24:              <Button x:Name="btnSpeak" Content="Hablar" HorizontalAlignment="Left" 
  25:                  Margin="28,487,0,0" VerticalAlignment="Top" Width="402" 
  26:                  Click="btnSpeak_Click"/>
  27:          </Grid>



 

Con este código creamos la interface para poder crear nuestra app y se empieza ver de la siguiente forma:

image


Ahora creamos las variables de clase que vamos a necesitar siguiente:

 

   1:          string strLngTo = "fr";
   2:          private static string strTextToTranslate = "";



Y creamos los metodos de respuesta a los radiobuttons y a los botones

 

   1:  private void optFrench_Checked(object sender, RoutedEventArgs e)
   2:          {
   3:              strLngTo = "fr";
   4:          }
   5:   
   6:          private void optSpanish_Checked(object sender, RoutedEventArgs e)
   7:          {
   8:              strLngTo = "es";
   9:          }
  10:   
  11:          private void optGerman_Checked(object sender, RoutedEventArgs e)
  12:          {
  13:              strLngTo = "de";
  14:          }
  15:   
  16:          private void Button_Click_1(object sender, RoutedEventArgs e)
  17:          {
  18:              // Inicializo la variable strTextToTranslate con el contenido de la caja de texto
  19:              strTextToTranslate = txtToTrans.Text;
  20:              // PASO 1: Crear el request para el servicio OAuth
  21:              // get us our access tokens.
  22:              String strTranslatorAccessURI =
  23:                    "https://datamarket.accesscontrol.windows.net/v2/OAuth2-13";
  24:              System.Net.WebRequest req = System.Net.WebRequest.Create(strTranslatorAccessURI);
  25:              req.Method = "POST";
  26:              req.ContentType = "application/x-www-form-urlencoded";
  27:              // Important to note -- the call back here isn't that the request was processed by the server
  28:              // but just that the request is ready for you to do stuff to it (like writing the details)
  29:              // and then post it to the server.
  30:              IAsyncResult writeRequestStreamCallback =
  31:                (IAsyncResult)req.BeginGetRequestStream(new AsyncCallback(RequestStreamReady), req);
  32:   
  33:   
  34:          }
  35:   
  36:          private void RequestStreamReady(IAsyncResult ar)
  37:          {
  38:              // PASO 2: The request stream is ready. Write the request into the POST stream
  39:              string clientID = "RAlvaradoT";                                         //"<<Your Client ID>>";
  40:              string clientSecret = "p4U2PpSU8Ix32uwLWog8J9YQety0tseBujQww nNY8g1";    // "<<Your Client Secret>>";
  41:              String strRequestDetails = string.Format("grant_type=client_credentials&client_id={0}&client_secret={1}&scope=http://api.microsofttranslator.com", HttpUtility.UrlEncode(clientID), HttpUtility.UrlEncode(clientSecret));
  42:   
  43:              // note, this isn't a new request -- the original was passed to beginrequeststream, so we're pulling a reference to it back out. It's the same request
  44:   
  45:              System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)ar.AsyncState;
  46:              // now that we have the working request, write the request details into it
  47:              byte[] bytes = System.Text.Encoding.UTF8.GetBytes(strRequestDetails);
  48:              System.IO.Stream postStream = request.EndGetRequestStream(ar);
  49:              postStream.Write(bytes, 0, bytes.Length);
  50:              postStream.Close();
  51:              // now that the request is good to go, let's post it to the server
  52:              // and get the response. When done, the async callback will call the
  53:              // GetResponseCallback function
  54:              request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request);
  55:          }



Ahora debemos crear el codigo del metodo quye se llama en el callBack

   1:         private void GetResponseCallback(IAsyncResult ar)
   2:          {
   3:              // PASO 3: Process the response callback to get the token
   4:              // we'll then use that token to call the translator service
   5:              // Pull the request out of the IAsynch result
   6:              HttpWebRequest request = (HttpWebRequest)ar.AsyncState;
   7:   
   8:              // The request now has the response details in it (because we've called back having gotten the response
   9:              HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(ar);
  10:   
  11:              // Using JSON we'll pull the response details out, and load it into an AdmAccess token class (defined earlier in this module)
  12:              // IMPORTANT (and vague) -- despite the name, in Windows Phone, this is in the System.ServiceModel.Web library,
  13:              // and not the System.Runtime.Serialization one -- so you will need to have a reference to System.ServiceModel.Web
  14:              try
  15:              {
  16:                  System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new
  17:                  System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(AdmAccessToken));
  18:                  AdmAccessToken token =
  19:                    (AdmAccessToken)serializer.ReadObject(response.GetResponseStream());
  20:   
  21:                  string uri = "http://api.microsofttranslator.com/v2/Http.svc/Translate?text=" + System.Net.HttpUtility.UrlEncode(strTextToTranslate) + "&from=en&to=" + strLngTo;
  22:                  System.Net.WebRequest translationWebRequest = System.Net.HttpWebRequest.Create(uri);
  23:                  // The authorization header needs to be "Bearer" + " " + the access token
  24:                  string headerValue = "Bearer " + token.access_token;
  25:                  translationWebRequest.Headers["Authorization"] = headerValue;
  26:                  // And now we call the service. When the translation is complete, we'll get the callback
  27:                  IAsyncResult writeRequestStreamCallback = (IAsyncResult)translationWebRequest.BeginGetResponse(new AsyncCallback(translationReady), translationWebRequest);
  28:              }
  29:              catch (Exception ex)
  30:              {
  31:                  // Do nothing
  32:              }
  33:          }



Debemos crear una clase que encapsule los datos del Token retornado por Azure, esta clase la vamos a llamar AdmAccesToken

 

   1:  public class AdmAccessToken
   2:      {
   3:          public string access_token { get; set; }
   4:          public string token_type { get; set; }
   5:          public string expires_in { get; set; }
   6:          public string scope { get; set; }
   7:      }







Estos mismos nombres de las propiedades es como las vamos a utilizer en el JSon devuelto por el servicio

Cuando el API termina la traducción, llamamos el método translationReady, este método es el asociado al evento terminar del API y hace el PARSE o convierte y traduce lso resultados en la salida correcta de nuestra aplicación.

Debemos crear el siguiente código para esto:

   1:          private void translationReady(IAsyncResult ar)
   2:          {
   3:              // PASO 4: Process the translation
   4:              // Get the request details
   5:              HttpWebRequest request = (HttpWebRequest)ar.AsyncState;
   6:   
   7:              // Get the response details
   8:              HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(ar);
   9:   
  10:              // Read the contents of the response into a string
  11:              System.IO.Stream streamResponse = response.GetResponseStream();
  12:              System.IO.StreamReader streamRead = new System.IO.StreamReader(streamResponse);
  13:              string responseString = streamRead.ReadToEnd();
  14:   
  15:              // Translator returns XML, so load it into an XDocument
  16:              // Note -- you need to add a reference to the System.Linq.XML namespace
  17:              System.Xml.Linq.XDocument xTranslation =
  18:                System.Xml.Linq.XDocument.Parse(responseString);
  19:              string strTest = xTranslation.Root.FirstNode.ToString();
  20:   
  21:              // We're not on the UI thread, so use the dispatcher to update the UI
  22:              Deployment.Current.Dispatcher.BeginInvoke(() => lblTranslatedText.Text = strTest);
  23:   
  24:          }

De esta manera tendremos un traductor personal en nuestro Smart Phone.


Disfrutenlo e inicien a desarrollar su app para Windows Phone 8 que el valor de la subcripcion de la tienda esta muy muy barato.


 


Feliz desarrollo y que Dios guie sus pensamientos para el exito de sus proyectos!


Hasta la proxima!



 



viernes, marzo 21, 2014

Abordando Servicios WCF y Entity Framework, Buenas practicas

Hola,

Aqui les dejo el material de esta charla ejecuatada el 20 de Marzo del 2014 por Rafael Consuegra.

Desde este link, Aqui

Pueden descargar el pdf y el proyecto de ejemplo.

 

Disfrutenlo!

Technorati Tags:

jueves, enero 09, 2014

Creando una aplicacion movil hibrida desde Windows Phone 8 y HTML5 I

Hola a tod@s!
Hoy quiero presentarles este articulo en cual voy a explicar como podemos crear aplicaciones hibridas para Windows Phone 8, en al cua nuestra aplicacion principal es una aplicacion HTML5, utilizando todo lo que nos ofrece el estandar, mas CSS3 y javaScript para este tipo de aplicaciones.
La importancia es que muchos desarrolladores les gusa mas o prefieren desarrollar sobre HTML5 por ser un desarrollo multiplataforma ya que el cambio en el aplicativo HTML5 es minimo o casi que nulo entre las diferentes plataformas moviles mas fuertes en este momento en el mercado.
Me refiero por supuesto a Android, iOS y Windows Phone.
Una de las desventajas de las aplicaciones desarrolladas sobre HTML5 es que no pueden acceder a los recursos fisicos del dispositivo en el cual se ejecutan, pues es el comportamiento de las aplicaicones web por seguridad a la red y a los recursos del servidor web de aplicaicones.
Sin embargo nuestros clientes nos piden una aplicacion que sean o tenga una interfaz de usuario (UI) Waoo, o muy relevante, y nuestros amigos colaboradores disenadores graficos estan mucho mas familiarizados con HTML que con otras tecnologias de representaciones graficas como XAML, por ejemplo.
Entonces despues de haber desarrollado un App sobre HTML5 nos piden que ademas nuestra App capture una fotografia desde nuestro SmartPhone, esto resulta un enorme reto sobre nuestra aplicacion HTML5 pues su naturaleza restringue el acceso al hardware del dispositivo, esto es lo que nos hace crear una aplicacion hibrida, la cual utilizara recursos de hardware, usando codigo nativo y nuestra aplicacion HTML5 ya desarrollada.
Bueno, no mas palabras … y “manos a obra”.
1. Creamos un proyecto de Windows Phone 8, voy a definir los pasos necesarios para esto, a pesar que pueden ya conocerlos de memoria los que desarrollamos todos los dias.
Abrimos VS2013, seleciconamos nuestro lenguaje de desarrollo, en este caso C# (C Sharp), y buscamos las plantillas de Windows Phone y ubicamos en la ventana que se muestra un Windows Phone App
image
2. Luego de darle un nombre a nuestro proyecto y crearlo, VS2013 crea una estructura completa de nuestra App para Windows Phone 8.
En mi caso coloco com nombre de mi App Celeste.WP8Hibryd.AppMobHtml.
Como es una aplicaicon HMTL5 la que vamos a implementar, debo eliminar la cabecera de la pagina XAML que coloca por defecto VS2013 en la plantilla y luego adicionar un objeto WebBrowser, este objeto es el que nos va a permitir mostrar nuestras Apps escritas en HTML5
3. En nuestra pagina principal que crea nuestra platilla ed VS2013 para Windows Phone vamos a eliminar la cabecera de la paginas ya que necesitamos toda el area de la pantalla de nuestra aplicación en HTML5, y luego de eliminar esta porcion del codigo XAML vamos a adicionar un control Web browser.
image
Lo que vamos a eliminar es el StackPanel, es mucho mas sencillo hacerlo desde la ventana de codigo XAML.
Ahora vamos a ir al toolbox y buscamos el control webbrowser y lo arrastramos y soltamos en la pantalla de diseño de tal manea que quede en el grid que quedo como control principal de nuestra pagina XAML.
image
Arrastramos y soltamos el control sobre la superficie de diseno y verificamos las siguientes propiedades, nuestra pantalla debe verse como la siguiente imagen:
image
Si nos damos cuenta en la ventana de la derecha, la ventana ed propiedades del control WebBrowser, hemos selecionado las propiedades de IsGeolocalizationEnabled y IsScriptEnabled, esta ultima propiedad es la que nos permitira acceder a codigo nativo C# desde codigo javascript de nuestra aplicacion HTML5 para moviles.
Ademas en la parte inferior de la ventana de propiedades podemos observar que el control WebBrowser tiene el HorizontalAlignment y VerticalAlignment en Strech que nos permite que el control ocupe todo el ancho y todo el alto de muestra pantalla del dispositivo.
Ahora vamos a empezar a escribir codigo C# para nuestra aplicacion hibrida. Abrimos la ventana de codigo C# usando la tecla F7, y en el constructor de nuestra pagina escribimos el siguiente codigo:
   1:              this.webBrowser1.NavigateToString(@"<html>
   2:                      <body>
   3:                          <h1 id="
"btnAccion"">App Hibrida HTML5 Win Phone 8</h1>
   4:                          <h1 id="
"mensaje"" style=""color:red""></h1>
   5:                      </body>
   6:                      <script>
   7:                          document.getElementById('btnAccion').onclick = function()
   8:                          {
   9:                              //window.external.notify('foo');
  10:                              window.location = '/getNativeFunction';
  11:                          };
  12:                          function callback(mesg)
  13:                          {
  14:                              document.getElementById('mensaje').innerHTML = mesg;
  15:                          }
  16:                      </script>
  17:                  </html>"
);
  18:          }



Lo que tenemos aqui es una pagina HTML5 en la cual hay dos etiquetas H1 con un id especifico para cada una para poder ubicar estas etiquetas a traves de codigo javascript.

A traves de document.getElementById le asigno el evento onclick al elemento que llame btnAccion y cree una funcion en javascript para comunicarme con el codigo de la aplicacion nativa, esto es el codigo escrito en C#, para ello hay dos formas, la primera, es con windows.external.notify y el nombre del metodo a ejecutar.

En este caso estoy utilizando el segundo metodo o sea window.location y le paso una url a ejecutar, debido a que es mas acorde con la funcionalidad de apps HTML5 con otras plataformas, especificamente con iOS, sin tener que cambiar el codigo javascript para una u otra plataforma.

En la funcion callback toma el resultado de la aplicacion nativa y lo muestra en la aplicacion HML5.

El codigo HTML va a hacer 3 cosas basicamente:

1. mostrar un mensaje: App Hibrida HTML5 Win Phone 8

2. Cuando haga clic sobre esa etiqueta HTML, va a llamar el codigo nativo mediante window.location, y dentro de window.location, el manejador para eso, que va a ser codigo nativo.
3.Luego, que se ejecuta el codigo nativo, se hace una devolucion de llamada para volver a llamar a codigo JavaScript.

Ahora necesitamos otras funciones para manejar la navegacion, para ello vamos  a utilizar el evento navigating del control WebBrowser y poder controlar esto.

Entonces en el constructor creamos la siguiente linea de codigo:

   1:   this.webBrowser1.Navigating += webBrowser1_Navigating;
   



Y creamos el metodo que se ejecuta cuando se dispare el evento:

   1:          void webBrowser1_Navigating(object sender, NavigatingEventArgs e)
   2:          {
   3:              // Aqui verificamos si el AbsolutePath es igual a /getNativeFunction, que es loq ue se jecuta en 
   4:              // el javascript de la app HTML5 
   5:              if (e.Uri.AbsolutePath == "/getNativeFunction")
   6:              {
   7:                  // esto es para edcirle al WebControl que no trate de navegar a /getnativeFunction
   8:                  // porque en realidad esta url no existe
   9:                  e.Cancel = true;
  10:   
  11:                  // Aqui codigo de aplicacion nativo
  12:                  // Lo anterior lo reemplazariamos por lo que queremos que haga nuestra aplicacion nativa
  13:   
  14:                  // Ahora queremos devolver la llamada al codigo javascript
  15:                  // para ello vamos a hacer una llamada anonima utilizando una expresion lambda
  16:                  // para que se ejecute en el thread corecto e independiente del principal
  17:                  Dispatcher.BeginInvoke(() =>
  18:                      {
  19:                          MessageBox.Show("Hola desde codigo nativo");
  20:                          webBrowser1.InvokeScript("callback", "Codigo nativo llamando javascript");
  21:                      }
  22:                      );
  23:              }
  24:          }




Ahora ya podemos ejecutar el app en el emulador de Windows Phone

imgEmulatorWP81

Si damos clic sobre la etiqueta, entonces llamamos desde JavaScript una funcionalidad escrita en código nativo C#:
 imgEmulatorWP82

Y posteriormente, al dar clic al botón del mensaje, le pasamos un parámetro al método JavaScript y lo muestra en color rojo en la segunda etiqueta H1.
 imgEmulatorWP83

Este es un ejemplo muy sencillo de como crear app escritas en HTML5 sobre Windows Phone creando lo que se conoce como un App Hibrida, la cual puede utilizar recrsos de ambos mundos, subsanando la carecia de acceso a los recursos de hardware a traves de codigo nativo de la aplicacion.
En proximos post como hacer esto pero utilizando un recurso del smartphone: la camara.
Que tengan un año lleno de muchas bendiones!!!
Happy coding!





martes, enero 07, 2014

[WinPh8] Nuevos Emuladores para Windows Phone 8

Hola a tod@s! Hoy les comparto los nuevos emuladores que se han publicado para desarrollar para Windows Phone 8

Hay que descargar las actualizaciones 2 y 3 del Windows Phone 8 SDK, con las mismas requerimientos anteriores, esto no vuelve a instalar el SDK solo adiciona los nuevos emuladores.

Aquí pueden descargar los emuladores del Update 2
Aquí pueden descargar los emuladores del Update 3

Recuerden que los emuladores de Windows Phone 8 son realmente maquinas virtuales de Hyper-V y sus PC deben contar con la capacidad de activar Virtualización por hardware. Disfrútenlos!

viernes, noviembre 08, 2013

Creacion de App para windows Phone (Nivel 100)

Hola a todo@s, El día ed hoy quiero compartirles un hangup realizado dentro del marco de Noches de Innovacion 3, esto lo pueden revisar en http://www.nochesdeinovacion.azurewebsites.net/. El link correspondiente a esta conferencia es: http://www.youtube.com/watch?v=tv-GT3Hfzw8 Espero lo disfruten! Feliz coding!

viernes, septiembre 27, 2013

Crear un Charm Flyouts para Windows 8

 

Una de las tareas que a veces nos quitan mucho tiempo al desarrollar para Windows 8 es la creación de las ventanas o páginas de Configuración conocidas como los Charms en Windows 8.

Hoy les voy a hablar de como crearlas de una manera sencilla a través de una librería fácil de instalar y fácil de utilizar utilizando Nuget.