Geek & Roll

Cargando recursos binarios desde JavaScript

Desde que Google mostró al mundo su port de Quake 2 a JavaScript usando GWT, no me podía sacar una pregunta de la cabeza: ¿Cómo hacen para cargar los recursos (como por ejemplo los modelos de los jugadores, o los niveles) desde el servidor al cliente, para su uso por el motor del juego en JavaScrip? ¿Es posible obtener archivos binarios del servidor, guardarlos en el sistema de archivos local, y ejecutarlos finalmente por una aplicación en JavaScript? La respuesta obviamente era sí, pero no sabía cómo.

Pero una consulta al código fuente del proyecto quake2-gwt aclaró las dudas. El secreto es sobreescribir un tipo MIME, lo que le permite al objeto XMLHttpRequest recibir respuestas binarias en vez de texto, para lo cual es más comúnmente utilizado.

function load_binary_resource(url) {
  var req = new XMLHttpRequest();
  req.open('GET', url, false);
  //XHR binary charset opt by Marcus Granado 2006 [http://mgran.blogspot.com]
  req.overrideMimeType('text/plain; charset=x-user-defined');
  req.send(null);
  if (req.status != 200) return '';
  return req.responseText;
}

En GWT necesitamos hacer uso de una funcion JavaScript nativa (JSNI) para lograr lo mismo:

private native void overrideMimeType(XMLHttpRequest req, String mimeType) /*-{
    req.overrideMimeType(mimeType);
}-*/;

Y finalmente crear un objeto XMLHttpRequest, hacer la petición y procesar los datos binarios en el cliente:

XMLHttpRequest req = XMLHttpRequest.create();
overrideMimeType(req, "text/plain; charset=x-user-defined");

req.setOnReadyStateChange(new ReadyStateChangeHandler(){
    //procesar la respuesta binaria
});

req.open("GET", "archivo.binario");
req.send();

Para convertir la respuesta en un InputStream, en este caso utilizando GWT y clases de emulación io y nio que tomé prestadas del proyecto quake2-gwt:

response = xhr.getResponseText();
byte[] responseBytes = new byte[sbb.stringToByteBuffer(response).remaining()];
InputStream inputStream = new ByteArrayInputStream(responseBytes);

En este punto pueden usar el InputStream como lo harían en un programa Java tradicional, por ejemplo si cargaron los bytes de una imagen, pueden aplicarle filtros a-la-photoshop, en tiempo real, en el cliente, sin necesidad de procesamiento en el servidor mas allá de descargar la imagen.

Arrancar la partición HP Recovery con GRUB

En el pasado, cuando comprabas una computadora con Windows preinstalado, normalmente se incluía un disco de recuperación con el cual podías reinstalar el sistema operativo de manera desatendida, dejándolo como de fábrica. Sin embargo, en años recientes esta práctica es cada vez menos común, reemplazando el disco de recuperación por una partición “especial” que contiene la imagen de recuperación más el software necesario para arrancar desde la partición y reinstalar la imagen.

HP BIOS

Este es el caso de las computadoras HP. Al iniciar, el BIOS te presenta con la oportunidad de presionar una tecla (F11 en el caso de la imagen) para arrancar la partición de recuperación. El problema es que cualquier modificación del Master Boot Record (MBR) elimina la posibilidad de arrancar la partición de recuperación presionando F11. El MBR puede ser modificado por actualizar el mismo Windows (por ejemplo si tu PC la compraste con Vista y actualizas a Win7 o desactualizas a WinXP), o por instalar otros sistemas operativos como GNU/Linux o OS X.

Después de un largo proceso a prueba y error (los detalles más adelante), descubrí que es posible arrancar la partición de recuperación utilizando GRUB. Este programa es un gestor de arranque muy popular en GNU/Linux, es Free Libre Open Source Software y es utilizado en muchas distribuciones GNU/Linux, como por ejemplo Ubuntu.

Si necesitas restaurar tu sistema operativo, pero no puedes arrancar tu partición de recuperación, puedes seguir los siguientes pasos: Leer el resto de este post.

