Archivo de Enero 2007

¿Windows Vista? ni crackeado

Miércoles, 31 de Enero de 2007

Alex Ionescu, un investigador de seguridad en Montreal, ha publicado detalles acerca de cómo saltarse el sistema DRM de Windows Vista y poder obtener una copia a plena resolución, no encriptada y en alta definición de cualquier contenido originalmente sujeto a las restricciones impuestas por el sistema operativo.
[…]
La idea es evitar las firmas digitales requeridas para la instalación de dispositivos, e inyectar un código que permita el desvío de la salida de señal a algún otro dispositivo, o a un archivo, generando una copia limpia (nunca mejor dicho lo de “limpia”). Pero Alex, de hecho, ha conseguido incluso saltarse la protección sin necesidad de inyectar el driver adicional, haciendo que el sistema parezca seguro a todos los efectos, cuando en realidad ya no lo es.

Vía, vía. Más información: Alex Ionescu

Los usuarios que por alguna razón no tengamos más remedio en el futuro que pasarnos a Windows Vista tenemos un comodín. Sinceramente, lo sospechaba: si se saltaron la encriptación de los DVD como tantas otras ¿cómo iban a resistirse a la tentación de conseguir saltarse la protección de Windows Vista?
De todas formas, creo que saltarse el DRM no evitará los requerimientos brutales de hardware. Quizá dentro de unos años (recordemos que el usuario de a pié no se cambia de SO hasta que pasa un año o dos), tengamos de serie un hardware que haga correr Windows Vista con el mismo rendimiento que ahora Windows XP. Sin embargo, ¿merecerá la pena?

En bicosyes han traducido parte de un artículo que evalúa Windows Vista en tomshardware

Windows vista no es claramente una gran mejora en cuanto al rendimiento cuando se trata de ejecutar aplicaciones usuales.
(…)
En general, las aplicaciones rinden como se espera o levemente más lentas que bajo Windows XP. (…). También nos hemos encontrado con algunos programas que se negaban a funcionar, y otros parecían causar problemas al inicio, pero finalmente funcionaban.

Hay algunos programas que muestran gran empeoramiento de su rendimiento. Unreal y blablalba sufren fuertemente la falta de soporte para OpenGL en Windows Vista. Esto es algo que esperábamos, y claramente no aconsejamos reemplazar XP por Vista si necesitas correr software profesional de aplicaciones gráficas.

Estamos decepcionados que aplicaciones intensivas en CPU, como codificación de video con XviD o [otra similar menos conocida] hayan obtenido unos resultados entre 18% y 24% más lentos. Ambas pruebas han terminado mucho más rápido bajo XP. No hay nuevas versiones disponibles y no vemos una solución inmediata a este tema [el de codificación de video y audio vamos…].

Conclusión. Personalmente, ni crackeado me lo pongo.

No uses Windows Vista

Martes, 30 de Enero de 2007

El sistema DRM negociado por las multinacionales con Microsoft impone limitaciones agresivas en el hardware a la hora de reproducir contenidos supuestamente susceptibles de ser copiados.
Las salidas digitales de audio y video que no vayan cifradas (como audio S/PDIF o vídeo DVI) se veran mermadas drásticamente en su calidad con el fin de que no puedan ser grabadas.

En primer lugar, Vista disminuye la funcionalidad del hardware en muchos niveles. Si estás disfrutando de contenido “protegido” (un HD-DVD o Blueray, por ejemplo), Vista te desactiva ciertas salidas de audio, como la S/PDIF, la más utilizada (dicen) por profesionales de audio. ¿Por qué? Pues porque S/PDIF es una conexión que no protege los contenidos, alguien podría grabar sonido de alta calidad por ahí.
[…]
Si quieres ver un HD-DVD necesitarás un tipo de conector que cifra los datos por el cable. Si tienes un LCD normalito y corriente con tu conexión DVI, como el que tenemos todos, Windows Vista te reducirá la resolución y empeorará la calidad del video.
[…]

badvista.jpg

