Sin categoría

Eventos | Materiales de mi sesión “Responsive Web Design con Superpoderes”

posterEl pasado, jueves 16 de octubre, volvimos a la acción desde TenerifeDev con dos sesiones creo que bastante interesantes para los desarrolladores y diseñadores web. En esta ocasión, las sesiones las dimos en las instalaciones de la FEULL (Fundación Empresa de la Universidad de La Laguna) que como siempre, colaboraron activamente con nosotros para poder compartir conocimientos con todos los asistentes, entre los que siempre destaca una alta presencia de estudiantes que se pueden enriquecer con la experiencia que podamos aportar sobre la vida laboral. Este es el resumen de las sesiones. Enjoy!

David Rodríguez nos habló de todos los aspectos correspondientes a Azure Web Sites y fue muy interesante ver lo sencillo que es crear sitios web, configurarlos, monitorearlos, escalarlos, etc. teniendo en cuenta las posibilidades que nos da que dichos sitios puedan ser desarrollados no sólo en .NET sino también en Python, Java, Ruby, PHP,… además de que se puedan seleccionar plantillas preinstaladas como WordPress, DotNetNuke, etc. Aquí podéis ver su presentación

 david-rodriguez

  • Responsive Web Design con superpoderes – Santiago Porras (MVP Windows Platform Development)

Tuve el placer de introduciros al mundo del Responsive Web Design y ampliar las posibilidades con SASS. Además, para los profanos en el mundo de la maquetación os dejé soluciones que os pueden ayudar en el desarrollo y maquetación de vuestros sites con Foundation o Bootstrap.

santiago-porras

Las sesiones fueron tan interesantes que incluso se nos fueron un poco de tiempo. Mis disculpas a los asistentes, pero ya sabéis que cuando se disfruta de lo que se está contando… el tiempo se va volando. Espero que el mensaje que queríamos transmitir sobre Azure y Diseño web haya calado entre los que estuvieron escuchándonos

 

