30 diciembre 2005

Ya disponible la primera tostadora BLU RAY

Pioneer ya tiene disponible la primera grabadora de BR del mercado (que también graba DVDs), la BDR-101A, adelantandose a su fecha de salida en el 2006. Se allana el camino para los futuros dispositivos Blu Ray Disc, incluida la Ps3 de Sony (y yo que creía que los juegos de Ps3 no se podrían pirtear en una temporada por lo del disco...)


De: Gizmoodo

26 diciembre 2005

Flash Lite 2.0

Frente al ya anticuado Flash Lite 1.1 (aunque soportado por muchos terminales), Macromedia presentó hace un tiempo las características de lo que será la segunda versión para terminales móviles. Estos son los puntos que se han revelado:
  • Código basado en Flash 7 con ActionScript 2.0. En el Flash Lite 1.1, teníamos una sintaxis basada en Flash 4, teniendo que utilizar el comando tellTarget en vez de la sintaxis por puntos. Este es el cambio más importante.
  • Reproducción de video. A través del propio hardware del móvil, se podrá reproducir cualuquier video que el dispositivo sea capaz de visualizar.
  • Parseado de XML externo. Se podrán cargar y parsear XMLs.
  • Posibilidad de guardar datos de manera persitente en el dispostivo.
  • Carga de imágenes y música externas, lo que facilitará crear aplicaciones más grandes y personalizables.

De: Macromedia

¿Podrá Java reemplazar a C++ como lenguaje de programación de juegos?

Chris Melissinos es el encargado en Sun de llevar todo lo referente al uso de Java para juegos. En esta entrevista Crhis habla del estado actual del uso de este lenguaje en cuanto a la creación de juegos: el uso de las últimas tecnologías 3D, su uso en las futuras consolas y en los terminales móviles.

Las cosas están mucho mejor que hace unos años, pero aun parece dificil que este cambio se produzca...

Nuestras amigas, las Expresiones Regulares (I)

Expresiones regulares o también llamadas a menudo RegExp. Odiadas por muchos, amadas por unos pocos que saben utilizar su poder. Y es que dentro de esa mascara de dificultad o ilegibilidad se esconde un gran potencial.

El origen de las RegExp está en la teoría de autómatas y lenguajes formales, una parte no demasiado sencilla del álgebra que acompaña a cualquier carrera de informática que se precie. Por ello, y por que su notación en ordenador no es demasiado legible, no tienen muy buena fama entre quienes no las conocen.

Según la definición de la Wikipedia, una expresión regular es una cadena que describe un conjunto de cadenas, de acuerdo con unas reglas sintacticas. Comenzaron a usarse en el mundo de la informática dentro de las primeras y potentes aplicaciones del sistema UNIX (por ejemplo el comando grep).

Prácticamente cualquier lenguaje de programación actual cuenta con RegExp en su sintaxis o en sus librerías básicas (menos algunos que se resisten, como el infame Objective-C).

Hoy en día la sintaxis UNIX está anticuada, la más popular y utilizada es la PCRE (Perl Compatible Regular Expression); que como su nombre indican, estan implementadas dentro del lenguaje Perl. Estas son en las que nos centraremos.

Los usos de las RegExp son muy variados, ya que nos permiten tanto validar la estructura de una cadena (pej, un e-mail o fecha, o cosas mucho más complejas) o extraer información (pej, del log de un programa). Incluso podemos utilizarla para describir algun lenguaje de script sencillo, sino queremos crear un compilador completo (y ni así nos libraremos de definirlo con RegExps).

Comencemos con la práctica. Como se menciona en su definición, una RegExp no es más que una cadena con una sintaxis especial. Así, unos cuantos símbolos clave:
  • ^ para indicar un comienzo de linea
  • $ para indicar el finald e una cadena.
  • . para cualquier carácter único.
  • * indicamos una repetición de un elemento 0 o más veces.
  • + indicamos una repetición de un elemento 1 o más veces.
  • \t indica un tabulador
  • \w indica cualquier carácter que pueda formar parte de una palabra
  • \s indica un espacio, tabulador o salto de linea
  • \d indica un dígito
(los tres últimos en mayúscula (\W, \S, \D) indican justo lo contrario)

Así, por ejemplo, una expresión regular que indique una línea con tres caracteres sería "^...$". Si queremos una RegExp que encaje con una cadena que tenga 3 palabras en una línea podemos usar "^\w+ \w+ \w+$". Existe toda una sintaxis compleja que nos permite reconocer cualquier tipo de patrón (bueno, cualquier tipo de patrón que pueda resolver un autómata finito). Para ello, mejor consultar una manual de PCRE.

