Pensando sobre la Estrategia de Desarrollo Móvil Multiplataforma


Como programador de aplicaciones móviles debes preguntarte cual es tu estrategia para desarrollar aplicaciones para las diversas plataformas que existen. Esa pregunta es algo difícil de contestar, y se debe a que tenemos muchas opciones disponibles. A continuación veremos las opciones que tenemos para desarrollar para iOs, Android, Windows Phone o Windows 8, cual sería tal vez la más recomendable y espero también tu opinión.

El desarrollo multiplataforma quiere decir, básicamente, que construyamos una aplicación móvil que funcione en distintos dispositivos móviles sin importar el sistema operativo con el que cuenten. No necesariamente en todos, pero si en varios. Es decir, puedes tener una idea para una aplicación, luego piensas ¿va a funcionar en Android? ¿Y qué pasa con iOs? ¿Desarrollo también para Windows Phone sin importar que su nicho de mercado es pequeño? ¿Aún debo recordar a BlackBerry? Espero que no.

El escenario más común, y que la mayoría de desarrolladores y empresas consideran es elegir entre Android y iOs, o si debería desarrollar una aplicación nativa o una versión web de la aplicación. Tal vez se considere una versión nativa para Windows Phone u 8. La cosa es que, todo llega a un punto en que tienes que decidir. Y tienes que decidir porque si no tu extraordinaria aplicación nunca llegará a las masas.



Veamos las diferentes opciones:

1. Aplicaciones Nativas 

Está bien. Seguro parece la mejor opción. Pero, espera, piensa que tienes que desarrollar en Objective C si quieres hacer una aplicación para iOs. Vas a utilizar el framework Cocoa y tendrás que tener una Mac. Para Android, tienes que saber Java y puedes desarrollar en Mac o Windows, pero es probable que tengas que utilizar un emulador. Ahora cuando vayas por la opción de desarrollar aplicaciones nativas, por supuesto que tienes acceso a todos los elementos de la interfaz gráfica nativa. Construyes la aplicación y los usuarios van a percibir dicha aplicación especial para esa plataforma. Es la idea por la que la mayoría se decide por construir aplicaciones nativas. Apuntas a dos grandes mercados si solo desarrollas en Android y iOs. Si eliges desarrollar una aplicación de pago, la mejor opción es desarrollar para iOs, olvídate de Android, que es el reino de las aplicaciones gratuitas.

2. Aplicaciones HTML5 o Híbridas

La opción 1 es esa. La opción 2 es hacer algo entre desarrollo nativo y lo que es puro HTML o un desarrollo multiplataforma. Una opción recomendable es utilizar las herramientas de desarrollo Xamarin. Xamarin te permite escribir una aplicación para Android y iOS en C#. Puedes utilizar las librerías portátiles en C# para escribir gran parte de código portable que puedes reutilizar. La diferencia entre desarrollar aplicaciones nativas y desarrollar aplicaciones con Xamarin es muy pequeña porque Xamarin se coloca encima de las API nativas y lo que hace es dejarte escribir el código Java o de Objective C mediante C#. Hay mucho tras bastidores, pero seguirás utilizando los controles nativos. Es solo otra capa de desarrollo encima. Después de Xamarin hay otras herramientras como Titanium. O como PhoneGap donde realmente construyes una aplicación híbrida. Ya estamos entrando al terreno de HTML5.

Puedes construir una aplicación HTML5 y básicamente alojarla en tu hosting, y puedes hacer que funcione en plataformas móviles. Puede ser que utilices algo como Kendo UI de Telerik o Sencha Touch. Luego lo que tienes es básicamente una aplicación HTML5 que es responsiva o adaptable (el término que prefieras) y que funciona en diferentes plataformas móviles. Si quieres hacer un instalador, puedes encapsular esto en algo como PhoneGap y en sí crear una aplicación nativa.

Ahora veamos las ventajas y las desventajas. 

