sábado, 24 de enero de 2015

¿Que hay detrás de los Hololens de Microsoft?

Si no han visto que son los hololens de microsoft, primero dejo un vídeo para que lo puedan visualizar: 


Es una excelente tecnología, realmente maravillosa, y aclaro, el contenido de este post, no es para demeritar el trabajo que se está haciendo, pues es realmente bueno y lo han hecho personas asombrosas con un gran ingenio!

¿Cómo podemos decir que funciona la nueva tecnología de Hololens?

Antes que nada, yo creo que el nombre es principalmente comercial para que se pueda vender el producto y tenga un gran marketing, un holograma es creado a través de la holografía, que consiste en crear imágenes tridimensionales basadas en el empleo de la luz (lo saqué de wikipedia, si quieren leer más al respecto, éste es el link), en este caso se proyectan imágenes tridimensionales, pero pre-programadas, la parte de la adaptación espacial la comento un poco más adelante.

Al momento de que la imagen se proyecta a través de un "monitor" (en este caso los lentes), se puede decir que es una realidad aumentada, muchos han visto ya la realidad aumentada y las capacidades que puede tener, es maravilloso todo lo que se puede hacer con esto.

Ahora vamos con la tecnología que ocupa (o al menos yo creo que ocupa y no creo fallar tanto en esto).

Todo está basado en el maravilloso invento de Microsoft llamado Kinect, que lanzó al mercado en el año 2010.

La cámara de profundidad que usa esta tecnología puede detectar mediante proyectores infrarrojos y un sensor CMOS monocromo, la distancia y movimientos que realiza una persona, en esta nueva versión de Kinect que integra Hololens, puede que se hayan ocupado más de un sensor para poder detectar las instrucciones a mayor detalle.


Parte del funcionamiento de la cámara de Kinect:

¿Cómo sabe Hololens que le estoy dando una instrucción?

En esta parte creo que no la tendré que explicar mucho, simplemente son gatillos que se ocupan dentro de las aplicaciones programadas, y por lo tanto todas las aplicaciones que se desarrollen para Hololens será de la forma: mueve indice arriba y abajo, saludo, "hola app", etc, etc, es como si programaramos una espera de instrucción en C para poder decir que se presionó la tecla "arriba->72",  "abajo->80", etc, etc.

Ahora, ¿Cómo sabe hololens que la instrucción la está dando "mi mano"?

De la misma forma que en nuestro teléfono podemos poner el dedo "desde arriba" de la pantalla y se desplegará algo más.

¿Que quiero decir con esto?

Tendremos siempre un punto 0,0,0, las cámaras de los lentes tendrán un angulo de visión, en este caso perimetral, pero siempre habrá ese punto, por lo que el gatillo para poder recibir una instrucción  viene cuando el punto 0 es invadido hasta el punto "N", y de esta forma queda a la espera del gatilo mencionado algunos parrafos arriba.


Campo de visión humano, en este caso, los hololens emulan este tipo de visión.

De la profundidad de la imagen, se encarga el soft de kinect (claro, junto con el hardware).

En la imagen de arriba se muestra el como se calcula la distancia entre el punto final y Kinect, pero en un término sencillo (aunque demasiado complejo de realizar :P), se puede decir que Kinect emite luces infrarrojas, y después toma la distancia con un algoritmo de medición del tamaño de los puntos y recrea la imagen.

Para acabar el post doy mis conclusiones:

1.- Microsoft creó una herramienta genial
2.- Innovo y mejoró nuevamente un producto
3.- Nos acerca mucho más al futuro.
4.- No son hologramas, son desarrollos prefabricados adaptados a una realidad aumentada.
5.- Pues dificil hasta escribirlo, pero malo sería no reconocerlo: "Felicidades Microsoft" :O

Sin más, me despido diciendo que el futuro actualmente, es el pasado.

Saludos! :D

Komtec1

jueves, 22 de enero de 2015

Whatsapp web, la seguridad que manejan y el adiós de tu batería.

¿Por que se tiene que dejar el móvil con conexión a internet para poder usar whatsapp web?

Armé este pequeño documento para explicar el como funciona este sistema, que realmente se me hace ingenioso, no funcional, pero ingenioso.

La actualización en móvil de whatsapp incluye una nueva tabla, la cual se llama sesiones, en esta hay campos como:

browser_id (23 caracteres aprox)
secret (88 caracteres aprox)
token (44 caractere saprox)

Solo por mencionar algunos.

Estos datos son los que se mostrarán al entrar al apartado whatsapp web de nuestros móviles, al principio se piensa que solo es para tener un "control" propio de los dispositivos conectados, pero mas adelante explicare el funcionamiento un poco mas extenso de esto.

Al abrir el menú de whatsapp web, nos da para escanear un código qr, si analizamos este código, tenemos algo como esto:

bjqPtTTbnhUvq1FWyLZmMh1RhesUcGU8eJMG2aUnrps4z2Z80XBiUVguqJ2Cb9YUyQY2t32apwXpP2qn4QAWbHXsNQV7ik7CT2PZbsfNEU+2ThPFhjRTVS7act+7irrQIbPSCHon8GCFXzM/ADHeA==,pbKOZCwnvdlYLFF8bmQePMKtNL7IoiJf7PQdH9XawD8=,/abc7sigtAjidMiWNCUOTw==