Estás RegExp nos permiten saber si otra cadena encaja con unas condiciones. Pero las expresiones regulares no solo permiten comprobar, también podemos obtener información de ella. Como en la RegExp "Busco esta informacion :(.*)". Utilizando los parentesis, podemos extraer la información de cada encaje que produzca la RegExp y se encuentre dentro de los parentesis.

Bueno, esto ya se esta haciendo muy largo. En el siguiente post sobre las RegExp, explicaré como usarlas dentro de Perl y de Java, con algún otro ejemplo más concreto. Mientras tanto, podeis echarle un vistazo a los links.

Links de interes
Wikipedia
PCRE Workbench, para prácticar con RegExp
Perl Regulars Expression

23 diciembre 2005

El Yonah, primero en PC

http://www.apple.com El primer sistema en utilizar el nuevo chip de Intel al final no sera Apple, sino Nec. Recientemente ha presentado su portatil Lavie RX LR900, de gama 'alta' (Y225.000, 1.700€ aprox.).

Sus prestaciones, además del nuevo procesador son pantalla de 14.1", 100mb HDD, Bluetoth, wi-fi, grabadora DVD y tan sólo 512mb de RAM.

Recordemos que el mercado japones, la presencia de PCs de marca (tanto en portatiles como sobremesa), no solo clónicos es muy importante, siendo Nec dueña del 20% de ese mercado.

De: Digital World Tokyo

22 diciembre 2005

Pequeño tamaño, gran potencia

TinyApps.org es un recopilatorio de apliaciones de pequeño o muy pequeño tamaño y gratuitas; pero de gran potencia y utilidad. Se encuentran clasificadas por areas de utilización, y incluso tiene una sección para MacOS y PalmOS. Merece echarle un vistazo, se encuentran muchas aplicaciones desconocidas y ligeras, pero que pueden solucionarnos grandes problemas. Como dice su eslogan "Small is beautiful".

Ejemplos de programación

En esta web podeis encontrar ejemplos de programación en más de 100 lenguajes diferentes. La mayoría de las veces los ejemplos se limitan a el típico "Hello World!", pero es curioso ver muchos lenguajes casi desconocidos o que se quedaron por el camino; y sobretodo la evolución a lo largo de los años.

Recomiendo el Hello world en BrainF*ck.

21 diciembre 2005

Cocoa en Objective-C

Detras del gran sistema operativo que es MacOs X se encuentra su API nativa de programación, Cocoa. Aunque hay alternativas, Objective-C es el lenguaje principal de programación de esta API, y es la gran apuesta de Apple para la creación de aplicaciones para su flamante sistema operativo.

Pero, ¿qué es Objective-C? Este lenguaje es un gran desconocido para todos aquellos que no han tocado un Mac. Y ya no digamos de Cocoa. Objective-C (Obj-C) es una extensión C para añadirle objetos; es, digamos, como C++, pero hecho de otra manera. En este caso la sintaxis elegida es similar al Smalltalk, el primer lenguaje orientado a objetos.

Aunque la idea es la misma, las similitudes con C++ acaban ahí. Obj-C se basa en el pase de mensajes entre objetos para la invocación de metodos (por tanto no hay linkaje estático hasta el tiempo de ejecución como mínimo). La sintaxis de este envio de mensajes también resulta confusa para los acostumbrados a C++/Java, porque se realiza sin el típico "." o "->". Así lo que sería:
miobjecto.mimetodo(parametro1,parametro2);
se convierte en
[miobjeto mimetodo:parametro1 nombre_parametro2:parametro2];
A parte del uso de los corchetes, y los dos puntos, todos los parametros menos el primero deben de tener un nombre (aparte del nombre de la variable con la que se asocia) y debe ser utilizado al llamar al método. Esta seria la declaración de este metodo en C++:
void mimetodo(int parametro1, int parametro2);
en Objective-C es :
- (void)mimetodo:(int)parametro1 nombre_parametro2:(int)parametro2;
Las diferencias también se encuentran en la declaración de clases, ya que en Obj-C tenemos que separar la parte de interface de clase y el de implementación (esto suena mucho a los lenguajes clásicos).

Esto, después de todo, no son más que cambios de sintaxis y un enlace dinámico; pero existen más diferencias, sobretodo en las librerias standard proporcionadas por Cocoa. Para poner un ejemplo, un NSArray (el equivalente orientado a objetos, aunque por supuesto existe el array original de C) requiere para acceder a un item este código:
valor = [miarray objectAtIndex:0];
No admitiendo los corchetes típicos de C y compañía. Y no solo eso, tampoco hay sobrecarga de operadores; por lo que anexar dos cadenas tiene que hacerse de esta manera:
NSString *cadena_unida = [NSStrng initStringWithFormat:@"%@%@",cadena_1,cadena_2];
Sencillo y práctico, ¿verdad? Lo cierto es que entre tener que nombrar los parámetros, el nombre descriptivo de los métodos básicos y la no sobrecarga de operadores; hacen que usar Objetive-C sea engorroso y lento de utilizar.