Si vas a desarrollar una aplicación nativa, lograrás la experiencia Android o iOS o Windows más pura, pero necesitas experiencia, herramientas y desarrolladores que pueden escribir en esas plataformas. Escribir código en Objective C, si nunca lo has hecho antes, no es tan fácil. Hay una gran curva de aprendizaje. Incluso por el lado de Java y desarrollando en Android, también hay una gran curva de aprendizaje. Si quieres crear aplicaciones Windows Phone es una plataforma completamente distinta y Windows 8 también es otro mundo.



Si vas por el camino del HTML5, las cosas aún están en una edad temprana. Tal vez cuando los dispositivos puedan ser más poderosos, podremos desarrollar aplicaciones HTML5 para plataformas móviles. Pero aún no. Justo ahora, la experiencia es complicada. Es un poco difícil lograr que las cosas funcionen correctamente en cada dispositivo y que se vean igual de bien, y existe un tiempo de espera para la carga del contenido o la interfaz. No son tan rápidas. No tanto como cuando desarrollas aplicaciones nativas.

Ahora si tomamos una aproximación híbrida, esa es la más recomendada. Para la mayoría de desarrolladores, yo por ejemplo, se nos hará más fácil haciendo las cosas con Xamarin. Piensa que escribirás código una vez y funcionará de forma nativa en varias plataformas.

Si usas algo como MvvmCross, la cual es una librería que funciona con Xamarin, permite que utilices el 90% del código, y la única cosa diferente entre las plataformas son las vistas. Xamarin parece ser una opción muy buena, ya que aunque tengas que aprender algo sobre el desarrollo para iOs o para Android o para Windows, aun tendrás mucho código común que escribirás en C#. Básicamente utilizarás un único lenguaje de programación en vez de probar aprender al menos tres lenguajes diferentes y no poder compartir el código entre ellos. Y tampoco vas a tener los problemas que tendrías con HTML5. Por ahora, Xamarin parece ser la mejor opción, y luego el desarrollo híbrido y luego el nativo. En HTML5 todavía no. Tal vez en el futuro.

No es que esté haciendo promoción a Xamarin. No tengo comprada ninguna licencia con ellos, yo aún programo en Java para Android, sé C# y con esa habilidad podría construir aplicaciones móviles Windows pero pienso que las características de Xamarin la hacen una herramienta insuperable, he probado la versión gratuita y parece cumplir con lo que promete. Y al final la decisión depende de tí, amigo desarrollador.

Espero tu opinión y tal vez cuentes tu experiencia.

Dando Estilo a Celdas de Excel con mso-number-format


  • mso-number-format:"0" Sin decimales 
  • mso-number-format:"0\.000" 3 decimales 
  • mso-number-format:"\#\,\#\#0\.000" Coma decimal con 3 decimales 
  • mso-number-format:"mm\/dd\/yy" Fecha(Date7) 
  • mso-number-format:"mmmm\ d\,\ yyyy" Fecha(Date9) 
  • mso-number-format:"m\/d\/yy\ h\:mm\ AM\/PM" D -T AMPM (Fecha y Hora con am o pm) 
  • mso-number-format:"Short Date" 01/03/1998 Fecha Corta 
  • mso-number-format:"Medium Date" 01-mar-98 Fecha Formato Medio 
  • mso-number-format:"d\-mmm\-yyyy" 01-mar-1998 
  • mso-number-format:"Short Time" 5:16 
  • mso-number-format:"Medium Time" 5:16 am 
  • mso-number-format:"Long Time" 5:16:21:00 
  • mso-number-format:"Percent" Porcentaje con 2 decimales 
  • mso-number-format:"0%" Porcentaje sin decimales 
  • mso-number-format:"0\.E+00" Notación científica 
  • mso-number-format:"\@" Texto 
  • mso-number-format:"\#\ ???\/???" Fracciones con más de 3 dígitos 
  • mso-number-format:"\0022£\0022\#\,\#\#0\.00" £12.76 
  • mso-number-format:"\#\,\#\#0\.00_ \;\[Red\]\-\#\,\#\#0\.00\ " 2 decimales, y números negativos en rojo y con signo (1.56 -1.56)