Instalar WUSB54GC en Ubuntu Lucid 10.04

El WUSB54GC de Linksys es un dongle WiFi USB. Lo compré pensando en que lo podría usar en Ubuntu sin mayor complicación, pero no fue así. El driver necesario se incluye así que no hay necesidad de descargar nada, sin embargo se necesita configuración adicional.

Lo primero es asegurarnos que el hotspot al que nos queremos conectar usa WEP o WPA. Al inicio intenté conectarme a un hotspot con WPA2 y nunca logré conectarme. Cambiar la configuración a WPA arregló el problema.

Lo siguiente es editar el archivo blacklist.conf

sudo gedit /etc/modprobe.d/blacklist.conf

Agregar la siguiente línea al final:

blacklist rt2800usb

Y listo, al conectar el dongle el sistema debe reconocer las redes inalámbricas disponibles y conectarse sin problemas.

El CPU del Nintendo Entertainment System

Soy un geek de la emulación desde que supe se podía emular el SNES en mi modesta Pentium 2. Desde entonces he utilizado varios emuladores y hasta programado un simulador por mi cuenta (para el microcontrolador 68HC11 de Motorola).

Lo que me lleva a este post: el NES. El NES es interesante ya que es el sistema más emulado que hay, aún así crear un emulador del NES no es tarea fácil. Además las computadoras (y otros gadgets) de hoy tienen lo suficiente para emularlo sin penalización en la velocidad. También, su CPU (MOS 6502 ligeramente modificado) de 8 bits fue el CPU elegido para la mítica Commodore 64, el Atari 2600, Terminator y Bender. Leer el resto de este post.

You’re geniuses for cryin’out loud!

Boynas June 8th, 2010 tecnología 4 comentarios

Tengo que reconocer que el iPhone como concepto (no precisamente como un modelo en especial) ha tenido en los últimos años la capacidad de empujar a la industria de la tecnología y de las telecomunicaciones.

He estado cerca de tecnologías móviles por mucho tiempo y recuerdo los tiempos de las Handspring, Palm pilots, iPaq y lo que sentí cuando se convirtieron en teléfonos una vez que HP se apodero de Compaq.

Por años se ha hablado de ciertas cosas que se pueden hacer con los teléfonos y los que aman la tecnología móvil entenderán porque los japoneses se “casan” (literalmente) con un Nintendo DS.

Acabo de ver los videos de publicidad de Apple para su nuevo iPhone, y me vinieron tantas cosas a la cabeza con respecto a “las novedades” que tiene. Los japoneses deben de estarse riendo de nosotros. Lo que me gusto y que envidio es la doble camara y la capacidad para hacer video conferencias. Sin embargo, no lo aplaudo. Lejos de alegrarme de que Apple este “empujando” a la industria telefónica en el mundo se me vienen muchas dudas a la cabeza.

Mi hermano compro un teléfono Fujitsu Siemens hace como 4 años, se enterco porque traia todo lo que tu mente puede necesitar, entre todas esas cosas eran doble camara y banda cuadruple, capacidad para UMTS, y un sin fin de cositas. Pero, era mediocre Windows Mobile usado en una mediocre red de Telcel, donde nadie tiene la capacidad de utilizar siquiera skype (al menos hace 4 años). Un completo fracaso.

En el caso de la iPad. La tecnología táctil en las pantallas es viejisima, creo que desde los 70’s o 60’s y lo multi-tactil sera ochentero. Pero hasta hace poco se han visto implementaciones reales. Lo peor es que ha habido compañías que es lo único que hacen: Tablets. Motion Computing, alguna vez trabaje con ellas en proyectos de tecnologías “Paperless”. Buenas computadoras, buena tecnología táctil, pero igual, estupideces como Windows XP Tablet Edition hicieron que nunca prosperara.

