miércoles 15 de febrero de 2012

Creando Alertas y Notificaciones de tus aplicaciones Windows Phone

0 comentarios
Bien, aprendiendo una cosita más para mi primera aplicación, encuentro el tema de las alertas y notificaciones en Windows Phone, muy útil para ponerlo en nuestras aplicaciones y muy fácil como casi todo :)

Para trabajar con alertas y recordatorios debemos usar el namespace Microsoft.Phone.Scheduler.

Este tipo de funcionalidades son conocidas como Scheduled Notification o Notificaciones Programadas y consisten en un mensaje que se despliega en pantalla a una hora específica, y que permite personalizar los datos que muestra y algunas características, debemos tener en cuenta que tenemos un límite de 50 alarmas o recordatorios por aplicación y que además que intentar publicar una notificación programada antes de la fecha actual del sistema va a generar un error, por lo que debemos generarla para al menos 1 minuto después. Las notificaciones se pueden programar para ser lanzadas diariamente, semanalmente, mensualmente, en cada ultimo día del mes, anualmente o bien, si no establecemos un valor, se ejecutará una sola vez en la fecha inicial.

Para saber cuantas notificaciones tenemos creadas podemos usar el siguiente código, de acuerdo al tipo de objeto que queramos recuperar.

Además de esto debemos tener en cuenta que cada notificación tiene un nombre que debe ser único, por lo que debemos verificar antes de crear uno si existe y si no borrarlo, con una sentencia así de simple:

if (ScheduledActionService.Find("reminder") != null)
    ScheduledActionService.Remove("reminder");


Para las alarmas podemos establecer una periodicidad y un sonido que se escuchará al momento en que programemos la alarma, por otro lado podemos un texto corto. Cuando el usuario presione sobre el mensaje del recordatorio nuestra aplicación se ejecutará en la pantalla principal, podemos crear una alarma con el siguiente sencillo código:


Alarm alarm = new Alarm(name);
alarm.Content = contentTextBox.Text;
alarm.Sound = new Uri("/Ringtones/Ring01.wma", UriKind.Relative);
alarm.RecurrenceType = recurrence;
ScheduledActionService.Add(alarm);


Crear un recordatorio es igual de fácil que crear una alerta, la diferencia será que no podemos establecer un sonido y que podemos establecer un título y una pagina de nuestra aplicación a la que el usuario navegue cuando seleccione el mensaje del recordatorio. Además como está pantalla pertenece a nuestra aplicación le podemos enviar un parámetro vía QueryString y recuperarlo dentro de la aplicación cuando la pantalla se cargue, veamos el código de creación:

Reminder reminder = new Reminder(name);
reminder.Title = "Reminder Title";
reminder.Content = "Reminder Content";
reminder.BeginTime = beginTime;
reminder.ExpirationTime = expirationTime;
reminder.RecurrenceType = recurrence;
reminder.NavigationUri = new Uri("/MainPage.xaml?reminder=" + identifier , UriKind.Relative); ScheduledActionService.Add(reminder);

Debemos de tener presente que la Uri que establecemos para un recordatorio solo puede ser una Uri relativa. 

Como siempre en MSDN encuentras más detalles e incluso un ejemplo de implementación.

Espero les sea útil para adicionar utilidades a sus aplicaciones Windows Phone.
Sorey

lunes 13 de febrero de 2012

Publicando el PivotViewer en una aplicación web (Parte 2)

2 comentarios
Bien, después de generar nuestra colección como vimos en el primer post, debemos crear nuestro proyecto Silverlight para ver como quedó el Pivot


Además se nos indica que va a crearse un proyecto para contener el control Silverlight, aceptamos que este proyecto tambien se cree y seguimos.


Para efectos prácticos colocaré los archivos generados en ClienteBin para que residan al lado del donde se genera el archivo .XAP por defecto al compilar nuestra solución.

Luego de eso agregamos al proyecto Silverlight, ojo al de Silverlight no al proyectoWeb, la referencia al control Pivot

Ahora modificamos el archivo MainPage.xaml del proyecto Silverlight, si te salen marcas de errores no te preocupes, compila y se quitarán si lo has hecho todo bien.

Añadimos el namespace a nuestro XAML y también el control.


Ponemos en el código asociado a la MainPage lo necesario para que una vez cargada se lea desde los parámetros de entrada la Url del archivo CXML que contiene la configuración de la colección.