No olvidéis que ya tenemos programadas dos nuevas sesiones  para noviembre (Azure Mobile Services con David Rodríguez y Aplicaciones universales conmigo) y diciembre (vNext

Aquí os dejo las slides y la solución de pruebas en que realicé en ASP.NET MVC

download-code

Evento | Sesión sobre entornos híbridos en Microsoft Azure para SharePoint

poster

Retomando las labores de comunidad, vuelvo a vosotros en los albores de la tempestad para tratar de exponer mi visión. En este caso, colaboraré con Alberto Díaz Martín el próximo jueves 23 de octubre en un Webminar de ENCAMINA donde hablaremos de entornos híbridos en Microsoft Azure (Más info) haciendo una orientación hacia SharePoint, aunque todo lo que contemos puede ser aplicable a otras soluciones.

 

Las tres claves sobre entornos híbridos en Microsoft Azure

Fecha: 23-10-2014

Hora de inicio: 16:00 UTC/GMT +1

Hora de finalización: 17:00 UTC/GMT +1

Lugar: Online

Registro: ¡Regístrate aquí!

Descripción

“Las 3 claves sobre entornos híbridos en Azure”

Durante esta conferencia online, vas a descubrir:

  • Clave 1: Cómo aprovechar las infraestructuras en la nube para ahorrar costes y ofrecer un mejor servicio.
  • Clave 2: Cuáles son las mejores opciones para montar una infraestructura híbrida con Azure, SharePoint u Office 365
  • Clave 3 (Clave práctica):  Cómo aprovechar y utilizar estos entornos híbridos (demo)

Más información: Info

SharePoint 2013 | Desplegar página maestra personalizada programáticamente

En este artículo quiero mostrar paso a paso cómo desplegar una página maestra (Masterpage) personalizada en un sitio de SharePoint y aplicarla en el momento del despliegue.poster

Escenario

Tenemos un sitio de SharePoint con sus subsitios etc etc etc y queremos aplicar una página maestra personalizada para, evidentemente, tener nuestra imagen de marca. Las opciones que tenemos son:

  • Hacerlo directamente trabajando sobre el sitio con el administrador de diseños y un editor de HTML como WebMatrix o SharePoint Designer con lo que para replicar en otros sitios tendríamos que hacer una exportación del paquete de diseño, importar en en nuevo sitio e ir configurando manualmente todo lo que corresponda
  • Hacerlo desde una solución de SharePoint creada con Visual Studio con lo que tendríamos la posibilidad de tenerlo en TFS o GIT, control de las versiones, automatización de configuración en el momento de desplegar, …

 

Parece claro que si lo que queremos es tener una solución flexible que podamos replicar en otras colecciones de sitios, granjas, … la opción correcta es crear una solución de SharePoint con Visual Studio

Solución

Crear proyecto

Como he comentado, va a ser paso a paso, así que empezaremos por crear el proyecto de tipo “SharePoint 2013 – Empty project”

01-create-project

 

Esto nos creará un proyecto con la estructura estándar de una solución de SharePoint a la que debemos ir agregando los elementos necesarios.

Crear módulo

El siguiente paso será crear un módulo donde añadir la página maestra para que sea desplegada en SharePoint

02-add-module

Al crear el módulo, Visual Studio también nos creará una característica que se encargará de activarlo en nuestro sitio de SharePoint. Para el ejemplo, a esta característica le he puesto ámbito de Site Collection tal y como muestro en la imagen

feature-scope

 

Añadir página maestra al proyecto

Dentro del módulo, eliminamos el archivo “sample.txt” que nos muestra cómo funciona un módulo y añadimos nuestra página maestra personalizada, quedándonos como en la imagen

image

Especificar ruta de despliegue

Dentro del módulo, tenemos un archivo “Elements.xml” que define cómo se realizará el despliegue de cada uno de los ficheros. Como queremos desplegar nuestra página maestra y, por ser puristas, hacerlo a la carpeta donde está el resto, debemos configurarlo de la siguiente forma:

   1: <?xml version="1.0" encoding="utf-8"?> 

   2: <Elements xmlns="http://schemas.microsoft.com/sharepoint/"> 

   3:     <Module Name="MasterPages" Path="MasterPages" RootWebOnly="TRUE" Url="_catalogs/masterpage"> 

   4:         <File Url="demo.master" Type="GhostableInLibrary" IgnoreIfAlreadyExists="TRUE" /> 

   5:     </Module> 

   6: </Elements> 

 

Como se puede observar, especificamos la url de despliegue de los ficheros contenidos en el módulo como “_catalogs/masterpage” y en el fichero establecemos que sea de tipo GhostableInLibrary. Con esto, ya tendríamos el despliegue de nuestra página maestra, pero… nos falta establecerla como predeterminada en nuestro sitio, así que continuemos.

 

Añadir “Event receiver”

Lo que vamos a hacer ahora es añadir un “Event receiver” que se encargue de establecer nuestra página maestra como la predeterminada de nuestro sitio y todos sus subsitios (contando desde la raíz) y, dado que para establecer nuevas páginas maestras necesitamos tener activadas las características de publicación tanto a nivel de colección de sitios como a nivel de sitio, también nos vamos a atrever a hacerlo desde código.

03-add-event-receiver

Una vez añadido el “Event receiver”, la característica nos quedará de la siguiente forma:

image

 

Editamos el fichero del “Event receiver” y añadimos los eventos “FeatureActivated” y “FeatureDeactivating” con el siguiente código

   1: public override void FeatureActivated(SPFeatureReceiverProperties properties)

   2: {

   3:     SPSite site = properties.Feature.Parent as SPSite;

   4:  

   5:     if (site != null)

   6:     {

   7:         SPWeb rootWeb = site.RootWeb;

   8:  

   9:         // Calcular la ruta relativa desde el sitio raíz.

  10:         string webPath = rootWeb.ServerRelativeUrl;

  11:         if (!webPath.EndsWith("/"))

  12:             webPath += "/";

  13:  

  14:         // Activar la característica de publicación a nivel de colección de sitios

  15:         site.Features.Add(new Guid("f6924d36-2fa8-4f0b-b16d-06b7250180fa"), true);

  16:  

  17:         // Recorrer todos los subsitios 

  18:         foreach (SPWeb web in site.AllWebs)

  19:         {

  20:             // Activar la característica de publicación en todos los sitios de la colección 

  21:             // y asignación de la nueva masterpage además del logo.

  22:             web.Features.Add(new Guid("94c94ca6-b32f-4da9-a9e3-1f3d343d7ecb"), true);

  23:             web.MasterUrl = webPath + "_catalogs/masterpage/demo.master";

  24:             web.CustomMasterUrl = webPath + "_catalogs/masterpage/demo.master";

  25:             web.SiteLogoUrl = "http://sumatutalento.com/wp-content/uploads/2014/07/Profile-Photo-4.png";

  26:             web.Update();

  27:         }

  28:     }

  29: }

  30:  

  31: public override void FeatureDeactivating(SPFeatureReceiverProperties properties)

  32: {

  33:     SPSite site = properties.Feature.Parent as SPSite;

  34:     if (site != null)

  35:     {

  36:         SPWeb rootWeb = site.RootWeb;

  37:  

  38:         // Calcular la ruta relativa desde el sitio raíz.

  39:         string webPath = rootWeb.ServerRelativeUrl;

  40:         if (!webPath.EndsWith("/"))

  41:             webPath += "/";

  42:  

  43:         // Recorrer todos los subsitios 

  44:         foreach (SPWeb web in site.AllWebs)

  45:         {

  46:             // Restaurar la masterpage Seattle 

  47:             web.MasterUrl = webPath + "_catalogs/masterpage/seattle.master";

  48:             web.CustomMasterUrl = webPath + "_catalogs/masterpage/seattle.master";

  49:             web.SiteLogoUrl = string.Empty;

  50:             web.Update();

  51:         }

  52:     }

  53: }

Como se puede observar, ambos métodos hacen algo similar y lo he comentado sobre las líneas de código con lo que hay poco que explicar, salvo la activación de las características de publicación, cuyos códigos podéis sacar de este artículo de technet y que os puede servir para activar la característica que deseéis.

 

Desplegar y probar

Ya hemos terminado de configurar y codificar todo lo necesario, así que, desplegamos el proyecto y comprobamos el sitio que como cabría de esperar, habrá cambiado de aspecto, adquiriendo el asignado en nuestra página maestra, en mi caso he modificado el logotipo, la búsqueda y el menú de navegación, eliminando el quick launch del panel izquierdo.

sharepoint-site-after

Si vais a las características de la colección de sitios podrés comprobar cómo aparece la que acabamos de desplegar activada, porque está puesto como automático aunque podéis cambiar este comportamiento.

site-collection-features

 

También tenéis disponible la selección de la página maestra desde la configuración del sitio –> página maestra puesto que hemos activado la característica de publicación-

masterpage-selection

 

Bueno, esto ha sido todo.

Os dejo el código del proyecto para que lo tengáis como referencia en este enlace

download-code

SharePoint 2013 | Obtener friendly url de las páginas de publicación

Escenario

posterDisponemos de un sitio de publicación y tenemos un WebPart personalizado que realiza una muestra de ciertas páginas del sitio, donde tenemos activada la navegación por metadatos, esto es, “friendly url’s”. El problema surge en que al hacer la consulta, ya sea usando CAML, recorriendo la lista con con Linq to SharePoint, lo que tenemos de forma habitual es la url de acceso a la página, algo similar a  “http://mysite/Pages/mypage.aspx” o “http://mysite/mypage.aspx”, lo cuál ya no es “friendly” perdiendo así los beneficios que podríamos obtener de cara al SEO.

 

Solución

A la hora de consultar la o las páginas, debemos tener en cuenta el objeto TaxonomyNavigation que nos permite acceder a métodos para controlar la navegación por metadatos. Así pues, podemos hacer uso de este objeto para obtener la friendly url de la siguiente forma

1 public string GetFriendlyUrl(SPListItem pageItem) 2 { 3 //pageItem es del tipo ListItem 4 IList<NavigationTerm> terms = TaxonomyNavigation.GetFriendlyUrlsForListItem(pageItem, false); 5 6 string friendlyUrl = string.Empty; 7 8 //comprobar si la página tiene uno o más términos asociados 9 if (terms.Count > 0) { 10 //Obtener la friendly url del término asociado a la página 11 friendlyUrl = terms[0].GetResolvedDisplayUrl(string.Empty); 12 } else { 13 //si no hay términos, devolver la url de la página 14 friendlyUrl = pageItem.File.Url; 15 } 16 17 return friendlyUrl; 18 }

Lo primero que hacemos es, obtener la lista de términos asociados a la página porque, debemos tener en cuenta que una misma página puede estar asociada a varios términos de navegación. Una vez hayamos comprobado que existe al menos un término asociado, podemos recorrerlos en busca del deseado o simplemente, como he puesto en el ejemplo, devolver el primero. En caso de que no hubiera un término asociado y, con el fin de tener siempre una url de acceso a la página, devolveríamos la Url estándar.

Silverlight | Localizar aplicaciones Silverlight

Hoy quiero hablar de algo que no es muy usado (creo) pero que por eso mismo puede ayudar a aquellos que se encuentren con el problema de no saber afrontar cómo localizar una aplicación en Silverlight que, aunque pareciera sencillo, tiene algunos entresijos que me gustaría compartir con todos.

 

Creando la aplicación Silverlight

Evidentemente, lo primero será crear la aplicación Silverlight seleccionándola de las plantillas disponibles en Visual Studio, en mi caso, Visual Studio 2013, tal y como se muestra en las imágenes a continuación.

1

 

Una vez hayamos seleccionado la plantilla de Silverlight Application, lo siguiente que se nos consulta es si queremos incrustar el proyecto dentro de una aplicación web. En el ejemplo que expongo, lo incrustaré dentro de una aplicación web ASP.NET MVC, con lo que marcaré la opción y asignaré el nombre de mi aplicación web.

2

 

Por último, voy a añadir un control de tipo Label, que ubico centrado dentro del grid principal “LayoutRoot”, al que posteriormente “bindearé” con el texto localizado.

3

 

Si ejecutamos la solución, podremos comprobar cómo se abre el navegador, con un control Silverlight incrustado que contiene el label con el texto que hayamos especificado, en mi caso “Text to localize”

4

 

Añadiendo los ficheros de recursos localizados

El siguiente paso, será añadir los ficheros de recursos. Por simplicidad voy a crear sólo el fichero principal en inglés (LocalizedStrings.resx) y el fichero localizado en español (LocalizedStrings.es-ES.resx).

Para ello, he creado una carpeta que llamo “Resources” donde agregaré ambos ficheros de recursos.

resourcefiles

 

Ahora añadimos una nueva entrada dentro del fichero de recursos, “LabelLocalized” donde pondremos el texto deseado. Esto hay que hacerlo dentro de cada uno de los ficheros de recursos y tendremos tantos como lenguas en las que queramos localizar nuestra aplicación. Para facilitar esta labor, existen “plugins” que nos pueden ayudar, pero de esto hablaremos otro día.

5

 

Localizando el contenido dentro del código XAML

Bien, ahora ya tenemos el control en código XAML que queremos localizar en nuestra interfaz y el texto que queremos que aparezca, por lo que el siguiente paso será enlazar ambos “bindeando” el control Label con la entrada del fichero de recursos.

Lo primero será crear una clase, que llamaré “Localizer.cs” que se encargará de varios cometidos:

  1. Determinar la cultura que vamos a usar
  2. Determinar el fichero en el que se encuentran las entradas localizadas
  3. Servir de interlocutor/pasarela entre nuestra interfaz y los ficheros de recursos para abstraernos de los mismos
    public class Localizer
    {
        public Localizer()
        {
            Culture = Thread.CurrentThread.CurrentUICulture;
            Language = XmlLanguage.GetLanguage(_culture.Name);
            resource = new SilverlightLocalization.Resources.LocalizedStrings();
        }
 
        private static SilverlightLocalization.Resources.LocalizedStrings resource ;
 
        public SilverlightLocalization.Resources.LocalizedStrings Resource { get { return resource; } }
 
        XmlLanguage _language;
        public XmlLanguage Language
        {
            get { return _language; }
            private set { _language = value; RaiseOnPropertyChanged("Language"); }
        }
 
        CultureInfo _culture;
        public CultureInfo Culture
        {
            get { return _culture; }
            set
            {
                //Contract.Requires(value != null);
 
                if (_culture == value) 
                    return;
                _culture = value;
 
                Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = value;
                Language = XmlLanguage.GetLanguage(value.Name);
 
                RaiseOnPropertyChanged("Culture");
            }
        }
 
        protected void RaiseOnPropertyChanged(string propName)
        {
            var e = OnPropertyChanged;
            if (e != null) e(this, new PropertyChangedEventArgs(propName));
        }
 
        public event PropertyChangedEventHandler OnPropertyChanged;
    }

 

El siguiente paso, será asignar un alias a nuestro localizador para que la interfaz sepa interpretarlo y, para ello, editamos el fichero “App.xaml” añadiendo el correspondiente código dentro de los recursos de la aplicación.

<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
             x:Class="SilverlightLocalization.App"
             >
    <Application.Resources>
        <resources:Localizer xmlns:resources="clr-namespace:SilverlightLocalization.Resources" 
                             x:Key="LocalizedStrings"/>
    </Application.Resources>
</Application>

 

Ahora que ya podemos usar el localizador para comunicar nuestra interfaz con los ficheros de recursos, vamos a establecer el Binding del valor en el control Label dentro del código XAML, para lo que deberíamos tener un código tal que así:

        <sdk:Label HorizontalAlignment="Center" 
                   Height="28" 
                   VerticalAlignment="Center" 
                   Content="{Binding Path=Resource.LabelLocalized, 
                                     Source={StaticResource LocalizedStrings}}"/>

 

Con esto, en principio ya deberíamos poder ver nuestro texto localizado, pero esperad que aún hay más.

 

Localizando el contenido dentro del código C#

Antes de continuar, podría ser que quisiéramos localizar el texto desde nuestro código C# (yo recomiendo que en la medida de lo posible se haga desde la propia vista en el caso de controles con un valor fijo), así que tenemos una vía alternativa, para la que no necesitamos la clase que hace de localizador, sino que simplemente haríamos uso de un ResourceManager que nos permite acceder a las entradas de los ficheros de recursos de una forma sencilla.

ResourceManager rm = null;
rm = new ResourceManager("SilverlightLocalization.Resources", Assembly.GetExecutingAssembly());
 
string localizedValue = rm.GetString("LabelLocalized");

 

Una vez hecho esto, podemos asignar el valor a cualquier control XAML que nos lo permita.

 

¿Por qué sigo sin ver cambios? Realizando los últimos ajustes

Una vez tengamos todo esto, pensaremos que está el trabajo realizado, así que si ejecutamos la aplicación…

4

 

No ha cambiado nada, ¿Por qué? <ironic mode=”ON”> Por extraño que parezca… en Silverlight las cosas no suelen ser tan fáciles como deberían </ironic> así que, localizar una aplicación Silverlight no iba a ser coser y cantar, o sí, pero al menos no iba a ser intuitivo.

¿Qué es lo que nos falta? Bien, pues nos falta, indicar a la aplicación Silverlight que puede usar las culturas en las que queremos que se localice. Esto lo haremos editando el fichero del proyecto, en el ejemplo “SilverlightLocalization.csproj” que no es más que un fichero XML y, en el nodo SupportedCultures, debemos añadir, separadas por “;”, todas las culturas que queramos tal y como muestro en la imagen.

6

 

9

 

Una vez hayamos añadido las culturas, podremos observar cómo nuestra aplicación muestra el valor correspondiente a la cultura.

 

Conclusiones

Con Silverlight las tareas a priori sencillas se pueden convertir en algo un poco “duro” de completar.

Para más referencias, podéis leeros a fondo este artículo de la MSDN donde se explica, aunque de forma algo enrevesada y desorganizada cómo funciona la localización en Silverlight.

 

Código de ejemplo

Podéis descargaros el código de ejemplo de aquí.

download-code

 

 

Eventos | //publish/ Ven y publica tus aplicaciones de Windows Phone y Windows 8

 

Sólo queda un día para que se celebre //publish/ (16-05-2014), un evento que se celebrará en, aproximadamente 60 ciudades de todo el mundo,  donde los desarrolladores de Apps tendréis la posibilidad de contar, en un evento gratuito, con expertos en diferentes áreas del desarrollo de Apps para Windows Phone y Windows 8 que os ayudarán a rematar vuestras aplicaciones y a publicarlas en las diferentes Stores.

Como ya os adelanté en un artículo anterior, estaré presente en Madrid con el látigo diseñador para ayudaros a que vuestras Apps tengan un look más “cool” y más atractivo para los usuarios. También estará el Gran Maestre Josue Yeray al que espero que aprovechéis al máximo ya que tiene prácticamente todas las respuestas en cuanto a código. Además, también contaremos con otros dos maestros, Alejandro Campos Magencio y Javier Suárez Ruiz que os ayudarán a tener un código extremadamente bueno así como una idea de negocio afinada.

 

Must remember

No olvidéis vuestros portátiles y, además, también debéis venir con mentalidad abierta a los cambios que os vamos a proponer. Si es posible, traed algo (o bastante) de código hecho de casa ;o) porque en un sólo día no nos dará tiempo de rematarlo todo.

 