Activa Verificación de Dos Pasos para Google y Facebook Para Mayor Seguridad

Si algo puede considerarse una pesadilla digital es que alguien pueda acceder a tu cuenta de correo o a tu cuenta de Facebook. En la cuenta de correo podemos tener datos personales, profesionales o incluso datos corporativos que pondrían en riesgo no solo a ti sino a muchas otras personas. Y lo de Facebook ni hablar, un tercero con acceso a tu cuenta podría publicar muchas cosas en tu nombre, enviar mensajes a familiares o amigos y terminaríamos convirtiendo nuestro muro en el muro de la vergüenza. Sin ir tan lejos, en estos tiempos tener una contraseña fuerte no asegura que alguien pueda acceder a nuestra cuenta.

La Verificación de Dos Pasos

Por lo mencionado, distintas empresas han implementado lo que se llama verificación de dos pasos. El primer paso es verificar que la contraseña o password sea correcta. El segundo es enviar un código de 6 dígitos a tu celular o dispositivo móvil, el cual también tienes que ingresar para por fin acceder a tu cuenta. De esa forma si alguien llega a conocer nuestro password, tendría que tener acceso a nuestro móvil también, lo cual es más complicado sin nuestra autorización o conocimiento.

Para poder habilitar la verificación de dos pasos en nuestra cuenta de Google realizaremos los pasos indicados en el siguiente enlace.

verificación-en-dos-pasos-google-3

Al entrar al enlace, se te solicita iniciar la sesión con tu usuario y contraseña de Google. En ese momento te pedirán que introduzcas el número de teléfono o móvil al que se enviarán los códigos de verificación cada vez, así como el modo de envío, por SMS o mediante una llamada de voz. Escribimos todos los datos solicitados y hacemos clic en Enviar código para completar la configuración. Tenemos la posibilidad de agregar un número de teléfono alternativo en caso no podamos acceder a nuestro móvil o imprimir una lista de 10 códigos de seguridad que se generan automáticamente. También es posible instalar Google Authenticator para generar los códigos mediante esa aplicación que funciona de modo offline.

verificación-en-dos-pasos-google-4

Para poder habilitar la verificación de dos pasos en nuestra cuenta de Facebook realizaremos los pasos siguientes:

Hay que ir al menú de Configuración (con el ícono de un engranaje), ingresar a la opción de Configuración de Cuenta, luego a Seguridad y habilitar la opción de Generador de Códigos.

Al activar esta opción, funcionará de forma similar a lo de Google, al loguearnos en nuestra cuenta de Facebook nos pedirá la contraseña y luego el código de seguridad que se puede enviar vía SMS o mediante el Generador de Códigos de la aplicación móvil de Facebook.

Google y Facebook nos permiten también indicar que un ordenador o computadora son de uso frecuente y que no vuelvan a solicitar un código, de forma que no se te pida ingresar el código cada vez que ingreses a tu Gmail o Facebook en tu computadora personal. Pero eso no es recomendable para equipos compartidos como por ejemplo cabinas públicas o las computadoras de la oficina.

 

Explicando: ¿Qué es el Internet de las Cosas?

Seguramente al leer noticias de tecnología, has visto que muchas veces se refieren al " Internet de las Cosas " una y otra vez . Es supuestamente una de las nuevas promesas - pero ¿qué significa exactamente ? ¿No es el Internet ya de cosas? ¿A qué cosas se refiere?

internet-of-things-620x354

En pocas palabras, la Internet de las cosas consiste en llevar más dispositivos y sensores a la red, a la conexión a Internet y permitirles comunicarse sin intervención humana .

La Internet de las Cosas Explicación