Luego de eso vamos al proyecto Web y en nuestra página de pruebas, modificamos el objeto donde se embebe el Silverlight para enviar la Url del archivo CXML que contiene la configuración de la colección


 Cuando pruebes tu Pivot te darás cuenta que al dar clic en el nombre de cada imagen, no navega a la Url de referencia, para lograr esto debemos añadir un manejador de eventos en nuestro XAML


Además escribimos la acción que se ejecutará cuando den clic sobre el Link del nombre, en este caso, visitar la Url.

Es posible que necesitemos agregar una asignación del tipo MIME en el servidor con el fin de poder leer el archivo .CXML, esto lo configuramos dentro de System.webserver en nuestro Web.config así:


Si se te presenta algún otro problema puedes visitar la web de Tim Heuer, el lugar donde yo aprendí varias cosas configurando el PivotViewer.

Espero les haya sido útil, hasta la próxima.
Sorey

Configurando las colecciones para el control PivotViewer (Parte 1)

0 comentarios
Bueno por aquí configurando de nuevo mi máquina después de haberla formateado, hace un post de como configurar el PivotViewer un control muy bonito y que pueden ver de ejemplo en el portal de Microsoft Community Specialist en el que lo publiqué.

Me parece muy útil para exponer colecciones con imágenes y además de que es gratis con tu Microsoft Excel puedes editarlo sin hacer una linea de código, aquí les muestro un ejemplo tomado de la página donde está publicado el control


Lo primero es descargarnos de la web de Silverlight el control PivotViewer


Como ven al finalizar la instalación nos dicen que quedó un proyecto de ejemplo y que debemos instalar el SDK de Silverlight y lo podemos usar con Visual Studio Express.

Si queremos configurarlo manual, en la página de descarga del PivotViewer encontramos indicaciones, sin embargo podemos configurarlo más fácil, veamos como.

Descargamos ahora el Excel Tool para PivotViewer.


Abrimos nuestro Excel y veremos una nueva pestaña disponible con el nombre Pivot Collections


Presionamos la opción Nueva Colección y se nos mostrará una Hoja de Excel con un formato en el cual podemos colocar la información de los ítems que vamos a mostrar, incluyendo una imagen


En la pestaña que nos indican de Propiedades de la colección podemos configurar el título de la colección, un icono, una imagen de marca, un texto para el cuadro de búsqueda y las indicaciones de derechos de autor.

Podemos añadir columnas, mi recomendación es darle insertar siempre en la última para que la columna que se inserte quede formatada, alguna vez me paso que la añadí al final y no apareció el dato en el Pivot.


Así podemos añadir más datos a las imágenes que vamos a publicar. Con respecto a las imágenes la recomendación es colocarlas en buena resolución, cuando se genera la colección el pluging hace varias copias de la imagen en diferentes tamaños para poder hacer los efectos que pueden ver en los ejemplos publicados en la red.

Una forma fácil de subir toda una carpeta de imágenes es usar el botón "Importar imagenes"


O bien para incluir una imagen podemos ir por la ruta en nuestro PC


Pegamos la ruta en la columna "Ubicación de la imagen" de nuestra colección y si es correcta veremos de inmediato la vista en miniatura.


Completamos los datos y ponemos como título de las columnas adicionales el nombre que queramos que aparezca en el Pivot, sin cambiar el nombre de las primera 4 columnas.


Le damos publicar y guardamos el archivo resultante preferiblemente en una carpeta limpia por qué se generan gran cantidad de archivos.


Hasta aquí llega la generación, en el próximo post les contaré como usarlo desde un proyecto Silverlight.

Sorey

domingo 12 de febrero de 2012

#Principiantes - Entendiendo los métodos y funciones

0 comentarios
Bien, después de haber entendido el uso de las variables ahora entendamos los métodos.

Los métodos son los mecanismos o procesos a través de los cuales ejecutamos actividades. En términos generales, los métodos están compuestos por un nombre, uno o varios parámetros de entrada, unas acciones y para algunos de ellos podemos tener un parámetro de salida, por lo cual puedes llegar a escuchar que los métodos que tienen un valor de retorno o parámetro de salida son conocidos como funciones, sin embargo hoy día muchos no hacen esa distinción. Otros nombres con que escucharás llamar los métodos en diferentes contextos son: servicios, subrutinas o subprogramas.

Todos estos elementos mencionados aquí componen la firma del método o la definición del métodoHagámonos una idea visual de este asunto, yo entendería un método así.