Más datos

  • Localización:
    • Paseo Club Deportivo, número 1.
    • Centro Empresarial La Finca.
  • Hora de comienzo: 09.00
  • Hora de comida (cortesía de Microsoft): 13.00 – 14.00
  • Hora de finalización: 20.00 (aproximadamente)
  • Hora de presentación de aplicaciones: 18.30
  • Terminales de prueba: Sí
  • Premios (a repartir entre 1º y 2º):
    • Lumia 1520
    • Tablet Dell Venue 8 Pro
  • Goodies para todos: Yessssssss!!!

QR Code

 

Os esperamos mañana. Enjoy it!!

Fantasmas instalando SQL Server en Windows 8.1 | Could not find the Database Engine startup handle

Escenario

posterRecientemente he instalado SQL Server 2012 Standard sobre Windows 8.1 pero no sin problemas durante el proceso.

 

Problemas

Primero intenté instalar SQL Server 2012 Express sobre la máquina con Windows 8.1 para lo que me descargué el fichero de instalación del centro de descarga de Microsoft (con el idioma correcto). Una vez completada la descarga, ejecuté el fichero y, tras la comprobación de requisitos y configuración previa, comenzó la instalación. Pero, cuando ya estaba a punto de terminar (lo que es más frustrante aún), recibí el siguiente mensaje de error Could not find the Database Engine startup handle”. Como siempre, los mensajes de error son súper-descriptivos.