Es difícil pensar que habiendo tantas compañías que se dedican a hardware, tanto software libre, tanta especulación de las personas como mi hermano hace 4 años, los japoneses y todos los fanboys de mac que por 4 años estuvieron especulando acerca de la iTablet incluso haciendo diseños y prototipos de lo que les gustaría que fuera; A pesar de todo eso… Nos sorprendemos de la “innovación” de Apple. Nos sorprendemos de la manera en que el iPhone empuja a la industria telefónica.

Honestamente, no crean que no, me canso de ser tan amargado y de verle el lado malo a las cosas. Pero, ¿No piensan que hay una linea de tiempo o “timeline” previamente establecida por los poderosos de la industria en la que ya esta delimitado quien y cuando traerían avances tecnológicos? ¿Tal vez por medio de patentes?

Lo que siento, tratare de explicarlo con el dialogo de una película. Como dijo Bruce Willis en Armageddon (Me da padentro Bruce Willis, y me da padentro Armageddon) cuando la NASA no tiene un Plan B…

NASA Guy: “No, we don’t have a backup plan. This is it.”

Bruce Willis: “And this is the best that you could… That the government, the U.S. government can come up with?
I mean, you’re NASA, for cryin’out loud. You put a man on the moon. You’re geniuses! You’re the guys that think this shit up. I’m sure you got a team of men sittin’ around somewhere right now… just thinkin’ shit up and somebody backin’ them up.
You tellin’ me you don’t have a backup plan, than these eight Boy Scouts right here… That is the world’s hope, that’s what you’re tellin’ me?”

NASA Guy: “Yeah.”

Bruce Willis: “Oh, Jesus. Damn it.”

Para acabar pronto. Se me hace muy raro que las personas de UNA sola compañía sean las ÚNICAS en el mundo que se les prendió el foco de ponerle dos camaras a un teléfono, una adelante y una atras. Se me hace muy raro, que ellos también hayan sido los ÚNICOS que se les ocurrió hacer un aparato que puedes manejar con mas de un dedo. De hecho son los ÚNICOS que tienen programas para ser DJs o diseñadores gráficos. Y son los primeros que se les prendió el -foco-, de prenderle un -foco- al logo de su marca detras de la tapadera de sus laptops.

Es difícil pensar que eso es “innovación”, y necesito que me pongan en la cabeza de HP o de Dell. YA!

La historia se repite, Apple es el primer teléfono con doble camara para video conferencias. Al menos tengo que darle las gracias a Apple por forzar a la mediocre red móvil del norte de America a dar soporte a algo tan básico como video conferencia.

Sony no quiere tu dinero

Cesar May 29th, 2010 Uncategorized 6 comentarios

Indiscutiblemente, parte importante del atractivo de la actual generación de consolas de videojuegos es el elemento online. No solo el multijugador online, pero también el contenido descargable y las “micro” transacciones para contenido extra, videos, renta de películas, o la compra de juegos clásicos. Nintendo tiene su canal Shop, Microsoft tiene su Marketplace y Sony la PlayStation Network.

Para mi, que rara vez juego multiplayer online, el valor está en poder comprar juegos clásicos, y la ocasional expansión. En el caso de Nintendo no podría ser más sencillo: aceptan tarjetas de crédito de todo el mundo. Es cuestión de meter los datos de tu tarjeta (si eres primerizo) y listo, a comprar Wii points.

En la PSN es una verdadera molestia. La PSN está seccionada en regiones, y la región Japonesa por ejemplo, puede tener distinto contenido que la Estadounidense, o la Europea. Supongo que es el mismo caso para las tiendas competidoras. Sin embargo en la PSN no aceptan tarjetas de crédito de México (y muchas otras partes del mundo).

Anteriormente la solución era:

  1. Sacar una cuenta en entropay.com
  2. Crear una tarjeta virtual
  3. Transferirle fondos a tu tarjeta virtual, desde tu tarjeta de crédito real (con una cuota)
  4. Asociar tu nueva tarjeta virtual a tu cuenta de PSN
  5. Agregarle fondos a tu wallet desde tu tarjeta virtual
  6. Comprar

