Geek & Roll

Fechas legibles con PHP

Rafyta December 5th, 2012 programacion Haz un comentario

fechas con php

Para muchos tal vez sea como llover sobre mojado, pero para mí esta función representa un ahorro increíble de tiempo y no me la había topado hasta hace unas semanas.

Digamos que quieres cambiar fechas de un formato a otro. Por ejemplo si tienes “1-May-2012″ y quieres convertirla a “2012-05-01″, manualmente puede ser un tormento; pero con la función strtotime() ya puedes irte de fin de semana a acampar, escribir un libro, romper el reto de los 2 hot dogs de un kilo, o lo que sea que te guste.

echo date(”Y-m-d”, strtotime(”1-May-2012″));
–> **MAGIA**
–> 2012-05-01

Lo interesante es cuando empiezas a hacer cosas como:

echo date(”Y-m-d”, strtotime(”tomorrow”));
–> 2012-12-06

echo date(”l F jS, Y”, strtotime(”monday”));
–> Monday December 10th, 2012

echo date(”l F jS, Y”, strtotime(”a month ago”));
–> Wednesday December 5th, 2012

echo date(”l F jS, Y”, strtotime(”next week”));
–> Wednesday December 12th, 2012

echo date(”l F jS, Y”, strtotime(”end of times”));
–> Friday December 21st, 2012

Los detalles completos para hacer tu formato a la medida están en: http://php.net/manual/en/function.date.php

Hospeda tu sitio en Dropbox con Site 44

Rafyta October 1st, 2012 internet, utilidades 3 comentarios

Aunque hay quienes lo hacen desde hace tiempo con soluciones poco prácticas, Site44 rasca la comezón de aprovechar los gigabytes de espacio web gratuito del que muchos usuarios de Dropbox disfrutamos.

En pocas palabras te permite configurar un archivo en tu cuenta de Dropbox como si fuera tu folder de html público. Tienes la opción de usar un subdominio como geekandroll.site44.com o utilizar tu propio dominio si así lo deseas.

Hoy lo probé unos minutos y me parece bastante recomendable para mini sitios estáticos (sólo admiten html/js/pdf e imágenes). Nada de scripting o bases de datos. Me parece excelente opción para compartir mockups en vivo con clientes, o para los que están aprendiendo –o perfeccionando– sus habilidades en markup.

site44.com

Update: en la página de opciones avanzadas se detalla cómo poner contraseñas, poner un mensaje 404, personalizar los mime types y hacer redirects.

RockProducer, o cómo uso emacs para crear Rockofonia.

Para los que no saben de que lado masca la iguana, Rockofonia es un podcast semanal que se transmite tanto por Internet como por radio (en Baja California). Somos dos “DJs” que alternamos, por lo tanto cada 2 semanas me toca aventarme la emisión en turno. Siendo programador de profesión, siempre que me enfrento con un problema recurrente mi mente viaja y se imagina como solucionarlo con software. Ese fue el caso de No Te Pases (antes Everlasting Flame) y muchos otros proyectos tal vez no tan conocidos, pero que me han salvado de tener que repetir los mismos pasos una y otra vez, algo para lo que las computadoras se pintan solas.

El reto
En el caso de Rockofonia, siempre que me tocaba armar la emisión de la semana me enfrentaba con un problema. Verán, al inicio cuando Rockofonia no era más que un podcast no había tanto problema. Digamos que teníamos completa libertado sobre el formato, los comentarios, las canciones y sobre todo la duración de la emisión. Aunque siempre dijimos que serían de media hora, no era un límite estricto, y había emisiones que podían pasarse hasta los 40 o 50 minutos sin mayor problema. Cuando Rockofonia da el salto a la radio, la emisión se alargó a una hora. Esto nos permitió incluir mas material, pero a la vez nos restringió en la duración: la emisión tenía que durar una hora. Más bien, entre 57 y 59 minutos, sin pasarte pero tampoco sin quedarte corto. Las reglas exactas son un poco más complicadas que esas:

  1. La emisión se divide en dos bloques de media hora
  2. Puedes incluir dos canciones seguidas, pero deben llevar una cortinilla entre las dos
  3. Cada bloque debe durar 30 minutos aproximadamente, incluyendo la duración de las cortinillas, el intro y el outro
  4. La versión que se transmite por radio no incluye un segmento que dura aproximadamente 30 segundos, exclusivo para la versión por Internet
  5. La emisión completa en total no se debe pasar de 59 minutos