La Internet de las cosas se refiere a más dispositivos, objetos y seres vivos - incluso las personas, las plantas y los animales – con identificadores únicos y la capacidad de transferir automáticamente datos sin intervención humana . Por ejemplo, digamos que eres dueño de una granja y deseas realizar un seguimiento de las condiciones del suelo. Habría que medirlas y presentarlas a un ordenador a mano. En el escenario del Internet de las cosas, tendrás que utilizar un sensor que mide automáticamente las condiciones e informa de ellas. Si estos sensores se vuelven lo suficientemente baratos, es posible conectar un sensor único para cada planta en la granja para medir sus condiciones y transferirlas a través de una red de forma automática . En efecto , esto sería dar a cada planta de un identificador único y poner estas plantas en línea.

La Internet de las cosas se refiere a la creación de redes de todos estos diferentes tipos de "cosas". Esto incluye todo, desde electrodomésticos inteligentes a los implantes de salud que pueden comunicarse a través de una red. Imagina que se dan direcciones IP a cada cosa que hay en tu casa, una conexión a internet a través de algún tipo de sensor. Ubicaríamos el control remoto del televisor rápidamente, chequearíamos si ya podemos tomar el refresco a la temperatura que solicitamos, las luces se atenuarían a determinada hora y el televisor cambiaría de canal cuando comience nuestro programa favorito, y si tu mascota tiene demasiado calor o necesita salir al parque, etc.

The-Internet-of-Things

¿Cuál es el punto?

En este momento , la mayoría de los datos en Internet proviene de los seres humanos. Para poner una foto en línea, alguien tiene que tomarla y subirlo. Para medir una pieza de datos y ponerla en Internet, una persona tiene que obtener los datos e insertarlos en un ordenador. Pero sólo hay tantos seres humanos, y sólo tienen un tiempo limitado. La Internet de las cosas nos proporcionaría más datos - imagínese si cada componente en un coche podría supervisar e informar de su propio estado en tiempo real. O imaginar un agricultor poder sentarse y ver el estado de cada planta en su campo , junto con las condiciones históricas.

La Internet de las cosas también se refiere a otros escenarios, más cotidianos. Imagínate si todos los aparatos en tu casa son " inteligentes" para que puedas tener la información a tu alcance . Serías capaz de ver cuando se hará la lavandería , ¿cuánto tiempo hasta que el café esté listo?, si dejaste las luces encendidas en la casa, y más. Debido a que más dispositivos se convierten en " inteligentes" y están conectados a la red,  podrías tener tu casa con luces que se ​​encienden automáticamente y subir o bajar la temperatura cuando llegas a casa al detectar dónde está tu teléfono. Este es el sueño de la "casa inteligente ", pero también está relacionado con el Internet de las cosas - se refiere a la creación de redes con más dispositivos y objetos.

IPv6 y Direccionabilidad

Actualmente , la mayoría de los dispositivos utilizan IPv4 a conectarse a Internet . Nos estamos quedando rápidamente sin direcciones IPv4. IPv6 resuelve este problema proporcionando un mayor número de posibles direcciones que podemos utilizar . Una vez que realmente hayamos migrado a IPv6 , será posible para cada objeto en el planeta tenga su propia dirección IP. Algunos han dicho que hay más direcciones IPv6 que átomos hay en la Tierra. Si esto es verdad o no , vamos a tener una gran cantidad de direcciones para trabajar. Esto significa que todo en el planeta podría ser públicamente direccionable . En otras palabras, todo en el planeta podría comunicarse entre sí sin tener que preocuparse acerca de la traducción de direcciones de red y reenvío de puertos.

lg_homechat

Seguridad

La seguridad será un desafío a medida que pongamos más y más dispositivos en línea. Después de todo, ni siquiera podemos asegurar todos los dispositivos conectados a la red que tenemos hoy. Los routers de hoy son muy inseguros y no es posible compartir nuestros archivos a través de nuestros routers caseros sin poner en peligro nuestra privacidad. ¿Cómo podríamos asegurar a cada aparato que una persona promedio tendría en casa? ¿Realmente esperamos que los fabricantes de electrodomésticos de $15 estén al día con todos los parches de seguridad oportunos, y con un código de seguridad ? Y no estamos siquiera preocupándonos por todos los otros sensores y dispositivos en red que podamos tener.

