17 de noviembre de 2016

Base64 en la consola de MacOS X

Una de las tareas más habituales cuando desarrollas apps y servicios web es la codificación y descodificación en base64 de cadenas de texto para evitar problemas con caracteres especiales.

Cuando realizas pruebas interceptando los paquetes muchas veces tienes que descodificar ese texto, hay muchos servicios online gratuitos para hacerlo, pero si tienes un Mac (o un Linux) puedes hacerlo desde la línea de comandos en la terminal del sistema.

Para codificar usa “base64 [nombre del fichero]”

Para descodificar usa “echo “[cadena de texto codificada]” | base64 —decode


Rápido, cómodo y sin Internet :)

1 de agosto de 2016

Android: Queda muy poquito ya para el lanzamiento de Android N

Después de 5 versiones previews distintas y con su antecesor -Android M o 6- con una exigua penetración en el mercado llega en agosto Android N (o nougat), la nueva iteración del sistema operativo de Google (o Alphabet) para móviles.

Todavía no hay fecha definida, pero sabe que va a ser en este mes, en agosto.

¿Qué novedades tiene Android N con respecto a sus antecesores? Pues en mi caso destaco las siguientes:

  • Multitarea con pantalla partida
  • Cambios visuales en el resumen de notificaciones
  • Reorganización del menú de settings
  • Opciones de VR
  • Temas de teclado
  • Mejoras de rendimiento en velocidad y consumo de batería
  • Nuevos emoji
En principio las novedades parecen menos radicales a nivel de desarrollo de apps que con Android M, esperemos que así sea para evitar algún que otro dolor de cabeza :)

27 de julio de 2016

Me robaron mi cuenta de Origin / EA... y la recuperé :)

Pues eso, con la mudanza a Madrid llevaba meses sin entrar en mi cuenta de EA / Origin, y cuando por fin tengo el chiringuito montado en Madrid intenté conectarme a Origin para jugar a algún juego y resulta que ni mis datos de acceso ni mi email para recuperar la contraseña funcionaban.

Caí de repente en que desde hacía 2 o 3 meses recibía emails de publicidad de EA en ruso en mi correo, así que supongo que ese era el idioma materno del ladrón de juegos.

¿Cómo me robaron la cuenta? Pues fácil, utilizaron mis datos de acceso robados de una conocida red social que andan circulando por ahí.

¿Qué hice para recuperar la cuenta? Pues en la web de EA estuve buscando un formulario de contacto, les escribí y me llamaron en ¡1 minuto! para solucionarlo.

El trato fue excelente, me pidieron un par de pruebas de que la cuenta era realmente mía, les di las pruebas y tras 20 minutos de teléfono conseguimos recuperarla.

No sólo eso, si no que me ayudaron a activar la verificación en 2 pasos para evitar futuros robos.

En conclusión, ya vuelvo a tener mi cuenta y estoy muy contento con la calidad del servicio de atención al cliente de EA ^_^ 

9 de junio de 2016

PS3: Super Stardust HD

Hacía tiempo que no escribía en este blog sobre videojuegos, de hecho hacía tiempo que no escribía en el blog debido al alocado ritmo de vida laboral que llevo desde que me vine a vivir a Madrid, pero hay un juego para PS3, Super Stardust HD que merece que le dedique un rato a comentar mis impresiones.

Super Stardust HD es un juego que viene a ser una especie de remake mejorado de Super Stardust, un matamarcianos que salió para Commodore Amiga hace muchos años. No conozco el original, pero jugando a esta nueva versión no va a pasar mucho tiempo antes de que le eche las zarpas encima.

Pero hablemos de Super Stardust HD para PS3. Es un auténtico juegazo ideal para los jugadores old school entre los que a ratos me encuentro. Es sin duda la mejor experiencia de este tipo después del Resogun para PS4 a la que he jugado en los últimos tiempos.