¿Que utilizaremos si no podemos utilizar hardware normal? Pues necesitaremos hardware específico con capacidades DRM.
Los dispositivos estarán forzados a detectar pequeñas variaciones de corriente anormales. Deberan cambiar ciertos bits cuando las detecten, y cuando Vista vea que esos bits han cambiado, desactivará las salidas o empeorará la calidad de la reproducción del contenido “protegido”. Todo esto implicará mayores costes en diseño, materiales, testeo, chips de cifrado, haciendo que el hardware sea más caro.
[…]
Tu hardware podrá dejar de funcionar sin previo aviso. Todo lo dicho anteriormente requerirá que los fabricantes de hardware pasen ciertas pruebas para que Microsoft compruebe si sus dispositivos protegen los contenidos como dios manda. Necesitarán pasar estas pruebas para que Microsoft les firme los drivers y poder asi instalar los drivers en Vista
[…]
Por si todo esto no fuera suficiente, hay que tener en cuenta los costes del cifrado, en terminos de pérdida de rendimiento y sus consecuencias económicas. Por ejemplo, todos los contenidos que se envien a los dispositivos de video tendrán que estar cifrados con AES-128. A día de hoy las CPUs normales y corrientes no son capaces de cifrar con AES-128 y en tiempo real el ancho de banda utilizado en videos de calidad tipo HD-DVD, asi que habrá que añadir chips de cifrado adicionales - más costes. Y más espacio, que reducirá el espacio de silicona que se dedica a partes del chip que aumentan el rendimiento gráfico.
Para asegurarse de que todo está bien, Windows Vista mirará cada 30 milisegundos los bits de los dispositivos citados anteriormente, para ver si han detectado variaciones de corriente o algo anómalo, y poder restringir el uso de los contenidos protegidos en consecuencia. Polling puro, duro y absurdo, por cierto.

badvista_no_littering.png