Que ya era algo engorrosa, pero te acostumbras. Dejando por un lado el hecho de que cualquier cosa comprada en la PSN te sale más cara debido al cobro de entropay. Pero cual fuera mi sorpresa cuando me doy cuenta que de un tiempo para acá, Sony decidió que entropay no era válido para hacer transacciones en la PSN.

Sin la opción de entropay, la única solución es usar tarjetas prepagadas. Sony las vende desde su sitio www.sonystyle.com.mx. Las tarjetas prepagadas también se rigen por la región, por lo tanto si tu cuenta está registrada en México, solo puedes usar tarjetas para la región Mexicana. No solo eso, sino que no he visto una sola tienda se distribuyan dichas tarjetas aquí en Hermosillo, Sonora.

Tratando de hacer lo correcto, entré al sitio de Sony a querer comprar una tarjeta prepagada. La experiencia fue algo como lo siguiente:

  1. Entré al sitio SonyStyle.com.mx, el cual es increíblemente lento
  2. Después de varios intentos, por fin llegué a la parte donde ofrecen las tarjetas prepagadas de $50 ($717.18 pesos) y $20 dlls ($286.47 pesos).
  3. Para comprar algo necesitas registrarte (obvio). Intenté con mi actual cuenta de PSN, pero no funcionó.
  4. Al querer sacar una cuenta nueva, no me lo permite porque mi correo ya está en uso en algún otro sitio de Sony, pero no me dice cual.
  5. Seleccioné la opción de recuperar mi contraseña porque mi correo ya está en uso. Aún no me llega ese correo.

En este momento me rendí. Por suerte, mi cuenta está registrada con una dirección en USA (aunque es fácil sacar otra cuenta para la región que gustes) así que decidí probar suerte en eBay. No solo el sitio es mucho más rápido y amigable de usar, sino que también:

  • Acepta otros métodos de pago, como PayPal.
  • Hay tarjetas de múltiples regiones, de todas las denominaciones existentes.
  • Ten envían el código de la tarjeta en minutos. En el sitio de SonyStyle te dicen que se puede tardar hasta 48 horas.
  • Tienen protección para el comprador, por si algo sale mal.

Eso si, el costo generalmente es un poco más alto en eBay, pero por un margen muy pequeño. Ya convertido en moneda nacional, la diferencia era de $20 pesos. Además el “servicio al cliente” fue excelente, aunque claro depende del vendedor. En mi caso se la compre a talentlight, altamente recomendado. A solo minutos de la compra, ya tenía en mi correo el código. Llegué a mi casa y lo activé sin contratiempos.

Seguramente hay una razón para que Sony no acepte tarjetas de crédito Mexicanas, pero la combinación de factores:

  • Sony no acepta tarjetas de crédito Mexicanas
  • El sitio oficial para comprar las tarjetas de prepago es inutil
  • Las tarjetas no se consiguen fácilmente en tiendas

hace parecer como si a Sony no le interesara tu dinero.

¿Alguien con experiencias similares en la PSN?

Cachetada Con Guante Blanco

Boynas May 13th, 2010 Medios, tecnología 5 comentarios

Estaba leyendo un articulo sobre facebook privacy no se que. Cuando de repente se me acerca este anuncio.

Se me hizo muy buen rollito de parte de Adobe, que llevara a cabo una campaña publicitaria solamente para demostrar que el futuro es la apertura de sistemas.

El banner, obviamente, en flash cambia de “We {corazonsote} Apple” a  “We {corazonsote} Choice” y su destino es una pagina donde hablan de sus esfuerzos por abrir tecnologías.

Lloren niños lloren: se venden mas Androids que iPhones

Los fanboys de Apple (mactards como les llama el Sr. Boynacoras) son una raza extraña. Cuando las macs eran PPC, los procesadores x86 eran lentos y para naquitos, después las macs se pasaron a intel y ahora son la 8va maravilla. Cuando las macs se vendían poco es porque eran para la élite, y ahora que cualquier hijo de vecino tiene una mac, iPhone, iPod o iPad se enorgullecen del éxito en ventas.