El reto es cuando estas planeando la emisión. Por la manera en la que se produce el programa, las voces se graban aparte y puedes terminar grabando mas material del que puedes incluir al final. Entonces, ¿Cómo llevar un control de lo que va a durar una emisión, basado en las canciones que se planean incluir y el material que se tiene para comentar entre cada emisión? Basicamente necesitamos:

  1. Una manera de calcular la duración de los segmentos musicales
  2. Una manera de calcular el tiempo disponible para los segmentos de comentarios
  3. Una manera de reorganizar las canciones de la emisión, de tal manera que los dos bloques sean de 30 minutos aproximadamente
  4. Una manera de incluir notas para la planeación de la emisión
  5. De preferencia, que la solución sea fácil de migrar entre computadoras (generalmente armo la emisión en mi PC de escritorio, pero las voces las grabo en otro sitio)

Mi primer impulso fue una aplicación Web, incluso inicié un proyecto llamado RockProducer, en donde la intención era hacer todos estos cálculos, integrar búsquedas (Wikipedia, Last.FM, Songfacts, Grooveshark entre otros) para la recopilación de material, un editor de notas para armar la emisión, distintas visualizaciones. La idea era ya teniendo algo completo, hostearlo en algún lado para todos aquellos que se dediquen a la creación de podcasts musicales y tengan los mismos retos que nosotros, pudieran usar esta aplicación para planear sus emisiones. Como dije, esa era la idea. Leer el resto de este post.

Bajando música como lo hacían nuestros antepasados (en Napster, Kazaa, Limewire…)

Cesar June 30th, 2012 Uncategorized 3 comentarios

Hace muchísimo (el 4 de Abril del 2007) estaba sentado en el que alguna vez fue mi cuarto en casa de mis Papás, cuando se me ocurrió escribir una pieza sobre el fileshare. Adelantando un poco el tiempo, hoy me pregunta mi esposa si llegará el día en el que pueda descargar música ella sola sin requerir de mi ayuda. No se si ese día llegará, pero si reconozco que antes era más sencillo descargar música. Siempre había un cliente dedicado a esto, una red P2P que estaba “de moda”, el “Napster en turno”. Ya fuera audiogalaxy, Kazaa, Gnutella, Limewire o canales en IRC con fileservers, cualquiera de ellos era muy superior a método que al parecer todos prefieren ahora: servicios de lockers online.

Una de las razones por las que es tan complicado descargar singles actualmente es por algo bueno: se ha hecho extremadamente sencillo suscribirse legalmente a un servicio de streaming (como spotify), o de descargas (como iTunes) cosa que no existía anteriormente. Eso no significa que no existan las redes antes mencionadas, pero el servicio de lockers online como rapidshare o megaupload hizo que surgieran otros sitios con grandes directorios de links hacia estos lockers, donde suscriptores postean links a discografías completas, temporadas de series de TV, programas, juegos, porno o lo que sea. Explicarle como buscar en uno de esos directorios (llámese Taringa, 4Shared o el propio Google) a mi esposa, llenar los captchas, verificar si es lo que ella estaba buscando para al final esperar 1 minuto mientras se habilita el link a la descarga, y encima de eso encontrar el verdadero link y no uno que sea publicidad engañosa, esta muy por encima de las habilidades computacionales de mi esposa, y algo por lo que yo no estaba dispuesto a seguir pasando.

Viendo las opciones que tenía en su computadora (Mac, OS X) volví al que conocí como la única red de intercambio exclusiva de música: SoulSeek. En GNU/Linux existe Nicotine+ como cliente, y en teoría este funciona en cualquier sistema operativo con Python disponible, pero depende de PyGTK que nunca pude compilar con brew. SSX nunca me ha funcionado, y no quise darle otra oportunidad. Viendo mis opciones bastante reducidas, decidí darle la oportunidad a SoulseekQt. Con el puro nombre sabemos que está hecho con el toolkit Qt, por lo que no podemos esperar mucho en el apartado visual. A mi no me importa mucho eso, es mas, si hubiera un modo emacs para usarlo como cliente de SoulSeek sería mi elección, pero en este caso tiene que pasar la prueba de la esposa. SoulseekQt es el cliente oficial de la red SoulSeek.

Aún con la interfaz poco intuitiva, SoulSeek en la mac de mi esposa fue todo un éxito. Una vez hecho el setup inicial, hizo lo que siempre había soñado: descargar música sin mi ayuda. Le expliqué como abrirlo (en el ícono del pájaro azul pixeleado), como buscar y “a donde se van las canciones” una vez que terminan las descargas. Sigo sin poder jugar Diablo 3 gracias a las descargas que tiene pendientes. Funcionó tan bien que inclusive lo instalé en mi PC.

Diablo III

Cesar May 19th, 2012 aplicaciones, cracking, internet 1 comentario

Para algunos, la llegada de Diablo III este pasado 15 de Mayo no significó más que tolerarme al hablar por horas de la historia, características y peculiaridades del nuevo juego de Blizzard. Y es que la franquicia Diablo siempre ha guardado un lugar especial en mi corazón, por mas blasfemo que se escuche.