Para mis adentros pensé… pues vaya, “el fichero de instalación que me descargué está corrupto”, así que, ya de paso me descargué la versión Standard de SQL Server 2012 y repetí el proceso con el mismo resultado y con el consiguiente momento de tensión “hombre vs máquina” al que le sumamos el duelo “friky vs problema”.

 

Solución

Como buen frikazo, no iba a dejar que me frenara un problema tan simple como una instalación, así que comencé a buscar soluciones “bingueando” (no me seáis viciosillos, me refiero al sinónimo de googleando) con poco éxito hasta que di con este artículo de Anton Kalcik que tuvo el mismo problema y en el que explica bastante al final cómo resolverlo, así que resumiré.

Resulta que el servicio de SQL Server es incapaz de instalarse/iniciarse debido a un problema de permisos que podremos resolver simplemente propagando los permisos de la carpeta “Users/Default”. ¿Cómo hacemos esto de propagar los permisos? Pues bien, sigamos estos sencillos pasos:

  • Vamos a la carpeta C:/Users
  • Cambiamos la configuración de “Vista” y marcamos ver los elementos ocultos para ver la carpeta “Default”

1

  • Click con el botón derecho sobre “Default” y seleccionamos propiedades
  • En las propiedades, vamos a la pestaña de seguridad y seleccionamos “avanzado”