Y ahora que se venden más androids que iPhones… ¡¡¡lloren niños lloren!!!

  1. Excusa mactard #1: Esa comparación no vale porque solo hay un iPhone y hay muchos dispositivos android. Eso no tiene nada que ver, el artículo específicamente habla sobre mayor venta de smartphones android contra smartphones iPhone. El hecho de que existan varios modelos distintos de smartphones que pueden ejecutar android no tiene nada que ver. Una comparación injusta sería comparar la venta de cualquier dispositivo que corre android vs solamente el iPhone, pero no es el caso. Además, en el pasado se han comparado las ventas de iPhone vs dispositivos BlackBerry y ahí nadie se quejó de la existencia de muchos modelos de BlackBerry.
  2. Excusa mactard #2: Es que el iPhone no se vende porque se están esperando al modelo nuevo. La realidad es que, en android, salen modelos nuevos más seguido y esa misma razón ha sido señalada como una debilidad en la comunidad android. ¿Ahora resulta que es una debilidad en el mundo iPhone también?
  3. Excusa mactard #3: Pero el iPhone es más bonito. Hmmm… si.

El hecho es que, en este momento se están vendiendo más smartphones androids que iPhones, y eso es muy bueno para el consumidor. Eso fomenta la competencia y el avance de esas dos plataformas, además de sus competidores como BlackBerry e inclusive WebOS que se rumora verá la luz controlando una tablet.

Arreglar el parpadeo de la pantalla en Ubuntu 10.04 Lucid Lynx

Ahora que Ubuntu 10.04 LTS ha salido para su consumo masivo, no tardan en aparecer los posts tipo Las 10 cosas que debes hacer después de instalar Ubuntu Lucid Lynx.

Para mi, lo primero no fue instalar Gnome-Do, o los codecs propietarios. Lo primero fue arreglar el flickering de la pantalla, un molesto bug en el que la pantalla parece saltar de un lado a otro. Es difícil describirlo con palabras así que aquí tienen un video.

Aparentemente, el bug tiene que ver con el ancho de banda del CPU y la memoria. El problema es con tarjetas ATI móviles, las cuales comparten el RAM con la computadora. Aún más crítico es que con la salida de fglrx para tarjetas antiguas, todos los usuarios de ATI que se ven forzados a usar drivers radeon o radeonhd experimentarán el mismo problema.

La solución (al menos en mi caso) fue añadir un comando al kernel:

radeon.new_pll=0

Para añadir dicho comando, editamos el archivo /etc/default/grub

sudo gedit /etc/default/grub

Y en la siguiente línea:

GRUB_CMDLINE_LINUX=”"

Ponemos el comando:

GRUB_CMDLINE_LINUX=”radeon.new_pll=0″

Y finalmente ejecutamos el comando para que grub2 tome los cambios (gracias Infragilis!):

sudo update-grub2

Reiniciamos y listo, no mas flicker. Ahora sí, vayan a instalar los codecs y Gnome-Do.

Prototipos de tiras de Dilbert encontrados en un bar

Rafyta April 26th, 2010 entretenimiento 5 comentarios

Ok, ok… encontrados en el blog de Scott Adams, pero no me pude resistir.

Para los que vivan debajo de un peñasco (o no sean Mac fanboys), esto es en referencia al supuesto (y después confirmado) prototipo de iPhone 4G que se le olvidó a un embrutecido ingeniero de Apple en un bar. El prototipo fue supuestamente confundido conun iPhone 3GS y “guardado” por un buen samaritano para entregarlo después. Al otro día el teléfono fue brickeado remotamente, por lo que la cosa se puso interesante y finalmente el prototipo terminó en manos de Gizmodo, y de ahí fue destripado y así… las fotos de la autopsia están por todos los tubos del internets.

Me emocionaría si en México hubiera 4G a mi alcance (no se si haya en algún rincón).

Posts anteriores Posts recientes