Me tocó estar ahí cuando el primer Diablo tomó por sorpresa a los jugadores del mundo. Un título exclusivo para PC inicialmente, después lanzado para PlayStation, en donde el control de la acción era via el mouse principalmente. Clickity clack todo el día. No se si sea el primero en el género, pero para mi fueron dos cosas: descubrir el género de los dungeon crawlers, hack & slash, y parar oreja para cualquier cosa que Blizzard hiciera en el futuro ya que era la segunda vez que me sorprendía con algo totalmente nuevo y desconocido para mi (la primera fue con Warcraft). Recuerdo perfectamente toparme con el “Butcher” en el primer nivel del laberinto de la Catedral de Tristam. Su grito de “Ah, fresh meat” era sinónimo de tener que reiniciar el juego con la esperanza de que no volviera a salir. La muerte segura.

Cuatro años mas tarde, Diablo II. En ese entonces ya había yo pasado por Warcraft, Warcraft 2 y su expansión, Diablo, Starcraft y su expansión: Brood Wars. Blizzard ya era grande en el mundo del juego online, y Battle.net era poco más que el nexo entre los distintos juegos de Blizzard y su componente online. Diablo II fue grande, pero nada revolucionario si lo comparamos con su antecesor. Para empezar, los escenarios ya no eran completamente generados al azar. Además, uno de los aspectos que más me atrajeron al primer Diablo fue que literalmente ibas descendiendo al infierno nivel tras nivel, después de entrar a la Catedral de Tristam. En Diablo II la mayor parte de los escenarios son espacios abiertos.

Tan solo 12 años después (Diablo II salió en el 2000) Blizzard completa otra entrega de la franquicia Diablo, aún cuando su desarrollo se inició desde el 2001, un año después de Diablo II. Diablo III me recuerda mucho a como ha evolucionado OSX, implementando características de su hermano iOS, solo que Diablo III se las copia a su hermano World of Warcraft, también conocido como la gallina de los huevos de oro de Blizzard. En los 12 años que pasaron, Battle.net pasó de ser un simple nexo a una compuerta virtual que separa los diferentes mundos que Blizzard crea con sus juegos. Battle.net es necesario para comprar, activar, descargar y jugar cualquiera de los juegos de Blizzard, sea multijugador o no.

Si creían que el DRM que te impide iniciar una partida a menos que tengas una conexión a Internet para autentificarte es molesto, eso no es nada en comparación de lo que Blizzard ha hecho. Pero la verdadera hazaña es haberlo hecho de una manera en la que es completamente necesario. Battle.net no solo es necesario para autentificarte, sino que además forma parte del juego. Sin Battle.net, sencillamente tu juego no funciona, y por lo mismo esta restricción no puede eliminarse con un crack y ya. Para poder eliminar la necesidad de una conexión permanente, necesitarías un servidor que emule Battle.net. No es que esté yo de acuerdo con el DRM, y por supuesto que me gustaría jugar Diablo III sin estar conectado a Internet (por ejemplo durante un vuelo, aunque mi laptop no tenga lo necesario para correrlo) pero es fascinante la tecnología detrás de un juego que literalmente le hacen falta piezas clave, y estas se encuentran en el servidor. ¿Alguien dijo uncrackable?

¿Por que? se preguntarán… bueno, en Diablo III parte de la funcionalidad del juego se encuentra ejecutándose en los servidores de Blizzard. Diablo III se comunica con Battle.net por medio de protocol buffers, los mismos que Google usa para la comunicación y ejecución de métodos remotos (RPC) en sus servidores. Tanto el cliente (o sea nosotros) como el servidor (Battle.net) define distintos servicios. Por ejemplo, el proceso que genera los niveles aleatorios (conocido como DRLG o Dungeon Random Level Generator) se ejecuta del lado del servidor aunque el cliente tiene cierto control sobre el proceso.

Todo bien pero, ¿y el juego? En lo personal, no decepciona. Ir con tus amigos en una partida mutijugador a atacar a las fuerzas del mal es tan divertido como lo era en Diablo II (el Diablo original nunca lo pude jugar online). Claro que fue frustrante no poder jugar el día de lanzamiento, aún cuando había preordenado el juego meses antes. Pero no es posible que la gente se queje del DRM en Diablo III siendo que se anunció perfectamente claro que así sería, que no se podría jugar sin estar conectado a Internet, que la conexión es requerida, aún en single player, por las razones que ya describí anteriormente.

¿Se hubiera podido desarrollar de otra manera, sin necesitar conexión a Internet permanente? Claro que si, ¿pero porqué habrían de hacerlo? Les funcionó tan bien en World of Warcraft, y aunque Diablo III no es un MMORPG, tiene suficientes elementos del mismo como para justificar el DRM tan agresivo.

El trojano Flashback en OS X

Cesar April 7th, 2012 internet, sistemas operativos 1 comentario