No hay una respuesta fácil aquí . Necesitamos un nuevo modelo de seguridad para seguir adelante sin que el Internet de las cosas sea un desastre total de seguridad.

Todo en el planeta no se conectará en el corto plazo, pero la " Internet de las cosas " está tomando forma poco a poco a medida que más y más " dispositivos inteligentes" se unan a la red y los sensores se vuelven más y más baratos. La Internet del futuro no sólo va a ser de personas capaces de comunicarse , sino que va a ser acerca de cosas que se comunican entre sí.

Actualiza tu iOS ¡Ahora!

El título no es para vender la nueva actualización del iOS, es para advertirte que si no lo actualizas, tus datos personales y/o privados podrían estar en riesgo.

La ultima actualización del iOS 7, la 7.06, trajo un aviso de Apple: "esta versión parcha un error por el cual un atacante podría capturar o modificar datos en una sesión protegida por SSL/TLS". En resumen, tus datos podría estar robándolos alguien y tu nunca lo sabrías hasta que tus cuentas bancarias estén más vacías que una bolsa de caramelos en un cuarto lleno de niños. Dicho técnicamente, el software de Apple que se conecta a internet no sabe si está hablando con tu bancoo con un “man in the middle” (atacante en el medio).

¿Qué es o para que sirve SSl o TLS?

El concepto está en la Wikipedia y puedes revisarlo ahí. Lo importante, es que las conexiones a cuentas de correo o de bancos están cifradas y eso se hace mediante SSL/TLS. Se supone que si están cifradas, nadie podría ver la información que está ahí o al menos extraer algo que valga la pena. Con el fallo del iOS, un atacante podría ponerse "en medio" de nosotros y la página del banco al que queremos acceder. El atacante recibiría nuestro usuario, clave, códigos, etc y las retransmitiría al sitio web del banco. La respuesta del banco llegaría de igual forma retransmitida por el atacante.

¿Cómo evitar ser afectado por este problema?


En el caso del iOS se debe actualizar a la última versión lo más pronto posible. El fallo también está presente en OS X, pero no hay un parche oficial para dicho sistema operativo. La solución es no utilizar el navegador nativo de iOS o OS X, en vez de eso utilizar Firefox o Chrome, software que no es afectado por este problema.

¿Wasap? Facebook Compra WhatsApp por la friolera de 16 Mil Millones de Dólares

Whatsapp Facebook

La muy popular aplicación de mensajería WhatsApp ha sido comprada por la enorme red social Facebook, la cual ha desembolsado 16 000 millones de dólares, parte en acciones, parte en efectivo.

WhatsApp, que al momento de la adquisición contaba con 400 millones de usuarios, seguirá funcionando de manera “independiente” pero evidentemente Facebook le sacará mucho provecho a este enorme número de usuarios. Y debe hacerlo, ya que ha invertido bastante.

Como nota curiosa, les comento que el presupuesto de Perú es aproximadamente 42 mil millones de dólares, es decir que Facebook podría financiarnos parcialmente.

Como trabajar con código antiguo

Introducción

Imagina que estás trabajando con código antiguo con el que trabajar. Ha sido escrito por mucha gente, por mucho tiempo. Puedes encontrar las mejores y las peores soluciones, con diferentes estilos. Partes grandes de dicho código, o pequeñas, pueden ser descubiertas por pruebas unitarias. Puedes oler a naftalina por aquí y por allá. Ese código antiguo puede tener un mayor impacto en eficiencia, flexibilidad, pruebas, etc. Después de un momento, puedes tener muchas ideas de como probar o deshacerte de ese código. Bien ... ¡no lo toques!

¿Porqué deberías dejarlo como está?

