Archive for the ‘ desarrollo ’ Category

Apple relaja sus restricciones de desarrollo ¿Flash en el iPhone?

we-love-apple-we-love-adobe Esta es la noticia del día, yo diría que del mes. Después de la polémica decisión de Apple, hace algunos meses, de restringir el desarrollo de aplicaciones para la Apple Store, dejando por fuera frameworks de terceros, como Adobe Flash (que acababa de lanzar su compilador para iPhone), Mono Touch, Unity 3D y otros, hoy ha dado un paso atrás, relajando las condiciones para desarrollo de aplicaciones para Apple Store. De este modo lo han anunciado:

[…] Based on their input, today we are making some important changes to our iOS Developer Program license in sections 3.3.1, 3.3.2 and 3.3.9 to relax some restrictions we put in place earlier this year.

In particular, we are relaxing all restrictions on the development tools used to create iOS apps, as long as the resulting apps do not download any code. This should give developers the flexibility they want, while preserving the security we need.

([…] Basados en sus comentarios [de los desarrolladores de aplicaciones para A.S.], hoy estamos haciendo algunos cambios importantes a nuestra licencia del Programa de Desarrolladores en las secciones 3.3.1, 3.3.2 y 3.3.9 para relajar algunas restricciones hechas anteriormente este año.

En particular, estamos relajando todas las restricciones en las herramientas de desarrollo usadas para crear aplicaciones para iOS, en tanto las aplicaciones resultantes no descarguen ningún código. Esto debería dar a los desarrolladores la felxibilidad que desean mientras preserva la seguridad que necesitamos.)

(resaltados obra del traductor)

Esto es todo un salto atrás respecto a la anterior política de Apple y un nuevo capítulo en la relación amor-odio entre la compañía de la Manzana y la Gran A.

Es de destacar que esta decisión no sólo afecta positivamente a Flash, sino también a otras plataformas de desarrollo, como las mencionadas más arriba. Y no puede ser más que una buena noticia para todos aquellos que desarrollan o quieren desarrollar aplicaciones para iPod, iPhone y/o iPad sin tener que aprender C, C++ u Objective C sólo para ello, ni qué decir para la portabilidad entre plataformas móviles.

Aún hay que esperar qué cola traerá esta noticia. Por supuesto habrá defensores y detractores, y es de esperar que nuevamente se levante alguna Flamewar, pero aún es pronto para decir más. De momento, sé de más de uno que debe estar desempolvando el compilador de Flash CS5 y haciendo pruebas desde ahora mismo 🙂

En cualquier caso, si deseas ver en detalle los nuevos cambios, puedes descargar el PDF oficial del iOS Developer Program License Agreement.

Happy Coding!

Actualización: Curiosamente Adobe no ha hecho mayores declaraciones al respecto, excepto por la publicada en su cuenta de Twitter:

«…We are encouraged to see Apple lifting its restrictions on its licensing terms, giving developers the freedom to choose what tools they use to develop applications for Apple devices….» — Adobe

Sin embargo, la actualización 11.0.1 de Flash CS5, del día 07/09/2010 (hace apenas dos días) incluye, entre otras cosas, soporte para crear aplicaciones a resolución completa para iPad, soluciones de ciertos bugs y mejoras de desempeño en el empaquetador para iPhone. Está claro que este anuncio de Apple no les ha caído por sorpresa 😉

Etiquetas de Technorati: ,,,

Recordar usuarios localmente con Shared Objects en Flex