2

  • Seleccionamos “Cambiar permisos”, marcamos “Reemplazar todos los objetos hijos….” y le damos a OK.

3

  • Volver a lanzar la instalación de SQL Server

 

Conclusiones

A veces, algún becario mete mano en algún producto y pasa lo que pasa, pero siempre hay una solución, esta por lo menos me funcionó a mi.

 

Enjoy coding!

GUSENET | Aniversario del Grupo de Usuarios de .NET del Sureste

posterEl pasado 26 de abril, tuve el placer de participar en el aniversario de GUSENET como ponente formando pareja junto a Josue Yeray para hablar sobre las novedades que trae consigo Windows Phone 8.1 directa e indirectamente.

El evento contó con la presencia de cerca de 30 expertos en tecnologías .NET, casi todos MVP, con lo que la riqueza de contenidos era mayúscula pese a disponer únicamente de 30 minutos para cada sesión. De esta forma, se habló de tecnologías muy diversas que incluso se salían de .NET y se hizo networking, mucho networking en el que los temas que más pude escuchar estaban relacionados con Windows Phone 8.1 o con Entity Framework y el al uso que se hace de él por parte de algunas empresas/algunos desarrolladores.

En la sesión en la que participé, Josue Yeray, gran maestro de Windows Phone y del que siempre hay mucho que aprender, mostró a los asistentes las enormes posibilidades que nos aportan las Universal Apps que se han incluido con esta actualización y que nos permiten desarrollar Apps para Windows Phone 8 .1 y Windows 8.1 pudiendo compartir casi la totalidad del código, tanto XAML+C# como para HTML5+WinJS. Por mi parte, hice una introducción bastante light sobre las novedades en referencia a los controles (nuevas incorporaciones y optimizaciones a los existentes).