(Texto completo en Do’h: ¿Que ocurre con Vista y el DRM?

Indignante y preocupante. Ya existen algunos movimientos anti DRM como el de defectivebysegin o badvista que intentan divulgar y concienciar a todo el mundo sobre el peligro que supone migrar a Windows Vista, las limitaciones de hardware y del derecho a utilizar tu propio equipo para lo que desees bajo tu riesgo sin que ningún so o software te lo impida “por si acaso”, como hace Windows Vista.

Ya sabes: no uses Windows Vista.

Más información en Kriptopilis y SubSónica

Diccionarios de objetos

Martes, 30 de Enero de 2007

Una de las partes más importantes de un aventura conversacional pura (de las que hay que teclear las ordenes) es la gramática que acepta el juego. Por un lado están los verbos, preposiciones, determinantes, que son los que forman las estructuras de las frases y por otro lado están los nombres de los objetos (ya sean personajes animados, decorado u objetos manipulables por el jugador).
Ya desde los primeros parsers se utilizan sinónimos para los objetos, de manera que el jugador pueda referirse a un objeto concreto usando varios nombres.
Por ejemplo Inform/Informate utiliza varios nombres para un mismo objeto que pueden utilizarse a la vez. De manera que el jugador puede utilizar cualquiera de ellos e incluso varios a la vez para referirse a un objeto. Por ejemplo, un objeto definido en Inform como

nombre 'tomate' 'verde' 'frito'

Podrá ser referido como “tomate verde”, “verde frito” y “frito tomate”.
El parser que estoy desarrollando esta basado plenamente en Inform, de manera que cualquier programador que conozca este lenguaje tan solo tenga que aprenderse las correspondencias de un lenguaje al otro. Sin embargo, hay algunas cosas que he cambiado, como el tratamiento de nombres y sinónimos.
Quería que el jugador pudiera referirse a los objetos con muchos nombres y combinaciones, pero no quería que pudiese teclear cosas que pueden ser absurdas. Así que utilicé la siguiente nomenclatura.

  • Si una palabra aparece aislada, es obligatoria.
  • Si una palabra aparece con una interrogación al final “?”, es opcional.
  • Si varias palabras aparecen separadas por una barra, es obligatorio utilizar una de ellas.
  • Si varias palabras aparecen separadas por una barra y con una interrogación al final, es opcional utilizar solo una de ellas.

Así, un ejemplo básico sería:

palabra1 palabra2? palabra21|palabra21 palabra3|palabra4?

De manera que la palabras 1 es obligatoria; la palabra2 es opcional; con las palabra21 y 22 es obligatorio utilizar una de ellas; y las palabras 3 y 4 son opcionales, pero sólo se puede utilizar una a la vez.
Así, se pueden crear nombres compuestos de una manera fácil:

nombre tomate verde? frito?

Nos dará como resultado todos los siguientes nombres válidos: “tomate”, “tomate verde”, “tomate frito” y “tomate verde frito”, pero no aceptará “verde” o “frito tomate” como nombre válido.
Podemos ir más allá, y utilizar nombres más complejos:

nombre estatua|estatuilla|figura de? color? azul|azulado?
nombre zapato|zapatos? deportivo|deportivos para correr

Si este sistema te parece interesante, te diré que en Java es muy fácil de programar. Más que nada porque el código que te trata una definición de nombre de este estilo y te devuelve un conjunto (Set) con todos los posibles nombres que coinciden con el objeto de la definición te lo adjunto aquí.
Si alguien lo consigue mejorar u optimizar, que me lo envíe y lo publico.

private static Set multiply(String wordName) throws AdvParserException {
    Set oldSet = new LinkedHashSet();
    boolean first = true;
    boolean allOptional = true;
    for (StringTokenizer stringTokenizer = new StringTokenizer(wordName); stringTokenizer.hasMoreTokens();) {
        String v = stringTokenizer.nextToken();
        boolean optional = false;
        if (v.endsWith("?")) {
            optional = true;
            v = v.substring(0, v.length() - 1);
            if (first) {
                oldSet.add("");
            }
        } else {
            allOptional = false;
        }
        if (!first) {
            oldSet.remove("");
        }

        Set newSet = new LinkedHashSet();
        for (StringTokenizer stv = new StringTokenizer(v, "|"); stv.hasMoreTokens();) {
            String part = stv.nextToken();
            // Si tenemos conjunto anterior, le añadimos a cada una de las partes el token actual
            if (!oldSet.isEmpty()) {
                for (Iterator i = oldSet.iterator(); i.hasNext();) {
                    String oldPhrase = (String) i.next();
                    newSet.add((oldPhrase + " " + part).trim());
                }
            } else {
                newSet.add(part);
            }
        }
        if (optional) {
            newSet.addAll(oldSet);
        }
        oldSet = newSet;
        first = false;
    }
    if (allOptional) {
        throw new AdvParserException("Todas las palabras no pueden ser opcionales [" + wordName + "]");
    }
    return oldSet;
}

Espero que a alguien le sirva de utilidad para el desarrollo de una aventura o para cualquier otra cosa.

Ascensor de trabajo

Viernes, 26 de Enero de 2007

Entró a trabajar en la empresa y, como no quedaba sitio, lo instalaron en el ascensor. Allí se quedó, en un rinconcito con un pequeño pupitre. Quienes subían y bajaban se extrañaron al principio, pero con el tiempo se acostumbraron. Le hacían bromas, intercambiaban confidencias, y cuando volvían de almorzar le traían un croissant. Pero sus superiores se quejaban. Decían que se distraía demasiado y que le costaba concentrarse en su trabajo. Vino a verle el jefe de personal, y en el tiempo que se tarda en ir desde el primer piso hasta el último, le comunicó que estaba despedido.

Un cuento tan ficticio, que es casi real. Un cuento más de cien palabras creado por Jordi Cebrián

Aventuras online

Viernes, 26 de Enero de 2007

En un post anterior, comento que en Septiembre de 2006 inicio un nuevo proyecto de parser online para realizar aventuras conversacionales. Sin embargo, se me olvidó mencionar que la inspiración (o la idea inicial) vino al ver esta aventura online: Yasmina’s quest. Pese a que se creó en el 2005, yo no la conocí hasta Septiembre de 2006, cuando apareció en Vida extra, de ahí que comenzara este desarrollo. Desde aquí quiero agradecer al autor Juan Alba Maldonado por haber sido inspiración en este proyecto mio que tengo entre manos.
Sin embargo, no mencioné esta aventura porque no la consideraba un parser, sino un juego desarrollado en php. El propio autor me comenta que en su segunda versión de este motor (con el que se hizo La Villa del Seis) si que se pueden desarrollar nuevas aventuras. Sin embargo, requiere codificación en php para definir objetos, localidades y, supongo (dado que no tiene documentación) los puzzles también. Por esta razón no mencioné ni a Yasmina’s Quest ni a la Villa del seis como parsers del tipo Paws, Inform, TADs o Hugo. Sin embargo, no deja de ser una herramienta con la que crear juegos ¿qué más da que no acepte una gramática configurable de frases de entrada (parser) o que para desarrollar requiera conocer php? ¿por eso va a ser menos? al fin y al cabo cumple estupendamente su función: crear aventuras online. Y por eso se merece una mención especial siempre que hable de mi proyecto: porque Yasmina’s Quest fue la primera aventura conversacional online y porque si no lo hubiera visto en septiembre de 2006, ahora mismo no estaría hablando de esto, sino de cualquier otra cosa. De nuevo: gracias Juan. :-)
(Creo que no hay más juegos desarrollados con este motor salvo los que el propio autor ha creado. Si alguien conoce alguno o desarrolla algo que me lo envíe. Ahora amiguitos, ¡a jugar!)