Mucha tinta virtual se ha regado en estos últimos días sobre el trojano que ha logrado infectar a más de 600,000 Macs en todo el mundo. Eso no sería noticia si sucediera en el mundo de Windows, pero siendo Macs que como dicen coloquialmente “no les entran virus” entonces hay alarma general entre usuarios, fanboys y haters por igual.

Hablar sobre la plataforma Mac se ha convertido (desgraciadamente) en uno de esos temas en los que tienes que tener cuidado. Es como la política, religión o el fútbol. Gente autodeclarada experta se pone a hablar sobre el tema, y el FUD llega a niveles insospechados. Esto exactamente sucede actualmente con el tema del trojano Flashback en OS X, un caldo de cultivo especial para que amantes de la manzana y enemigos de cupertino se enfrenten en alegatos interminables. En estos casos es importante ser objetivos y hablar con los hechos.

Veamos, ¿que es Flashback? Flashback es un método de entrega que depende de una vulnerabilidad en la versión de Java para OS X. Dicho de otra forma, se ha aprovechado una vulnerabilidad de Java en OS X para descargar, instalar y ejecutar un programa sin que el usuario lo sepa. El usuario primero es dirigido a un sitio Web que contiene código JavaScript, que a su vez carga un applet de Java y aprovechándose de la vulnerabilidad expuesta, este descarga un binario sin intervención del usuario. Después, el binario es ejecutado (de nuevo sin intervención) y este descarga y ejecuta el código malicioso convirtiendo a la Mac en turno en miembro de la botnet.

La vulnerabilidad es bien conocida, de hecho son dos y pueden consultarlas aquí y aquí. Las dos tienen que ver con Java Web Start (una funcionalidad para ejecutar código Java desde un servidor remoto) y la ejecución segura de applets Java. Cuando estas dos vulnerabilidades fueron cerradas en Febrero, los autores de Flashback comenzaron a utilizar otra vulnerabilidad (CVE-2012-0507) ya arreglada por Oracle (autores de Java) en Febrero, pero aún sin distribuir el parche por Apple. Recordemos que Apple ya no es el responsable de Java en su sistema operativo, dejando esta tarea a Oracle.

¿Entonces de quien es la culpa? De Oracle. Ellos son los responsables de la seguridad en Java. Flashback no ataca una vulnerabilidad en OS X, sino varias vulnerabilidades en Java que permiten la descarga y ejecución de código malicioso fuera de las restricciones impuestas (el famoso sandbox).

Apple arregló el error muy rápido. ¡Bien por ellos!. De hecho no. Apple se tardó 1 mes aproximadamente en liberar el parche creado por Oracle, y solo lo hizo una vez que la vulnerabilidad había sido aprovechada y usuarios infectados. Las razones técnicas para hacerlo (si las hay) no las se, pero lo que si se es que eso más que hacer quedar mal a OS X, hace quedar mal a Java en OS X a costa de sus usuarios. Bien sabido por todos es la negligencia de Apple por plataformas que permitan el desarrollo de aplicaciones que puedan ser ejecutadas en múltiples plataformas. La manzana prefiere el lock-in (al igual que Microsoft). Aún así, el error está en código de Oracle, y no de Apple.

Esto no quiere decir que OS X “no le entran virus” por favor no caigan en la desinformación. OS X al igual que todos los sistemas operativos del mundo son vulnerables. Las mismas precauciones deben ser tomadas por usuarios de OS X, que usuarios de Windows o de GNU/Linux.

Crónica de Yo vs. Proveedores de Internet Mexicanos

Cesar March 30th, 2012 opinion, servicios 4 comentarios

Desde que trabajo desde casa, mi conexión a Internet se volvió algo mas importante. Aunque siempre lo he considerado como una prioridad, el hecho es que ahora es aún más crítico ya que si no tengo Internet, básicamente no puedo trabajar. Hago telecommuting y no tener Internet, o no tener Internet en óptimas condiciones significa algo así como no ir a la oficina. Claro, puedo hacer algo de trabajo, pero estoy severamente limitado con mis opciones cuando las cosas no van como debieran.

Megacable
El caso es que por varias razones, mi proveedor de Internet era Megacable y por un tiempo no tuve quejas. Estaba dispuesto a tolerar sus caídas frecuentes siempre y cuando estuvieran en el rango de una vez al mes, y por períodos cortos de tiempo. Cualquier cosa por arriba de 1 hora ya se convierte en un problema. Lo que me agradaba de Megacable es que siempre estaban por encima de la competencia con respecto a ancho de banda / precio. Por ejemplo, cuando contraté lo hice con el paquete de 2 Mbps, al tiempo lo subieron a 5 Mbps y después a 10 Mbps manteniendo un costo muy similar. Pero con el incremento vinieron otros problemas:

  • Interrupciones en el servicio más frecuentes (varias veces al mes, a veces en la misma semana)
  • Ancho de banda extremadamente variado dependiendo de la hora del día
  • Dificultad para usar ciertos servicios (bloqueo de puertos, o fallos en su Web proxy)
  • Servicio al cliente muy deficiente. En repetidas ocasiones me dicen que mandarán a un técnico a ver el problema, y el técnico nunca llega