El juego consiste en matar todo lo que se mueve a lo largo de una serie de fases organizadas por planetas, cada uno de ellos tiene varios niveles y una vez los has pasado hay un nivel final con el típico enemigo final de fase que requiere de una estrategia especial para dar con su punto débil y acabar con él.

Puedes jugar al juego en modo arcade eligiendo el planeta por el que empiezas -tienes que haber pasado ese planeta previamente-. Si empiezas por los más sencillos podrás acumular más puntos y más armamento, sólo que tendrás que dedicar más tiempo para llegar al planeta que no has pasado. Hay también un modo planeta y modo cooperativo que todavía no he probado pero que tienen muy buena pinta.

El control de tu nave espacial es sencillamente perfecto, con el stick izquierdo mueves la nave al más puro estilo asteroids, con el derecho disparas a la dirección que elijas, sin machacar los botones, que con la cantidad de momentos "bullet hell" que tiene el juego se agradece. Tienes tres tipos de disparo, cada uno de ellos especializado en un tipo de enemigo.

Conforme vas avanzando y destruyendo enemigos aparecen un montón de power-ups con los que la potencia de fuego de tu nave va creciendo, y lo mejor de todo es que cuando te matan no pierdes ese poder de disparo, lo cual me parece uno de los aciertos mayores del juego que mejora su jugabilidad enormemente ya que evita uno de los fallos habituales de los juegos provenientes de los salones recreativos que solo querían matarte rápido para sacarte más monedas, está claro que en una fase avanzada sin armamento avanzado irías listo.

Dispones de un turbo que se va recargando con el tiempo que te permite huir de las situaciones más peliagudas y de unas bombas que vas recogiendo que te permiten matar a los enemigos cercanos cuando veas que estás cercado.

La dificultad está muy bien medida, es fácil de jugar, pero difícil de dominar. Las tablas de record online son geniales, te picarás por ir subiendo y subiendo de posición.

El juego prescinde además de argumento o historia ninguna, va al grano, a jugar y a pasar un rato divertido. El objetivo es superar tu puntuación y la de los demás, no necesitamos salvar a la galaxia, para eso ya están sus políticos :)

Los gráficos y el sonido encajan a la perfección con el objetivo del juego, no vas a alucinar con ellos, pero es que no hace falta, en Super Stardust HD quién manda es su medida mecánica, que funciona a la perfección, como su fuera un reloj suizo.

En conclusión, muy recomendable para pasar ratos agradables sólo o en compañía.

Puntación: 9/10


18 de marzo de 2016

¿Qué son las apps híbridas?

Las aplicaciones móviles híbridas son aplicaciones desarrolladas con un conjunto de tecnologías comunes en la web como HTML, Javascript y CSS. Estas aplicaciones corren sobre un motor nativo que se encarga de mostrar el contenido visual de las mismas a través de una vista web y de comunicar al hardware del móvil con la app.

De cara al usuario las apps híbridas son iguales que las nativas, un usuario normal no va a saber diferenciarlas, de hecho le da igual, lo que quiere es que la aplicación funcione bien. Están en todas las tiendas de apps de móvil, las hay de todo tipo: juegos, periódicos, de fotografía, etc.

 Las aplicaciones híbridas se suelen crear de una manera similar a una página web, de hecho, funcionan sobre un navegador web a pantalla completa. Para crear una aplicación híbrida tienes que sentirte como pez en el agua con HTML, CSS y sobre todo con Javascript.

La mayoría de las aplicaciones híbridas están desarrolladas a día de hoy para Apache Cordova (o Phonegap, que es una distribución comercial con herramientas adicionales). Cordova tiene un sistema de plugins con una API que permite interactuar con tecnologías nativas de Android, iOS, Windows Phone, etc. Estos plugins son desarrollados por la comunidad y también pueden ser mixtos para varios tipos de tecnología móvil.

Apache Cordova es un entorno basado en línea de comandos por lo que no trae herramientas por defecto para editar un proyecto, lo bueno es que puedes editar el proyecto desde cualquier editor común de texto.