10171915_791590400851243_1141609395500142793_n

 

Otras sesiones que me gustaría destacar son la de Alberto Díaz que junto a Adrián Díaz habló sobre SharePoint, la sesión de Marc Rubiño en la que nos enseñó las debilidades ante el hackeo de bootstrap y la sesión de Bruno que nos dejó boquiabiertos y exaustos con todo lo que nos enseñó sobre el reconocimiento facial y de movimientos así como sobre gadgets. Todas las sesiones tuvieron también un nivel excelente lo que me ha permitido aprender muchas cosas y seguro que los asistentes también.

WP_20140426_18_19_41_Pro

 

Como he indicado al inicio del artículo, ha sido un verdadero placer poder formar cartel junto a tantos expertos y, sobre todo, poder hacerlo al lado de Josue Yeray..

Enjoy coding!

Eventos | Aprende a crear Apps para Windows Phone y Windows 8 y publícalas

poster

¡Hola a todos!

Parece que este año estamos de enhorabuena con la llegada de Windows Phone 8.1 y su convergencia con Windows 8.1, lo que nos permite compartir prácticamente todo el código, vistas, controles… entre ambas plataformas y… ¿qué mejor forma para celebrarlo que hacer un evento? Pues si querías uno… ¡Toma 2!

Desde Microsoft Corp., la comunidad de MVPs y WPSUG, queremos ayudarte a seguir el ritmo de las grandes novedades y crear Apps excepcionales usando las ventajas que ofrece la plataforma Windows con esta última revisión y para ello, se han creado dos eventos que tendrán lugar en Abril y Mayo: //learn/ y //publish/

 