Los Shared Objects son objetos gestionados por el Flash Player que sirven para almacenar datos en el disco duro de la máquina donde se está ejecutando una película Flash. Aunque no lo son, los Shared Objects pueden entenderse como los cookies del Flash Player, con la diferencia de que son mucho más poderosos que los cookies tradicionales en varios aspectos:

  • Los cookies expiran por defecto; los Shared Objects no expiran.
  • Por lo general, los cookies tienen un límite máximo de 20 por cada sitio web; los Shared Objects no tienen ese límite.
  • Por lo general, los cookies están limitados a un tamaño de 4kb cada uno. Por defecto, los Shared Objects tienen un tamaño de 100kb pero se les puede configurar un tamaño ilimitado.
  • Los cookies pueden ser transmitidos a un servidor vía HTTP. Los Shared Objects no pueden ser transmitidos a un servidor ni pueden ser compartidos entre aplicaciones de distintos dominios (por defecto, aunque se puede permitir), características que suponen una ventaja a nivel de seguridad sobre los cookies.

Otras características interesantes de los Shared Objects y los cookies que pueden ser consideradas como ventajas o desventajas dependiendo del punto de vista, son:

  • Los cookies pueden ser deshabilitados en su totalidad o para un sitio específico desde el navegador. Los Shared Objects escapan a esta configuración. Deben ser gestionados desde la aplicación, haciendo clic derecho sobre la película Flash y seleccionando la opción «Configuración» o «Settings», o desde el Panel de configuración de Flash Player oficial de Adobe.
  • Los cookies pueden ser eliminados desde las opciones del navegador. Los Shared Objects permanecen cuando se ejecuta esta opción ya que no son cookies.
  • Los cookies, por lo general, almacenan datos de tipo texto. Los Shared Objects almacenan varios tipos de dato binarios, entre ellos: Array, ArrayCollection (de String), Boolean, Date, etc.

Esta tecnología es propia de Flash, está bastante madura a la fecha y su uso es tan simple como difundido. Los Shared Objects, junto con los cookies tradicionales, han sido motivo de pleitos legales en diversos países debido a lo intrusivos que pueden resultar cuando se utilizan de manera agresiva y desmedida en actividades como el rastreo de hábitos de navegación de usuarios con fines publicitarios. De hecho, en Reino Unido se han creado regulaciones que impiden la utilización de cookies y Shared Objects para rastrear hábitos de usuarios sin su consentimiento. Definitivamente, esta tecnología es mas poderosa de lo que aparenta y puede resultar sumamente útil en nuestras aplicaciones RIA. Particularmente, y debido al tamaño ilimitado que puede alcanzar un Shared Object, los considero una buena alternativa al momento de almacenar datos de formularios en aplicaciones sin conexión a Internet (offline) para su posterior envío al servidor (obviamente, cuando la conexión a Internet este disponible).
Sobre esto haré un ejemplo pronto.

Por ahora, les dejo un ejemplo de un buen uso (nada de intrusiones publicitarias, esta vez) de Shared Objects para almacenar los datos de autenticación de un usuario en una aplicación Flex. Lo interesante del ejemplo se encuentra en la clase LoginModel.

Dudas y comentarios son bien recibidos.

Juan Manrique.

Nota: Gracias a Daniel Terraza por darme pistas sobre Shared Objects en Flex.

Recordar usuarios con Shared Objects en Flex
Código

Información oficial sobre Shared Objects
Panel de configuración de Flash Player oficial de Adobe
Curiosidades de los Shared Objects

La imagen de Caracas es de aquí.

Diseño y Planificación Proyectos.