Those simple steps are never so simple

Jueves, 25 de Enero de 2007

Sacado de Indexed

card614.JPG

Cómo hacer un parser de aventuras conversacionales (I)

Miércoles, 24 de Enero de 2007

Introducción
Desde hace ya algunos meses llevo metido en un proyecto personal creo que bastante interesante. Se trata de un parser de aventuras conversacionales. Si, esos juegos que solo tienen texto y que para jugar, es necesario introducir órdenes del tipo “examinar caja, este, coger linterna, oeste, abrir puerta, norte, bajar escalera, encender linterna, comer manzana”. Si todavía no sabes lo que es, puedes ver una reseña sobre “La aventura Original” aquí. Y ya para rematar sobre cómo se juega, la guia paso a paso y solución completa al Don Quijote aquí.

Y es que estos tipo de juegos son muy entrañables. Al no poseer gráficos (al menos, no como parte fundamental del juego, sino a modo anecdótico como decoración), su potencial se basa en la parte narrativa.

aven-ad1.gif

Al igual que un libro crea personajes y situaciones en nuestra imaginación, la literatura de la aventura conversacional nos transporta más allá de las letras para meternos en el papel del protagonista que interpretamos.

El género de la aventura conversacional
Jugar a una aventura conversacional no te deja indiferente: o las odias (no tienen gráficos, hay que teclear y te aburres) o las amas (en el sentido en el que alguien puede amar algún tipo de juegos).
Hubo un tiempo hace años, muchos años, en el que los ordenadores de 8 bits reinaban. Estos ordenadores tenían muy pocos recursos (en comparación con los de ahora) y las compañías de videojuegos creaban este tipo de aventuras. Pero hoy en día, ya no es negocio. Nadie paga por una aventura conversacional, ni nadie cobra. Los jugadores de antes son los autores de ahora, que con los nuevos parsers pueden crear más y mejores aventuras que las de entonces.
No es un genero muerto, pero si en peligro (al menos en el mundo de habla hispana, ya que la aventura de habla inglesa es realmente potente). No de extinción, ya que los que ya pertenecen a algún tipo de club de amantes de la aventura no van a dejar de serlo, pero es necesario que la gente conozca y juegue estas aventuras para asegurarnos que siempre permanezcan. Pero, ¿cómo hacerlo si las grandes compañías hace tiempo que ya no desarrollan estos juegos? ¿tiene el genero suficiente potencial como para subsistir por sí mismo sin necesidad de grandes producciones? Yo creo que sí, pero ¿cómo? pues jugando aventuras, creando aventuras, creando competiciones de aventuras y, claro está, creando parsers.

Parsers
Muchos parsers han nacido desde entonces y otros muchos han muerto también. Algunos todavía duran en su versión de 8 bits, que algunos autores utilizan en emuladores de Spectrum, como Paws. Otros, como Inform, Adrift, TADS, presentan nuevas formas de crear aventuras más modernas. Aunque todas en ingles, por suerte tenemos dos buenas traducciones de Inform (el parser a mi entender más potente y más extendido) al castellano llamadas InformATE e INFSP

Entonces, crear un nuevo parser para realizar este tipo de aventuras ¿va a ayudar a la aventura conversacional hispana? No lo sé con exactitud, pero el enfoque de parser que estoy desarrollando así lo pretende. Llevo desde septiembre del 2006 programándolo y puedo decir que está bastante avanzado. No he querido hablar de ello antes por miedo a abandonarlo antes de acabarlo, como ha ocurrido con otros (por ejemplo, la programación de un juego de estrategia online basado en turnos, que en la actualidad está abandonado).
¿Y cual es este enfoque? La divulgación masiva de la aventura conversacional. Hasta ahora, las aventuras se crean en un ordenador, se compilan, se distribuyen y se juegan en el ordenador de cada jugador. Si son autónomas, se ejecutarán directamente, sino, deben utilizar una máquina virtual, intérprete, kit de jugador o similar para arrancarlas. Demasiados pasos para una persona que nunca ha jugado una aventura.
Sin embargo, ¿qué pasaría si con hacer click en una dirección te llevara a una página donde pudieras jugar a una aventura? No lo sé, pero voy a intentar comprobarlo.