//learn/

Este evento online está organizado directamente por los MVPs de Windows Phone. Durante 6 horas, podremos asistir a webcast sobre diferentes temáticas de Windows Phone 8.1: aplicaciones universales, diseño, nuevas APIs, notificaciones, etc. Si no sabéis inglés, no os preocupéis porque habrán tracks paralelos en varios idiomas entre los que se encuentra el castellano. Así que ya no tenéis excusa para asistir!!

En la Track en Español, Sorey García, Roberto Alvarado, Jose Luis Latorre, Ivan Toledo y Josué Yeray se encargarán de exponer los siguientes contenidos (sujeto a variaciones):

  • Introducción a Windows Phone 8.1

  • Empezando a construir apps Windows XAML

  • Controles de layout y transiciones de páginas

  • Adaptando tu UI a diferentes pantallas

  • Ciclo de vida de apps WinRT XAML

  • Tiles, badges, notificaciones y el Action center

  • Tareas en background

  • Windows XAML para desarrolladores Silverlight

El evento, que aunque se celebrará el 24 de Abril, por cosas de los husos horarios, en España empieza el 25 a la 01:00 (Bad thing). ¿Pero qué es una noche de no dormir para nosotros? Podéis aprovechar para poneros una copita de “Whisky on the rocks” y simular que estás de fiesta =oP No obstante, no os desaniméis porque las sesiones serán grabadas y podréis verlas bajo demanda. Tan pronto como estén disponibles, tanto Josué Yeray, como Javier Suárez Ruiz, Rafa Serna y yo mismo os pondremos los enlaces para su descarga en nuestros blogs o en la página de comunidad de WPSUG

Para registraros, tenéis que acceder a este enlace

 

//publish/

Finalmente, el 16 de mayo tendrá lugar //publish/ que será presencial. Se trata de un hackathon organizado entre Microsoft y la comunidad MVP. En él podréis contar con mentores que os ayudarán a crear Apps para Windows 8.1 y Windows Phone 8.1 y también habrá premios y dispositivos para probar vuestras apps. Por supuesto, os invitaremos a comer para manteneros encadenados a vuestros teclados y así de paso aprovechar para hacer networking.