En el momento que decidimos emprender una idea que consideramos provechosa y efectiva, ya sea por razones personales o de índole laboral, lo primero que debe hacerse es un Diseño donde se plasme todo lo que contendrá este Proyecto, Sistema o Plataforma. Para luego poder diagramar una planificación de ejecución; esto nos permitirá saber el dominio del trabajo que hemos desempeñado.
Si bien es cierto que para muchos es algo complicado y tedioso hallar la solución o metodología correcta para realizar desde un complejo Sistema de Administración Contable, hasta un simple algoritmo que permita calcular fórmulas tales como: La ecuación de 2do Grado, el Teorema de Pitágoras, la Ecuación Patrimonial de una Empresa, otros. Muchos no consiguen una solución para poder desarrollar un simple código que cumpla con su función; esto es por falta de estrategia, diseño y planificación.
En primer plano debemos detenernos a pensar en las reglas básicas de nuestro proyecto, esto esta comprendido por, obligaciones que debe realizar, datos que va a procesar (tanto internos como los externos), herramientas de trabajo, facilidades de labor. Las obligaciones serán todos aquellos procesos que podrá ejecutar el programa para devolver una serie de resultados. Los datos que debe procesar se dividen en internos, o los que ya el tendrá como predeterminado, y  datos externos siendo  aquellos que le proporcionamos al momento de realizar la operación, por ejemplo, si vamos a calcular el costo total de un producto, debemos colocar el costo neto del producto (este seria el dato externo), utilizando como regla de porcentaje el costo del I.V.A. (este vendría a ser el dato interno).
Las herramientas de trabajo serán aquellas aplicaciones que traerá el sistema para ahorrarnos trabajo, estos podrían ser: calculadoras, calendarios, recordatorio de notas, lector RSS, entre otros. Y por último, las facilidades de labor son las optimizaciones que va a poseer para que dicho Software sea más provechoso y productivo que los ya existentes, y así triunfar en el mercado.
  • UML
La respuesta a los problemas de conceptualizar ideas se llama UML. Se conoce por UML al Lenguaje Unificado de Modelado, y no es mas que un lenguaje que nos permite graficar la estructura de un sistema, para luego poder visualizarlo, estudiarlo, y organizarlo según sea necesario, inclusive podremos reestructurar en mejoras a futuro sin tantos problemas.
Esto nos dará como beneficio poder realizar la estructura de un Software eficiente, el cual podrá ser desarrollado en una gran variedad de lenguajes de programación, ya que aqui radica el problema para muchos, pensar cómo resolverlo con un lenguaje en específico, en vez de pensar en su proceso de coordinación y arquitectura interna. Para mayor información y profundizar el tema: http://es.wikipedia.org/wiki/Lenguaje_Unificado_de_Modelado
  • Desarrollo de una Aplicación:
Luego de conocer un poco sobre lo que es Diseño y Planificación de Desarrollo, vamos a crear una simple aplicación que permita calcular el Teorema de Pitágoras.
« Paso 1
A razón de ya tener como premisa que debemos calcular el Teorema de Pitágoras, ya hemos establecido la función de nuestro algoritmo.
«Paso 2
Ubicar o crear la fórmula o proceso algebro-matemático que pueda resolver dicha ecuación.
Para esto sabemos que dicha ecuación es resuelta a través de la siguiente fórmula:
H = √(a² + b²)
« Paso 3
Luego de comprobar que el procedimiento de cálculo es correcto, debemos ubicar cuales son los datos que este va a trabajar. Tendremos que estructurarlo en Variables, tanto internas como externas, y en Constantes las cuales siempre llevan un valor fijo (como lo es el valor de π que equivale a 3,1416 si fuera necesario en este ejemplo).
Finalmente de haber alcanzado estos 3 pasos o etapas, podremos escribir un algoritmo que pueda realizar el cálculo, en cualquier lenguaje, ya que lo importante es su estructura y procedimiento, El lenguaje de programación se decidirá en función de cual sea el mas provechoso para dicho proyecto, más no debe pensarse en el antes de maquetar o Diseñar nuestro diagrama de Trabajo.
« Código PHP (Desarrollado por Rasmus Lerdorf):
<?php
$a = 5;
$b = 6;
$h = sqrt(($a * $a) + ($b * $b));
echo 'La Hipotenusa es igual a:'.$h;
?>
« Codigo Javascript (Desarrollado por Brendan Eich):
var a;
var b;
var h;

a = prompt("Ingrese el valor de A");
b = prompt("Ingrese el valor de B");

h = sqrt((a * a) + (b * b));

alert("La Hipotenusa es igual a: "+h);

« Codigo ActionScript 3 (Desarrollado por Macromedia):

var a:Number = 5;
var b:Number = 6;
var h:Number =  Math.sqrt((a * a) + (b * b));
trace("La Hipotenusa es igual a: "+h);