Telmex
Soy creyente de darle a una compañía en donde más le duele: su billetera. Decidí quejarme con mi dinero y llevar mi negocio a otra parte. La pregunta era ¿a donde?. La única opción viable en mi cabeza en ese momento era Telmex con su servicio infinitum; con el plus de recibir una línea de teléfono y llamadas ilimitadas a cualquier parte de México y USA, contraté el servicio de 10 Mbps con llamadas y no se que tanta cosa más. Lo que sucedió después de ahí es largo y complicado, así que lo voy a explicar con una lista en orden cronológico:

  1. Fuimos a contratar el servicio a las oficinas de Telmex. En ese momento me entregaron el modem ASDL, y me dijeron que los técnicos tardaban hasta 8 días hábiles para hacer la instalación en la casa (mi casa no contaba con instalación telefónica).
  2. A los cinco días hábiles, nos llama un técnico a preguntar si el domicilio es correcto. El domicilio estaba completamente mal, se les dio el domicilio correcto y nos dijeron que más tarde hablarían para confirmar la dirección.
  3. La llamada nunca llegó, por lo que fuimos al centro de atención donde se hizo la contratación. Nos indicaron que “hubo un error en el sistema” y capturaron mal la dirección. Por este error, se tenía que hacer una cancelación del contrato y hacer un contrato nuevo y esperar solamente tres días más, ya que me pondrían en prioridad uno.
  4. En ese momento les dije que no me interesaba su servicio. Precisamente la falta de buen servicio fue una de las razones que me hizo cambiarme de proveedor de Internet, y Telmex, desde el inicio, me estaba demostrando su incapacidad de proporcionar un buen servicio. Así que quedé de llevarles el modem de regreso y hacer como si nada hubiera pasado.
  5. Ese mismo día por la tarde (un Sábado) llegaron los técnicos de Telmex a hacer la instalación. Mágicamente no tuve que esperar tres días más, sino que ese mismo día podía quedar la instalación aunque la señal de Internet no llegaría sino hasta el Lunes. Decidí (malamente) darles una segunda oportunidad y deje que hicieran la instalación. Lo que yo quería era un servicio estable y que cumpla lo que me ofrecen y por lo que estoy pagando, no estarme peleando con ISPs. Por lo visto no puedes tener una sin la otra.
  6. Llega el Lunes y si, llega la señal de Internet. Hasta ahora todo bien. Comienzo a utilizarlo y se siente extremadamente lento. No lento, lentísimo. Inmediatamente hice una prueba de ancho de banda, y para mi sorpresa solo alcanza los 320 Kbps un servicio que supuestamente es de 10 Mbps. Confirmé este dato en la propia configuración del modem, en la información del enlace claramente dice 320 Kbps de bajada máximo.
  7. Inmediatamente fuimos a las oficinas a ver que estaba pasando, y nos informan que la colonia en donde vivo no ofrece el servicio de 10 Mbps y por esta razón tengo el servicio que tengo. Si, esto no me lo habían dicho antes. Ahora mi pregunta es: ¿Y la gente que no sabe como checar el ancho de banda? ¿Que no sabe que son 10 Mbps? Me prometieron que verían que hacer en este caso para darme los 10 Mbps, pero si es verdad que en esta colonia no se puede ofrecer el servicio de 10 Mbps es porque no existe la infraestructura para hacerlo. Jalar un cable de una colonia vecina (que fue lo que me dijeron que harían) no va a solucionar el problema, a menos que sea lo suficientemente cerca para no degradar la señal.
  8. Me dijeron que llamarían en la semana para confirmar la solución a mi problema, pero nunca llamaron. Eso si, llamaron para hacer una encuesta de calidad en el servicio (irónicamente) y después me llamaron para ver que había pasado con mi situación, y me aconsejaron muy amablemente que le diera seguimiento, que hablara a las oficinas (!) en vez de ser ellos los que le den seguimiento.

Lo que me sorprende es cómo después de todo, me llaman para decirme que “me aconsejaban que le diera seguimiento, que hablara, que insistiera”. Eso no debe ser necesario, aqui yo soy el cliente, y ellos deben ofrecerme un servicio de calidad y si no, me voy con otra empresa que si lo haga. A mi no me interesa darle seguimiento a una situación que ni es mi culpa, ni tiene por qué haber pasado. Entiendo el error en la dirección, eso nos puede pasar a todos, pero no decirme que el servicio (mas caro) que estoy contratando no existe en mi domicilio, darme un servicio más barato automáticamente sin avisarme, y después aconsejarme que le de seguimiento es completamente ridículo. Es una situación que no estoy dispuesto a tolerar.