El código se genera cada 10 segundos aproximadamente, y es una mezcla del timestamp actual con el id del navegador, y alguna otra cosa más (que debe ser code generado en aleatorio por WA), lo que nunca cambia al generar el código desde un mismo navegador es la última parte (,pbKOZCwnvdlYLFF8bmQePMKtNL7IoiJf7PQdH9XawD8=,/abc7sigtAjidMiWNCUOTw==), esa parte siempre se mantendrá igual, por lo que se puede deducir que es el id del navegador, o en la DB el browser_id.

Ahora vamos con una parte de como trabaja la aplicación (al menos en android).

Al escanear el código con la aplicación de WA, está programada para que mande una petición a los servidores de WA, es decir y como ejemplo, podría ser un WS como el siguiente:

https://whatsapp.com/?añadirdispositivo=si&id_dispositivo=52155XXXXXXXX&token=YYYYY&browser_id=ZZZZZZZ&secret=AAAAAAA&imei_dispositivo=BBBBB

Al momento de que se manda esa petición al servidor de WA, este busca el browser_id asociado y refresca el contenido en el navegador web, algo así como funciona youtube remote y algunas aplicaciones por el estilo.

Listo, ya tenemos asociado nuestro WAWeb con WAMovil, ya todo funciona de manera perfecta y buena, ahora vamos con la parte como se gestionan los mensajes desde la aplicación web.

Al mandar un mensaje en el servidor web, lo que se hace es que se manda a una DB de WA en donde se almacena temporalmente, en ese momento aún NO es entregado a su destinatario, después de que se mandó correctamente, el servidor de WA procesa el mensaje y lo envía a nuestro dispositivo móvil, para que después nuestro dispositivo móvil mande el mensaje nuevamente al servidor de WA y el servidor de WA se encargue de entregarlo a su destinatario.

¿Raro no?

Si, la verdad es raro, pero funcional, no digo que la mejor solución, pero a ellos les funciona.

¿Por que se hace ese embrollo en la comunicación del sistema?

Al plantear un navegador WEB, whatsapp tenía el inconveniente de la DB en los móviles, es decir, como se podrían mostrar los historiales de conversación que se tuvieran en web para después mostrarlos en móvil, WA no fue diseñada para ser una aplicación como FBMessenger (que hubieran podido tomar el ejemplo y la funcionalidad de ahí para hacer WAWeb), a lo que me refiero, es que fue una aplicación completamente nativa en los dispositivos, no es una aplicación que primero haya sido web y después sea facil portarla a móvil de forma hibrida.

Uno de las cosas buenas de esto es lo siguiente:

La seguridad.


WAWeb está en comunicación constante con nuestro dispositivo móvil, es decir, si nuestro dispositivo llega a borrar o limpiar la tabla de sesiones, WAWeb se cierra yq dice que no está asociado ya con nuestro dispositivo.

Está bien, así estamos seguros de que si dejan la sesión abierta en la casa de Juan Perez, podríamos "cerrarla" de forma remota.

Esto nos garantiza que aunque obtengan nuestro secret y token, la comunicación no pueda ser tan fácilmente suplantada por alguna otra entidad maliciosa :P, ya que faltaría el id del móvil, más el IMEI que se hace constante revisión, y puede que algunas otras cosas más (eso, por el momento, sólo lo saben los desarrolladores de WAWeb).

Una de las cosas malas, muy malas en este mismo punto mencionado arriba:

Tu batería.


Si estás usando WAWeb durante tus 8 horas godinescas en la oficina, olvídate de que puedas subsistir con lo que tienes de batería, ya que el navegador estará en constante comunicación con el dispositivo, y por lo tanto el dispositivo en ningún momento estará en modo de espera o "standby", aunque la pantalla esté apagada, el wifi seguirá funcionando o en su caso, los datos móviles.

Otra de las cosas que te "podría" afectar.

Tus datos.


Si usas WAWeb de la misma forma menciono arriba, y por alguna casualidad se te olvida activar el WiFi, entonces despidete de tus datos de una forma rápida.

Si, se que hay algunos planes con WA ilimitado y demás, pero hasta ahorita no estamos seguros de que el webservice del que se hace llamada para verificar todos los datos del dispositivo sea desde un dominio llamado whatsapp.com, puede ser por amazon, o algún otro servicio en la nube que sea capaz de soportar tantas, pero tantas conexiones activas por tanto tiempo, por lo que si la petición se hace desde otro servidor, tu operador no sabrá que es de whatsapp y hará el cobro de la debida factura.

Bueno, creo que ya me extendí mucho, hay algunas otras cosas que se pueden colocar aquí, pero quiero investigar un poco más sobre la aplicación, para que pueda poner algunos datos muy concretos, al principio me emocioné por la forma que hacia la conexión y por eso investigué esto, pero veo que si es un poco difícil suplantar la identidad con esta forma fea, pero funcional de hacer la comunicación.




Saludos!

Komtec1