Arreglos en PHP

En programación encontramos lo que conocemos como estructura de datos, que nos permite almacenar en una sola variable varios datos, crear listas, estructuras de árboles, pilas, colas, etc..  En este artículo escribiré sobre los arreglos en forma de introductoria para un futuro artículo sobre listas en PHP.

Qué es un arreglo (Array)

Los arreglos son estructuras que existen en la gran mayoría de los lenguajes de programación y nos permiten almacenar más de un valor en una sola variable, esto quiere decir que podemos crear un arreglo de cualquier tipo de dato (entero, punto flotante, cadenas de texto, etc.) y en el agregar, modificar, buscar o eliminar sus valores.

Cuando se trabaja con arreglos es importante saber que estas estructuras siempre comienzan desde el valor cero (0), esto quiere decir que si un arreglo es de diez (10) valores para acceder a sus valores se debe comenzar desde el valor cero hasta valor -1.

Ejemplo de como declarar un arreglo en PHP:

<?php
      $arreglo = array();
?>

Tipos de arreglos

En PHP podemos utilizar tanto arreglos escalares como arreglos asociativos.

Arreglos escalares

Los arreglos escalares son aquellos en donde almacenamos valores normalmente de forma sucesiva y donde ninguno de sus valores estará asociado aun un nombre o clave (key) con cual podamos acceder a él. Para acceder a cada valor en este tipo de arreglos debemos especificar la posición en donde se encuentra el valor que queremos obtener..

Para agregar valores a un arreglo escalar lo podemos hacer de la siguiente manera

Ejemplo:

<?php
      $arreglo = array();
      $arreglo[] = 10;
      $arreglo[] = 9;
      $arreglo[] = 23;
?>

De esta manera cada vez que agreguemos un elemento en el arreglo siempre será colocado al final de el.  Ahora para obtener el valor debemos especificar su posición para obtener el valor almacenado.

<?php
      echo $arreglo[0]; // Imprime 10
      echo '<br />';
      echo $arreglo[1]; // Imprime 9
      echo '<br />'
      echo $arreglo[2];  // Imprime 23
?>

Arreglos Asociativos

Los arreglos asociativos son aquellos en donde cada valor tiene un nombre o clave (key) el cual asociamos a un valor con el cual podemos modificar, obtener o eliminar el valor asociado a esa clave.

Ejemplo:

<?php
      $arreglo = array( 'nombre' => 'Psycho', 'programador' => 'Si', 'blog' => 'URL' );
?>

Ahora para acceder los valores que asignamos al arreglo del ejemplo anterior lo hacemos a través del nombre o clave (key) que le asignamos a cada valor.

Ejemplo

<?php
      echo $arreglo['nombre']; // Imprime Psycho
      echo '<br />';
      echo $arreglo['programador']; // Imprime si
      echo '<br />';
      echo $arreglo['blog']; // Imprime URL
?>

Función var_dump()

Cuando se trabaja con arreglos en PHP y queremos saber el contenido que tiene un arreglo tanto asociativo como escalar es de mucha ayuda la función var_dump() en PHP para saber el contenido de un arreglo. Para ver como funciona y tener una idea más clara vean el siguiente ejemplo

Ejemplo


<?php
$arreglo = array( 'nombre' => 'Psycho', 'programador' =>  'Si', 'blog' => 'URL' );
var_dump($arreglo); // Imprime array(3) {  ["nombre"]=> string(6) "Psycho" ["programador"]=> string(2) "Si"  ["blog"]=> string(3) "URL" }

?>

Psycho es un programador de aplicaciones web que intenta en sus ratos libres compartir conocimientos en comunidades.  Esta interesado en que la comunidad tecnológica en Venezuela crezca y se integre.

¿Cómo obtener ganancias con aplicaciones en Flash?

Ganancias con Flash