Iusacell
Así que viendo mis opciones fui a Axtel, pero solo ofrecen 2 Mbps como máximo. Mi última opción fue Iusacell. Después de hablar con el representante de ventas, que me juraba y perjuraba que su paquete de 3 Mbps me era suficiente ya que lo hacían por fibra óptica, y explicarle que yo necesito el de 10 Mbps sin importarme si es por fibra, cable, aire, palomas mensajeras o señales de humo, me indicó que por $700.00 (más barato que Telmex) me ofrecen un paquete de 10 Mbps con fibra óptica a la casa, solo que tenía que esperar 3 días más para que entraran las nuevas tarifas y velocidades. La espera en realidad no era necesaria pero lo hicimos así ya que, de otra manera, me hubieran ofrecido un paquete de 7 Mbps por un precio un poco mayor así que esperamos. Me indicaron que fuera el tercer día temprano para que la instalación quedara ese mismo día y, para mi sorpresa, el mismo día quedó la instalación. Hasta ahora son los únicos que cumplen lo que prometen.

Después de hacer la instalación, los técnicos se retiraron y me indicaron que mandarían a alguien con el modem. Por qué no traían ellos el modem no lo se, pero les doy el beneficio de la duda ya que, hasta ahora, han cumplido con todo al pie de la letra. Si traen el modem hoy como lo prometieron, el ancho de banda ofrecido es el disponible, y su sevicio a cliente es tan bueno como el servicio de venta, seré un usuario de Iusacell feliz y contento.

Update: Iusacell cumplió. Tengo fibra óptica instalada en mi casa, a 10 Mbps instalados el mismo día que dijeron que se haría la instalación. Así si hago negocio con ellos con gusto.

Hackintosh: cómo habilitar los 2 GB en RAM en una Nvidia GT 430

Cesar March 9th, 2012 Uncategorized Haz un comentario

Llegó el momento de actualizar mi PC de escritorio, y decidí morder la manzana de la tentación y armarme una hackintosh. Después de un breve período con una computadora de las llamadas “de marca” me quedó claro que lo mio no es comprar una computadora de paquete, sino armarme una a mi imagen y semejanza… o algo por el estilo. Si alguna vez les ha entrado curiosidad por saber que ocurre en el mundo de las hackintosh, sabrán que parte crucial es seleccionar hardware que sea compatible. En mi caso:

  • Tarjeta madre Gigabyte H61M-USB3-B3
  • Procesador Quad Core i7 3.39 GHz
  • RAM 8 GB 1333 MHz DDR3
  • Video GeForce GT 430 1024 MB

Y esta última parte, el video, es de lo que voy a hablar en este post. Resulta y resalta que mi tarjeta de video en realidad tiene 2048 MB en RAM, y no 1024 como lo reporta el OS. Mi instalación de OS X Lion funciona a la perfección, si no fuera por ese pequeño detalle que no me deja dormir en las noches. No puedo concebir la idea de usar solo la mitad del RAM disponible en mi tarjeta de video, aun cuando para los propósitos que la uso (que no son propósitos gamer) funcione más que aceptable. Quartz Extreme y Core Image funcionan, los efectos de escritorio son fluídos, el rendimiento es bueno.

About this mac

La GT 430 en particular se supone que funciona sin modificación alguna en Lion, pero no fue mi caso. Estaba atorado en 1024×768 sin efectos de escritorio, lo cual apesta. Para esto seguí una guía en OSx86 que te explican como, mediante el uso de kexts modificados, puedes habilitar tu GT 430 pero con el pequeño inconveniente de que es para tarjetas de 1024 MB en RAM. Y si, efectivamente, mi tarjeta funciona como lo expliqué, con 1024 MB en RAM.

La cantidad de RAM se especifica en un archivo de propiedades en formato plist. Este formato está basado en XML y puede ser modificado con un editor de texto. El problema es que el formato define nodos que pareciera que están codificados con algún algoritmo. Se ven así:

<data>
BAAAAAAAAwAMAAAAAAAABwAAAAA=
</data>

El último signo = lo delata: es codificación Base64. Así que manos a la obra.

Si siguieron la guía de OSx86 para habilitar la tarjeta de video, entonces el archivo que contiene toda la configuración sobre nuestra tarjeta de video se encuentra dentro de /System/Library/Extensions/Natit.kext. Seleccionen el kext, y con la opción “Show Package Contents” naveguen a Contents/info.pl de tal manera que la ruta completa es:

/System/Library/Extensions/Natit.kext/Contents/info.pl

El archivo puede ser editado con cualquier editor de texto. Así que aproximadamente en la línea 61 se van a encontrar con lo siguiente:

<key>VRAM,totalsize</key>
<data>
AAAAQA==
</data>

Ese valor AAAAQA== de alguna manera sabemos que significa 1024, ya que es el valor que se le pasa al sistema operativo como VRAM. Para saber qué es realmente, hay que decodificarlo. En la terminal:

Cesars-Mac-Pro: cesar$ echo “AAAAQA==” | base64 -D > decoded

El programa base64 hace precisamente eso: codificar y decodificar cadenas usando base64, así que le pasamos el valor codificado y usamos la opción -D que es decodificar, finalmente la salida la guardamos en un archivo llamado decoded (para eso es el > decoded). Es necesario guardar la salida en el archivo porque la salida de base64 la da en formato ASCII, sin embargo eso no es lo que buscamos. Verán, los valores que vemos en el archivo plist son cadenas codificadas en base64, pero de datos en hexadecimal y no valores ASCII como lo interpreta la salida de base64.

De hecho, si vemos el archivo decoded:

Cesars-Mac-Pro: cesar$ cat decoded
?Cesars-Mac-Pro: cesar$

¿Ven el signo ? que se agrega al inicio de la segunda línea? Ese es el contenido del archivo decoded. Bueno, de hecho ese es el único caracter imprimible del archivo decoded, en realidad hay otros 2 bytes que no se traducen a nada en ASCII, y por lo tanto no son imprimibles. Para ver el contenido en hexadecimal como nos interesa está hexdump en la terminal:

xxd decoded
0000000: 0000 0040 …@

Como vemos, el valor son 4 bytes: 0000 0040. Ese 0040 es el que debemos cambiar. ¿Pero por cual valor? Un poco de zen cracking me dice que por 0000 0080 ya que 8 es el doble de 4, y 2048 es el doble de 1024. Pero necesitamos mayor evidencia antes de hacer un cambio de este tipo, y gracias a la comunidad hackintosh todo se aclara en http://forum.netkas.org/index.php?topic=222.0

32 – 0×02000000
64 – 0×04000000
128 – 0×08000000
256 – 0×10000000
320 – 0×14000000
512 – 0×20000000
640 – 0×28000000
768 – 0×30000000
1024 – 0×40000000

Estos son los posibles valores para el tamaño de la memoria, pero solo llega hasta 1024. Siguiendo la lógica:

512 – 0×200
1024 – 0×400
2048 – 0×800

Así que ya tenemos confirmación. Ahora tenemos que editar el archivo decoded pero en hexadecimal. Yo uso un editor llamado Hex Fiend pero pueden usar cualquier editor hexadecimal (como 0xED) y cambien ese 0040 por 0080, de tal manera que cuando verifiquen en la terminal de nuevo, salga algo como lo siguiente:

xxd decoded
0000000: 0000 0080 ….

Ahora lo que resta es codificarlo de vuelta a base64 y ver que tenemos de regreso. En la terminal:

base64 -i decoded -o result

Lo que nos da finalmente el resultado que buscamos:

cat decoded
AAAAgA==

Esa cadena, AAAAgA== es la que tenemos que poner en vez de AAAAQA== ¿Pero en donde? en Natit.kext, sin embargo tenemos que hacer el cambio en el kext que aún no se encuentra en /System/Library/Extensions/ o sea, el que descargaron originalmente. Supongamos que descargamos el paquete de la guía de OSx86 a nuestro directorio home, entonces tendremos algo como:

~/[NEW]GT430[1GB].by.KemalALKIN/[NEW]Natit/Natit.kext

Y ese es el kext que debemos editar. Una vez editado, ejecutamos ka Kext Utility (también incluída en el paquete), reiniciamos y eso es todo.

About this mac

La importancia del Distributed Hash Table y los Magnet Links

Cesar January 21st, 2012 ciencia, internet 4 comentarios

… O por qué el .torrent debe morir y dar paso al siguiente escalón evolutivo.

Recientemente The Pirate Bay, uno de los sitios con más cojones que existe en el planeta, anunció que relegaría el uso de archivos .torrent y se enfocaría principalmente en los llamados magnet links. Sus argumentos son muy válidos, e inmediatamente se dejaron venir olas de desinformación. Que si The Pirate Bay habían doblado las manitas y cedieron ante la presión de alguna organización. Que si SOPA. Que si PIPA. Que si es el fin del mundo como lo conocemos, o por lo menos del P2P facilitado por el protocolo Bittorrent.

Nada de eso puede estar más alejado de la verdad. Como todo, el uso de la Distributed Hash Table (DTH) y Magnet Links sobre los ya tradicionales archivos .torrent tiene sus ventajas y desventajas que es lo que precisamente vamos a explorar aquí.

Durante mis estudios de maestría, hice investigación en el tema de las redes inalámbricas de sensores (WSN por sus siglas en Inglés) y cómo múltiples dispositivos de bajo poder de procesamiento, podían colaborar para cubrir una área extensa. Esto tiene retos interesantes muy bien documentados en la literatura, pero una de las cosas que más llamó mi atención es la diseminación de datos entre los pares que forman la red. Estamos hablando de una red creada impromptu, sin infraestructura previa, que necesita compartir datos de manera continua. Tal vez definirla como una red P2P tenga sentido, pero quiero dejar al lado las connotaciones negativas que arrastra este término, similar a lo que sucede con “Pirata” o “Nazi”. Leer el resto de este post.