¿Por qué se usan las tecnologías híbridas? 
  • Pues en primer lugar porque HTML es una tecnología muy accesible que conocen casi todos los programadores del mundo. Es muy raro encontrar a algún profesional que no sepa moverse con el HTML.
  • En segundo lugar debido al ahorro de costes y de tiempo, con tecnología nativa tienes que hacer la aplicación casi de 0 para cada plataforma, con tecnología híbrida basta con desarrollar la app y luego compilarla para cada versión de móvil.
  • En tercer lugar por una cuestión de facilidad de mantenimiento, no es lo mismo mantener 3 versiones de un producto que mantener una, la posibilidad de errores se divide por 3 ^_^.
¿Y por qué no se usan siempre las tecnologías híbridas? 
  • Pues en primer lugar porque son más lentas que las nativas, al ejecutarse sobre navegador web cualquier tarea gráfica, o de acceso a los sensores del dispositivo será mucho más lenta ya que tiene que pasar por más capas.
  • En segundo lugar hay que tener en cuenta que tienen siempre un tiempo de retraso en adaptarse a la última versión de la plataforma nativa, por ejemplo cuando aparece la primera versión de prueba de Android la plataforma híbrida tardará algo en estar disponible para esa versión.
  • En tercer lugar porque no siempre consiguen lo que prometen en cuanto a la consistencia en tiempo de ejecución. Cada navegador de cada móvil es un mundo y no todos ejecutan igual javascript o muestran igual los CSS.
  • Y hay una cuarta razón, aunque esta no es culpa de la tecnología híbrida en sí, si no de los clientes que solicitan la tecnología híbrida para… embeber su web en una app. Apple rechazará cualquier app que sólo sea una web convertida, advertidos estáis ☺

15 de marzo de 2016

Android: El ciclo de vida de una Activity

Las actividades en Android pueden tener diferentes estados. Podemos detectar su estado desde java para ejecutar el código que consideremos conveniente en cada momento de su ciclo.

Os pongo (y me pongo) aquí un ejemplo de referencia rápido de las diferentes situaciones.

Desde onStart a onStop la actividad es visible en pantalla.

  • onCreate se ejecuta cuando se crea la actividad.
  • onStart se ejecuta a continuación de onCreate una sola vez.
  • onRestart se ejecuta cuando ejecutamos la actividad después de volver de onStop.
  • onResume se ejecuta cuando el usuario vuelve a interactuar con la pantalla en primer plano.
  • onPause se ejecuta cuando la aplicación entra en pausa al no estar en primer plano.
  • onStop se ejecuta cuando se sale de la aplicación pero continúa en segundo plano
  • onDestroy cuando se cierra la aplicación


public class MainActivity extends ApplicationContext {
     protected void onCreate(Bundle savedInstanceState);

     protected void onStart();

     protected void onRestart();

     protected void onResume();

     protected void onPause();

     protected void onStop();

     protected void onDestroy();
 }

29 de febrero de 2016

Android: Detectar si tu móvil Android está cargando su batería

A la hora de ejecutar ciertos scripts de código en tus aplicaciones te puede interesar saber si el móvil Android está conectado a la red eléctrica o no (ya sea vía enchufe, usb o batería externa) ya que ciertos procesos pueden consumir mucha batería y si el móvil se apaga las consecuencias pueden ser poco deseables.

Para detectar si el móvil está cargando o no podemos usar este código:

boolean isPlugged= false;
Intent intent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
isPlugged = plugged == BatteryManager.BATTERY_PLUGGED_AC || plugged == BatteryManager.BATTERY_PLUGGED_USB;
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN) {
    isPlugged = isPlugged || plugged == BatteryManager.BATTERY_PLUGGED_WIRELESS;
}
Podéis clonarlo desde esta url de mi Git en BitBucket: https://gabicuesta@bitbucket.org/socialprotools/ischarging.git