Esta es una pregunta que nos hacemos los desarrolladores constantemente. Ahora con el Open Screen Project (desarrollo de una aplicación para diferentes entornos o dispositivos) y las compañías de dispositivos móviles apoyando el desarrollo de aplicaciones, nos enfrentaremos a situaciones desconocidas y difíciles de lograr para muchos en relación a nuestras aplicaciones, tales como distribución, cobro y periodos de prueba.

Recientemente, Adobe publicó en Labs el proyecto Melrose, servicio que soporta la distribución y monetización de aplicaciones creadas para correr en AIR y donde el desarrollador obtiene el 70% de las ganancias, teniendo un precio mínimo de $2.99 para aplicaciones en venta. Por el momento existe una prueba privada del sistema y podemos apuntarnos para ser notificados de su salida.

¿Queremos vender esa gran aplicación y no queremos esperar por Melrose?

Desde la caída de la economía mundial, la industria de los videojuegos ha sido la más beneficiada por la disminución de gastos en otras áreas. Las personas prefieren invertir en esta clase de entretenimiento que, en la mayoría de los casos, es mucho más económico que cualquier otro.  Sumado a esto, las redes sociales y la vida tan agitada que se lleva actualmente crean la necesidad de tener dispositivos móviles que nos permitan seguir conectados con nuestro entorno.  Un juego promedio para un dispositivo móvil cuesta $2 y muchos se soportan mediante publicidad. Esto nos lleva a cobrar por un servicio, crear aplicaciones que se distribuyen gratuitamente, dando la idea de estar completas, colocando procesos o contenido que sólo puede ser disfrutados realizando pagos, usando, por ejemplo la integración de PayPal con aplicaciones hechas en Flex y AIR.

Actualmente, todos los dispositivos con Android 2.2  son capaces de correr Flash/Flex en sus navegadores de internet y AIR como aplicaciones. En los próximos meses esto no será una situación exclusiva de Android; la mayoría de los fabricantes de dispositivos móviles se unirá a esta iniciativa.

Una opción rápida podría ser inscribir los juegos en concursos donde los premios son de $20.000$30.000 a repartir entre los mejores juegos en Android.

¿Redes sociales?

Adobe ofrece Social, unaherramienta que facilita la integración de aplicaciones con las redes sociales mas importantes, aunque esta no es la única manera de realizar dicha integración ya existen librerías que interactúan con el respectivo API de las diferentes redes. Todo depende hacia donde se quiere llevar la aplicación y el tiempo de entrega.

Dos ejemplos de compañías exitosas en la venta de juegos son Zynga (estimado de $270 millones en 2009 en múltiples plataformas) y Tapulous (estimado $1millon mensual por un solo dispositivo).

En conclusión,  la plataforma Flash no sólo está orientada al desarrollo de experiencia de usuario dentro de un navegador o en el escritorio; no son sólo animaciones que pueden ser espectaculares; es una manera de obtener ingresos que, si se aprovechan adecuadamente, pueden representar grandes ganancias.

Autor: Rafael Ochoa.

Consultor de «Rich Internet Applications», escribo para RIA212.com y AUG Venezuela.

twitter: rafaelochoa

flickr: rafaelochoa

Imagen: gettyimages

La Técnica Pomodoro y el software

Para aquellos que, como yo, son presa fácil de cualquier foco de distracción durante la realización de nuestras actividades diarias (en especial si son realizadas frente a una computadora), existe una técnica de lectura obligada y uso recomendado, ideada por un desarrollador de software (¿quién mejor que un colega para conocer exactamente nuestros problemas?) de nombre Francesco Cirillo y que está basada en un reloj de cocina en forma de tomate: la Técnica Pomodoro.

La Técnica Pomodoro fue ideada para ayudar en la concentración individual de las personas, por lo que impacta positiva y notablemente en la productividad individual. Esta técnica, que sorprende por su simplicidad y lo efectiva que puede llegar a ser, fue descrita por Cirillo en documentos que difundió abiertamente en varios blogs, hasta que, finalmente, estableció en un merecido sitio web.

Metas de la Técnica Pomodoro