Considera lo siguiente:

  • Funciona: mejor o peor, pero funciona. Es claro que podrías hacer cualquier cosa que funcione mejor, pero tu tiempo es limitado y tienes una lista de nuevas características a implementar y también una lista de errores que reparar. Hay una falta de pruebas unitarias. Puede ser, pero alguna prueba ha pasado y es la prueba del tiempo. Aparte del tema de eficiencia, podrías decir que si refactorizas el código será más flexible, más fácil de aprender y nuevas características podrán agregarse más rápido. Es verdad. Sin embargo, eso garantiza que ...
  • Introducirás más errores: jugar con código antiguo es como jugar con la ruleta rusa. Tarde o temprano introducirás un error que aparecerá en la demo ante tu cliente y nadie prestará atención a las grandiosas mejoras invisibles que has agregado. No puedes estar seguro de nada. Veamos un par de ejemplos. Digamos que no ves ninguna referencia al código al que le has puesto la mira. Quítalo y veamos. La aplicación funciona ... hasta que encuentras que un archivo XML externo fuera del entorno utiliza ese código eliminado en alguna rara pero crucial circunstancia y ahora obtienes una excepción en tiempo de ejecución que no te dice nada o incluso peor: la excepción es atrapada en un bloque try catch y te deja pensar que todo funciona bien. Puede parecer una buena idea relanzar excepciones en vez de manejarlas. Si, pero entonces empezarías a recibir excepciones en tiempo de ejecución de todo tipo desde lo más profundo del código de la aplicación. La gente que utiliza tu aplicación también las recibe, y claro está que eres tú quien malogró la aplicación porqué no había esos mensajes de error hasta que tocaste el código. Está bien, al menos has creado una nueva política de manejo de excepciones, que antes no había. En realidad, no tienes tiempo para eso. Pero, incluso, si tienes el tiempo ...
  • Tu pequeño cambio disparará una avalancha de cambios. Si el código antiguo involucra un sistema amplio, y eres el chico nuevo, encontrarás más dependencias de las que pensaste. Ahora, tomando eso en cuenta es probable que seas demasiado optimista y pidas a tu jefe menos tiempo de lo que realmente necesitas (tal vez conscientemente para no asustarlo), y tu jefe te de menos tiempo del que pediste y el problema real requiere más tiempo del que pensaste. Eso termina en que tienes un gran problema en tus manos.

¿Cómo trabajar con código antiguo?

Es una pregunta abierta y depende del código base que enfrentes. Te doy algunas pistas que funcionaron en algún momento para mi:

  • Evita cambiar código existente. Trátalo como una caja negra y sigue el principio de abierto-cerrado. Prueba extender el código existente hasta donde sea posible en vez de modificarlo.
  • Agrega nuevo código encima del existente. Prueba minimizar los lugares donde el nuevo código es enganchado. Si algo va mal, puedes retirar el código nuevo y revisar el origen de los problemas.
  • Mantén el código nuevo separado del antiguo. Digamos que es un nuevo método, una clase con una única responsabilidad, un adaptador en vez de nuevos bucles o lógica de control dentro de una vieja función. Podría ser fácil de diferenciar lo que es nuevo y puede ser refactorizado, modificado, mejorado y lo que es viejo y debería dejar intacto.

Siguiendo éstas líneas guía tendrás un núcleo de la aplicación basado en código antiguo que ha sobrevivido el paso del tiempo, a la vez que nuevo, flexible, legible y probado nuevo código construido sobre el viejo.

Una estrategia diferente reside en el hecho que el programador intenta camuflar su código con el antiguo, de modo que es muy similar y la fuente es homogénea. La desventaja es que esto fuerza al desarrollador a internarse en las funciones ya existentes que son imposibles de comprobar. Cambia totalmente la estimación del tiempo y no hay la seguridad de que funcione. Crea código rígido e ilegible. Introduce más lógica de control de flujo de la información. No agrega nada positivo en favor de una futura factorización.

La estrategia de refactorización introduce nuevos errores. Puede crear un mejor código, pero existe el riesgo de llegar a un estado en donde el código es confuso, tener un montón de nuevos errores y una línea de tiempo donde el final de la refactorización se aleja cada día más.

Recientes

Ultimos 3 en Visual Basic & Sql Server

Ultimos 3 en Sistemico en Apuros