En España habrá 3 sedes para este evento: Barcelona, organizada por Microsoft y Madrid y Palma de Mallorca, organizadas por la comunidad MVP. Yo estaré en Madrid apoyando a Josué Yeray y Javier Suárez Ruiz para ayudaros en todo lo que sea posible y conseguir que vuestras Apps lleguen a la tienda de aplicaciones con una gran calidad. El evento en Madrid se llevará a cabo en las oficinas de Microsoft el día 16 de mayo.

Podéis registraros desde este enlace para cualquiera de las tres sedes.

 

No debéis faltar a estos eventos ya que son una gran oportunidad para aprender y poder llevar a cabo vuestras Apps y, ¿por qué no? Convertiros en el próximo rico con vuestras Apps o vendiéndolas como WhatsApp. Desde luego, nosotros trataremos de ayudaros en todo lo posible, aprovechaos todo lo que podáis.

 

Enjoy it! Sonrisa

Windows Phone | Cómo instalar Windows Phone 8.1 Preview for Developers

poster

Ya está disponible “Windows Phone 8.1 Preview for Developers” por lo que ya podéis descargárosla aquellos que tengáis una cuenta de desarrollador activa. Instalarla es muy fácil aunque, como todo en esta vida, en ocasiones puede haber alguno más despistado que otro y, como varios me lo habéis preguntado ya… os indico cómo instalar/activar la preview para desarrolladores de Windows Phone 8.1 en vuestros terminales. Allá va:

 

Primer paso

Lo primero será descargaros la aplicación Preview for Developers de la tienda de Windows Phone o desde aquí (http://www.windowsphone.com/es-es/store/app/preview-for-developers/178ac8a1-6519-4a0b-960c-038393741e96)

NOTA: Tened en cuenta que necesitáis tener una cuenta de desarrollador para Windows Phone, de Windows Phone AppStudio o simplemente tener el dispositivo desbloqueado para desarrollar.

Segundo paso

Abrir la aplicación Preview for Developers y seguir el “complejo Wizard” como se ve en las imágenes

wp_ss_20140414_0001wp_ss_20140414_0002wp_ss_20140414_0003wp_ss_20140414_0004wp_ss_20140414_0005

 

Notad que en último lugar hay que activar la casilla de “Activar Preview para Desarrolladores”.

 

Tercer paso

Ir a “Configuración –> Actualizar el teléfono” y buscar actualizaciones. En unos instantes, debería aparecer la disponibilidad de una nueva actualización que debemos aceptar y… ¡listo! Windows Phone 8.1 Preview for Developers está disponible en nuestro terminal.

Aquí podéis ver las capturas de pantalla durante la instalación:

wp_ss_20140414_0009wp_ss_20140414_0010wp_ss_20140414_0013wp_ss_20140414_0014wp_ss_20140414_0015

 

Novedades

Una vez instalado, recibiremos un mensaje de texto indicándonos dónde podemos descubrir las novedades de Windows Phone 8.1, cosa que podremos hacer desde esta página de Windows Phone.

Además, podemos apreciar rápidamente cosas como el centro de notificaciones y acciones que nos permite acceder rápidamente a algunas acciones de nuestro dispositivo así como leer las notificaciones perdidas. También rápidamente he podido ver los cambios en la gestión del volumen, donde han separado el volumen de las notificaciones del volumen multimedia y aplicaciones (ya era hora).

Además también tenemos la posibilidad de customizar el fondo de pantalla con una imagen de nuestro gusto y añadir más tiles activando una nueva característica que nos lo permite.

wp_ss_20140414_0016wp_ss_20140414_0018wp_ss_20140414_0017wp_ss_20140414_0019wp_ss_20140414_0020

 

Por último, así rápidamente he visto los cambios en el calendario, muchísimo mejor que el que teníamos y que incluso nos indica una previsión de tiempo… Awesome!!!

wp_ss_20140414_0021wp_ss_20140414_0022

 

Cortana

Para todos los frikys que queréis probarlo y estáis esperando poder hacerlo… deciros que Cortana parece que sólo está disponible para la región de USA con lo que el resto de mortales no podremos probarlo aún… ¿o sí? En este artículo de Xataka Windows podéis ver cómo activarlo.

Windows-Phone-81-Cortanacortana-windows-phone-8.1

 

Importante

Si en adelante queréis dejar de recibir notificaciones de nuevas versiones preview, tan sólo tenéis que entrar en la aplicación “Preview for Developers” y desmarcar la opción “Enable Preview for Developers