G&R Labs: Rocksmith (PS3)

Cesar November 21st, 2011 G&R:L, entretenimiento, gadgets 1 comentario

Rocksmith que promete ser la evolución natural de los juegos de ritmo, con una diferencia muy interesante: el gancho no son trofeos virtuales, o un 100% en la dificultad más alta. El gancho y recompensa es el aprender a tocar la guitarra.

Apenas llevo un día con el juego/tutor de guitarra y esta es mi experiencia con la versión para PS3. Lo primero que haces es meter el juego en la consola y… claro, hay que descargar una actualización. 11 MB después ya puedes ver la pantalla de inicio del juego, que incluye un video en donde se ve a una persona tocando la guitarra nota por nota empezando en un nivel muy básico y progresando hasta un nivel decente, lo cual en la vida real lleva años de práctica y dedicación. El video hace un buen trabajo en animarte a tomar el juego y dedicarle tiempo, hype si asi lo quieren.

Lo que sigue es conectar la guitarra. El paquete del juego incluye instrucciones de como es mejor conectar todo para evitar el lag, desde los pickups de la guitarra hasta las bocinas de la TV o el sistema de sonido que tengan conectados a la TV. La mejor opción es usar HDMI para el video, pero solo para el video. El audio conectarlo ya sea por cables compuestos, y de preferencia a un teatro en casa o sistema de sonido externo. En mi caso lo tengo conectado de la salida óptica del PS3 al sistema de sonido externo, y el lag es práticamente negligible.

El paquete incluye el llamado Real Tone Cable, que es el que conecta la guitarra a la consola. La longitud del cable es adecuada, y se siente bastante profesional, no como algo de juguete. Si creían que no se podía tener más periféricos, esperen a tener una guitarra real conetada a su consola. Al inicio del juego te indica que no conectes nada extra entre tu guitarra y la consola, es decir el cable debe ir directo de la guitarra al PS3. Después te pide que selecciones entre derecho o zurdo y si el headstock de tu guitarra es de 3+3 o de 6 en línea, con imágenes descriptivas por si no sabes de lo que estoy hablando.

Entonces si, viene lo bueno. Primero te dice como agarrar el pick, pero como en 2 segundos lo cual no es suficiente porque siendo un novato tienes muchas dudas sobre cual es la manera correcta de agarrarlo, o por lo menos así fue en mi caso. Luego te indica el concepto de nota, fret, nota abierta y te hace tocar un riff, que luego te das cuenta que es el famoso riff de (I can’t get no) Satisfaction por los Rolling Stones, así que si conoces la canción te emocionas porque crees que ya sabes y estas listo para rockear a lo grande.

El juego es difícil, pero así es como debe de ser. Aquí no puedes aventarte una canción sin conocerla y sacarla perfecta como en Guitar Hero o Rock Band. Recuerda que estas tocando guitarra real, así que lo mas recomendable es ir paso a paso, practicar la canción hasta que los riffs y los acordes salgan decentes y de hecho te memorices las partes, de otra manera es casi imposible improvisar y mover tu mano a los frets correspondientes.

En mi caso tuve algunas ocaciones en las que el juego no detectaba correctamente la nota. Es decir, el juego me pedía el tercer fret de Mi (o la cuerda E para los gringos) y presionaba eso precisamente, pero el juego lo detectaba como una nota más arriba, o más abajo, lo cual hace las cosas muy frustrantes. En modo práctica pasa más seguido al grado que hace imposible pasar la práctica. Leyendo en los foros me entero que la tonalidad puede afectar, o el treble, así que intentaré moverle a todos los switches y potenciómetros de mi guitarra a ver si puedo arreglarlo. Me gustaría tener la oportunidad de probarlo con otra guitarra, a ver si el efecto es el mismo.

Cuando menos lo pensé, ya tenía 2 horas de práctica en la guitarra. Creo que Rocksmith cumple con su cometido de una manera excelente. Falta ver los resultados, pero en un par de iteraciones más, yo veo una potencial revolución en la manera en la que se enseña a tocar guitarra. Si se complementa con algo más serio como videos que muestren técnicas al tiempo que el software califica tu ejecución, creo que existe la posibilidad de lecciones interactivas que no aburran.

¿Veredicto? Si son aficionados a la guitarra, probablemente ya tengan una en su casa. Si nunca han podido dominarla y solo la tienen agarrando polvo, van a disfrutar mucho Rocksmith. No es un juego de fiesta como Guitar Hero o Rock Band, necesita tiempo y dedicación. Piensen en Rocksmith como lecciones virtuales entretenidas.

Rock on!

Posts anteriores