Ahora veamos un ejemplo y luego explicamos
Tratemos de entender varias cosas y de ver cual sería el retorno de este método. Bueno lo primero es que los parámetros de entrada de un método pueden ser variables o valores fijos, lo segundo sería que aunque "afuera" del método nosotros tengamos variables que se llaman de una forma, dentro del método se definen cada uno de los parámetros de entrada y no se trabaja con los nombres de variables que vienen de "afuera" si no con los que se han definido en la firma del método.

De los parámetros de entrada hay que decir varias cosas, los parámetros de entrada puede ser por valor o por referencia, para algunos tipos de datos en programación (más adelante) veremos que son siempre por referencia, pero por el momento vamos a entender estos 2 usos que se le dan a los parámetros.

Cuándo hablamos de parámetros por valor, estamos diciendo que cada variable que usamos afuera y adentro del método tiene su propio lugar en nuestro espacio de almacenamiento en memoria, por lo tanto si yo cambio una, la otra no va a cambiarse. Esto en términos prácticos significa, que cuando llamamos un método para que se ejecuten, los parámetros que tiene definidos (en nuestro ejemplo a,b,c) hacen una copia de los valores que venían cargados en las variables que se enviaron (es decir X, 1 y Y), por esta razón cuando el método finaliza, X y Y siguen teniendo los valores 2 y 3.

¿Recuerdan la imagen que veíamos entendiendo variables? Vamos a tratar de apoyarnos en ella para entender ahora los parámetros por referencia.

Si dijéramos que X y Y van por referencia estaríamos diciendo que X y A apuntan a la misma sección de memoria (Como en la imagen Carlos y H lo hacen), por lo tanto si modificamos A dentro del método, cuando este termine su ejecución, como estamos alterando el valor de A, X estaría cambiado y lo mismo sucedería con Y y B.

Qué tal si intentas responder ¿Si X y Y fueran por referencia, que valores tendrían después de la ejecución del método?

Con respecto al parámetro de salida tenemos que decir que dicho retorno es solo un valor, es decir, en nuestro ejemplo no "sale" S si no que sale su valor, la S que es la variable que retornamos se queda al interior y no existe por fuera del método, de hecho aunque retornemos otra de las variables que usamos, siempre saldrá un valor que en caso de necesitar evaluar o modificarlo vamos a tener que guardarlo en otra variable

Ahora intenta responder esto ¿Cual sería el valor de retorno de nuestro método de la imagen? 

Bien, hablemos del cuerpo o proceso que hay dentro de los métodos, estos son un conjunto de lineas simples, o invocaciones a otros métodos y que deben ser escritos en forma secuencial de acuerdo a lo que queramos que ejecute la computadora, es importante entender que "el algoritmo no hará nada que nosotros no le indiquemos que haga" y "tampoco lo hará en un orden lógico si nosotros no se lo indicamos en ese orden".

Esta es una de las falencias más comunes empezando a programar, cuando le enseñas a alguien como se piden datos en la pantalla a un usuario y como se capturan, y le pones la tarea de capturar varios datos, primero escribe todas las sentencias de pedir datos y luego todas las capturas, allí se evidencia la falta de un pensamiento en secuencia, no por hacerlo más rápido sale mejor, si yo voy a capturar varios datos debo, pedir un dato y capturarlo, luego el siguiente y capturarlo y así sucesivamente, y eso solo por poner un ejemplo, a veces se ven cosas como que antes de declarar una variable quieren hacer operaciones con ella, declarar una variable si lo recordamos es crear el espacio en memoria por lo tanto si no la hemos creado en memoria no existe y no podemos usarla.

Bien, para finalizar esta pequeña caja de herramientas con cosas básicas para empezar a programar es necesario conocer sentencias básicas o estructuras de control como acabo de encontrarlas en Wikipedia, explicarlas más de lo que está explicado en  Wikipedia sería solo repetir, por eso los invito a visitar en el enlace, y además te recomiendo empezar por ver la Cápsula de .NET #1 en este punto. Puede que ahora entiendas mucho mejor que antes.

Espero que este par de post les hayan sigo útiles ;)

#Principiantes - Entendiendo el uso de las variables

0 comentarios
Tipicamente los lectores de mi blog, no son de nivel avanzado, sin embargo ha de ser raro encontrar estos días post tan básicos pero estoy en la misión de suplir rapidamente algunos conceptos que necesito para mis estudiantes de este semestre para poder iniciar mi materia.