Parte técnica
El parser que estoy desarrollando (lo siento, todavía no le he puesto un nombre ¿alguna sugerencia?) es completamente online: tanto para crear como para jugar las aventuras, tan sólo hace falta un navegador con Javascript.
Sí, ya sé lo que estáis pensando: existen intérpretes de máquina Z en formato Applet Java, lo que permite jugar aventuras hechas con Inform en una página web. Pero no es lo mismo, yo pretendo ir más allá: el interfaz es html puro con todo lo que ello conlleva: css, texto, imágenes, javascript, flash, lo que sea. La actualización se hace directamente en el DOM de la página con Ajax por detrás (en concreto, usando Prototype). El servidor guarda las aventuras y las partidas. Ejecuta cada juego, recibiendo las ordenes enviada por todos los jugadores a la vez y enviandole a cada uno el resultado de su acción. Con la creación de aventuras sucede lo mismo: no hay compilador, el código se edita directamente en una página y lo compila el servidor. Como veis, un enfoque bastante distinto al del applet de la máquina Z.
Esta desarrollado en Java (servlets y JSP) y por ahora no utiliza base de datos, pero creo que será necesario utilizar una para guardar los usuarios (hasta ahora todo se guarda en ficheros en disco). Dado que el parser esta realmente avanzado, en sucesivos posts iré comentando como lo he desarrollado, que problemas he tenido y como he enfocado todo el desarrollo.

Espero que a los amantes de la aventura les guste y les motive incluso a crear sus propios parsers. Y si no te gusta la aventura, pero te gusta programar, también te gustará. Hablaré de parseo de frases, diccionarios de palabras, ejecución de eventos, mundos virtuales con objetos contenedores donde meter o poner encima otros objetos, conversación con personajess, desarrollo de puzzles, interacción Ajax con Json para el envío de peticiones sin refrescar el navegador, software de Wikis para acometer la monolítica tarea de documentar el parser y, como no, sobre los problemas al crear tu propio lenguaje.
Espero que os guste mi aventura sobre cómo crear un parser de aventuras. Dentro de muy poco, mucho más.

Más información:

Como empezó la SGAE

Miércoles, 17 de Enero de 2007

“Aaaaah… si me dieran 10 céntimos por cada….”




Video en Youtube, vía Olea

Dorkbot#17 este sábado 20 de Enero en Madrid

Miércoles, 17 de Enero de 2007

BEGIN TEXTO BPRRRPIPPPIIIIIIIII!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Dorkbot Madrid #17
Gente que hace cosas raras con electricidad.

20-01-2007, de 19.00 a 21.00 horas + fiesta loca pero dentro de un orden

OJO: NUEVO HORARIO DE SABADO!

Ladinamo, Calle Mira el Sol, 2.
<Metro> Lavapiés, Latina, Tirso, Embajadores

// Karamaku
Robots en 10 minutos. Fabricación de robots en directo.

// Henrik Feldmann
Interactivos ambientales.

// McPolu
Trabajo en curso: cómo montar un ordenador de DNA.

// Bolas Extra (Opendorks):

+ Propón tu propio Opendork: dorkbotmadrid@dorkbot.org

Presenta: Murphy Karamaku. Arriman el hombro: otros alegres miembros de la tribu dorkbótica. Control remoto de la página web y el correo por MC Kandinski.

Albergado por LaDinamo, concretamente los inestimables Edu y Vannesa.

// Infórmate:

Más información en http://dorkbot.org/dorkbotmadrid/… mañana mismo!

// Convocatorias:

Si este correo te llega reenviado de un amigo, puedes suscribirte a nuestra lista de convocatorias en:
http://dorkbot.org/mailman/listinfo/dorkbotmadrid-convoca

// Charla inane:

Y si quieres tener con quien hablar de cosas dorkboticas, te puedes suscribir a nuestra lista de discusión y charla en:
http://dorkbot.org/mailman/listinfo/dorkbotmadrid-charla

END TEXTO BRIIIPPRRIPIPIPIIIIIIIIII!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Me he enterado en Rinzewind)

Minuscule the ladybug

Miércoles, 10 de Enero de 2007

Por Hélène Giraud y Thomas Szabo.
Si alguna vez has visto volar a una mariquita a cientos de centímetros por hora delante de una decena de mosquitos cuan Luke Skywalker sobre la estrella de la muerte perseguido por una decena X-Wing, entonces este es tu corto. ¡Genial!



Vía 86400