Lo cierto es que todo esto son primeras impresiones, no lleve ni una semana escribiendo Obj-C. Puede que este lenguaje, cuando llevas meses utilizando sea una maravilla, pero despues de haber probado el sabor de una taza de Java; programar en Objective-C parece como si aun estuvieras llevando los pantalones de campana y las melenas de los '80. A corto plazo, resulta dificil memorizar los nombres de tantos métodos para operaciones simples y he acabado utilizando cut & paste para casi todo.

Creo que Objective-C queda totalmente fuera de lugar frente a la portabilidad y claridad de Java, la eficencia y popularidad de C/C++ y la rapidez y potencia de Perl/Phyton. Y además, dado que MacOS es casi la única plataforma que lo aprovecha, no podemos encontrar grandes cantidades de código reaprovechale y bibliotecas.

Afortunadamente Cocoa, en esta versión también se encuentra bastante unido a Java. Desde el propio XCode (la herramienta que porporciona Apple para desarrollar) permite elegir a la hora de crear un objeto si es Obj-C o Java. Además el Java de toda la vida (usando Swing) también funciona perfectamente integrado en el sistema. Según algunos datos, puede incluso ser más eficiente que Obj-C. Eso si, útltimamente Apple ha hecho público que la única API para Cocoa válida sigue siendo la de Obj-C, la versión Java es solo de puente o aprendizaje.

Espero que este acercamiento signifique que en las próximas versiones de MacOS se pueda programar en Java de forma nativa, evitando este desfasado lenguaje de programación.
Y más ahora que parece que los Mac van a convertirse en un producto de masas, también debería de tener una lenguaje de programación " de masas", más popular y moderno.

Más información de Objective-C
Web Oficial de Apple sobre Cocoa
Pequeño resumen de la sintaxis y operaciones más comunes
Recursos para la prrogramación en Cocoa

Offtopic: No dejeis de probar el Van Houten Cocoa
Agradecimientos: Este articulo no podria haber sido escrito sin la ayuda de Willy.

20 diciembre 2005

Programando para la Game Boy Advance

La GBA es uno de los sistemas portatiles para los que mas he programado. Desde antes del lanzamiento de la consola, se liberaron sus especificaciones básicas, y con un sencillo emulador, muchos podimos realizar nuestra primera aplicación homebrew meses antes de que la consola estuviera en la calle.

Pues bién, durante bastante tiempo estuvo anunciado un libro que prometia explicar la programación para la GBA, mediante herramientas gratuitas y legales. Pero parece que la editorial recibió muchas presiones desde la gran N, y el libro al final no vio la luz. Al menos en papel; porque si es posible descargarlo en formato electronico desde la web del autor. El libro es muy completo y con él se puede aprender a programar para GBA desde cero. Este sistema ya esta dando los últimos coletazos (revitalizado por la GBA Micro), pero su prima, la NDS comparte muchas características (en realidad lleva una GBA dentro) y es una base para aprender a programar para la consola más moderna de Nintendo.

Tengo que rebuscar en mis cd/dvds de backups, para encontrar las pequeñas demos que hice para GBA (varios clones de Dragon Quest, una interfaz para juegos de aventura y un inicio de port de Maze of Galious de MSX) y las pondré online.

Historia de las interfaces graficas de usuario

Aquí teneis una línea temporal de las interfaces gráficas; con las mas importantes etapas de las GUI relacionadas con el sistema operativo o como sistema shell. La web es bastante completa con muchisima información visual y textual de todos los sistemas, así como links a webs relacionadas con los sitemas que se comentan. Una lectura recomendada.

De: ...hmmm...

19 diciembre 2005

Presentación


¡Hola! Gracias por leerme!

Llevo ya unos meses escribiendo un blog sobre juegos, móviles, japón y varias cosas relacionadas con estos temas. La verdad es que ha sido una gran experiencia, y me lo he pasado bien escribiendo.

Pero a veces quería hablar de temas que encajan poco en esos parámetros. También me gusta mucho la programación, la historia de la informática y los videojuegos, desde el punto de vista de su creación.

Por ello me he decidido a llevar este otro blog sobre estos temas. Aquí pondre todas aquellas noticias o conocimientos que peguen más dentro de estos temas clave (programación, programación de videojuegos, retro-informática...).

¡Muchas gracias! Por leer todo este royo, y que os entretengais con este blog!

P.D.: ¿la foto? Es una vista de Tokyo, sino me equivoco tomada desde la noria del Tokyo Dome. Me encantan esta tipo de vistas.