Pues bien, pido disculpas a todos los profesores de fundamentos de programación, no pretendo ni mucho menos que un post como este supla todo lo que hay que aprender, pero digamos que pretendo escribir sobre la caja de herramientas básica de un programador novato, muy novato diría yo.

Importante: A quienes van a encontrar este post, es importante que conozcan los conceptos, yo no tiendo a ser muy ortodoxa, más bien práctica y trataré de hacer que el tema se entienda.

Los siguientes post serán ideas o conceptos básicos para iniciar en el mundo de la programación

Variables: Una forma simple de entender una variable y lo que con ella sucede es hacer un símil, imagina que tienes un espacio enorme separado por compartimentos, en los cuales puedes almacenar cualquier cosa, algo como así:
"Algo así" sucede con la RAM de nuestros computadores, cuando las aplicaciones se ejecutan, van almacenando en ese espacio, los datos que se generan, sin embargo cuando se reinicia la computadora, todo ese espacio queda vacío, es decir, esos datos son "volátiles" y no "persistentes".

Pues bien, resulta que para poder acceder a esos valores que están almacenados y que evidentemente son muchísimos, necesitamos ponerles una etiqueta o nombre, algo que nos ayude a "apuntar" a ese espacio en la caja donde está el valor que necesitamos, y pues par ir a un mismo compartimento, podemos usar varios de esos "apuntadores" usando diferentes nombres, los cuales son nuestras variables.

Ya que el software son bits y no es igual al mundo físico, en un compartimiento podemos guardar cualquier "tipo de dato", esos tipos de datos son propios del motor que ejecúte nuestro algoritmo o bien son tipos de dato que nosotros mismos podemos definir (pero eso va más adelante).

Hay unos tipos de datos básicos: Números, Letras, Caracteres, Fechas etc. 

Cuando estamos programando tipicamente necesitamos declarar las variables que usamos, indicando que tipo de dato es, a partir de ese momento, se reserva un lugar (compartimento) en el espacio que tenemos disponible y allí se irán colocando los datos que manejamos en nuestros algoritmos.

Declarar una variable si lo recordamos es crear el espacio en memoria por lo tanto si no la hemos creado en memoria no existe y no podemos usarla.

En nuestro ejemplo suceden varias cosas, H y Carlos tienen el mismo valor, si cambiamos el valor de "H" cambiará el valor de Carlos ya que ambos están apuntuando al mismo sitio.

Intentemos un poco de seudo-código mirando nuestras imágenes de ejemplo, declaremos a X

Declarar X como Entero
X <= 1

Entendiendo la expresión X es el nombre de la variable <= es el mecanismo o signo que se usa para asignar "un valor a una variable" y 1 es el valor que vamos a asignar. Podemos asignar una variable a otra variable, por ejempo X <= Y o hace operaciones con números X <= X+1 u otras variables X <= A / B y combinados, X <= Y + (A/B).

Los signos matemáticos que usamos para hacer operaciones entre variables, se conocen como operadores, así que siempre debemos aprender cuales son los operadores que existen en nuestro lenguaje de programación.

Debemos considerar que cuando asignamos un valor a una variable, según sea el tipo de dato, será la forma que debemos escribir el valor, el ejemplo más sencillo es los números se escriben simples como vimos en el ejemplo con X y los valores que son alfanuméricos se escriben entre comillas (generalmente) es decir así:

Declarar A como Alfanumérico
A = "Hola"

Debemos tener en cuenta que a una variable solo puede asignarse un valor, variable u operación que sea del mismo tipo, de otro modo habrá que realizar un proceso de conversión, es decir probablemente usar una sentencia disponible en nuestro lenguaje de programación, que transforme una variable de un tipo a otro.

Aprovechemos para deshacernos de un miedo con respecto a los lenguajes de programación, lo más importante es que tengamos bases como esta, cuando vamos a empezar con algún lenguaje de programación evidentemente tenemos que preguntar cada cosa como se hace.

Vemos en C#.NET algunos de los ejemplos aquí planteados
Como podemos observar, en C#.NET la asignación es simplemente un igual, y cada una de las líneas simples termina con punto y coma (;). Por otro lado la declaración de una variable se hace anteponiendo el tipo de datos al nombre de la variable, y una declaración puede hacerse asignando un valor inicial o bien solo declarándola.

Bien, hasta aquí un poco sobre variables, estos post serán una serie corta con las bases necesarias para iniciar.

Nos vemos la próxima.