Como se puede leer en el libro oficial:

“El objetivo de la Técnica Pomodoro es proporcionar una herramienta sencilla para mejorar la productividad (la tuya y la de tu equipo), que sea capaz de hacer lo siguiente:

  • Aliviar la ansiedad vinculada a la expectativa
  • Mejorar la atención y concentración al reducir las interrupciones
  • Aumentar la conciencia de tus decisiones
  • Aumenta la motivación y mantenerla constante
  • Reforzar tu determinación a alcanzar tus metas
  • Afinar el proceso de estimación, en términos cualitativos y cuantitativos
  • Mejorar tu proceso de trabajo o estudio
  • Reforzar tu determinación a seguir por ti mismo de cara a situaciones complejas”

Un vistazo a la Técnica Pomodoro

Una forma de resumir la Técnica Pomodoro es la siguiente:

  • Establecer las tareas del día antes de comenzar con cualquier actividad: copiar en una hoja cada una de las actividades que deben ser realizadas durante el día, ordenadas según la prioridad.
  • Hacer el primer pomodoro:
    • establecer la alarma del reloj de cocina en 25 minutos,
    • escoger la primera actividad,
    • trabajar en ella hasta que suene la alarma del reloj
    • marcar con una “x” la actividad para indicar que se realizó un pomodoro
    • tomar un descanso de 5 minutos.

Lo anterior se conoce como un “pomodoro” típico, aunque se pueden hacer ajustes a los intervalos de tiempo para mayor comodidad a medida que se familiariza con la técnica. Un pomodoro es la unidad básica de medida en la técnica. La marca que se realiza a la actividad servirá posteriormente para la autoevaluación.

  • Cada 4 pomodoros, realizar un descanso más largo: de 15 a 20 minutos, en los cuales Cirillo recomienda aprovecharlo para levantarse de la silla, tomarse un café, revisar el correo, dar un paseo rápido o simplemente descansar pero sin realizar ninguna actividad compleja que pueda distraer tu mente durante los próximos pomodoros del día.
  • Completar una actividad: hacer pomodoro tras pomodoro hasta terminar la actividad. A simple vista, se podrá observar cuántos pomodoros fueron necesarios para realizar la actividad. Luego del descanso correspondiente, se debe seleccionar la siguiente actividad en la lista diaria y aplicar la técnica nuevamente hasta el final de la jornada.
  • Registro y introspección personal: al final de la jornada, todas las actividades completadas junto con los pomodoros que fueron necesarios en cada una deben ser registrados en algún tipo de base de datos que permita observar el desempeño propio durante la realización de las actividades; esto con la finalidad de ayudar en la estimación de tiempos propios y la toma de decisiones en términos de la auto-observación y el conocimiento del desempeño propio. Para llevarle un poco la contraria a Cirillo, aquí tienen un modelo de hoja de registros.

El reloj de cocina en forma de tomate

Si bien Cirillo, como explica en el libro, considera que la mejor manera de aplicar la técnica es con un reloj de cocina convencional, tal como aquel en forma de tomate que lo inspiró a esbozarla, hay una lista de programas que no solo emulan el comportamiento de estos relojes sino que cuentan con funcionalidades muy convenientes que facilitan la aplicación de la técnica.

En el sitio oficial de la Técnica Pomodoro se puede conseguir, entre otros recursos, las hojas de trabajo necesarias para la aplicación de la técnica, la versión digital oficial y gratuita del libro donde se explica detalladamente, artículos sobre experiencias de personas que la han aplicado, conferencias realizadas, el software relacionado y hasta las direcciones de contacto de Cirillo, quien desde hace un buen tiempo ofrece talleres sobre la adopción de esta técnica en equipos de trabajo.

La intención de este artículo no es ofrecer una guía resumida sobre la Técnica Pomodoro sino más bien dar una idea general que motive a su profundización, ya que contiene una gran cantidad de consejos mentales que son los que, a la larga, hacen muy efectiva.

Juan Manrique.