30 de abril de 2008

Hardware: DataTraveler 8Gb

Bueno, pues tengo nuevo lápiz USB, ha costado unos 20 y pocos euros y tiene 8 gigas de capacidad... ¡Una burrada!, vamos.

Quién me iba a decir hace años que los lápices USB iban a alcanzar esta capacidad :)

28 de abril de 2008

Frikadas: Ya está listo el primer teaser poster de la peli de Dragon Ball

En teoría la estrenan el 9 de abril de 2009... y no tiene por ahora demasiada buena pinta, la verdad...



Esperemos que salga pronto un trailer que me quite la sensación de película mala y cutre de la cabeza.

Fuente: slashfilm.com

27 de abril de 2008

Actionsript 3.0: Acceder a moviclips dentro de movieclips

Imaginémonos que tenemos creado un movieclip con nombre instancia "inst0" y que dentro de ese movieclip tenemos creado otro movieclip con nombre de instancia "instNum0".

¿Cómo haríamos para poder acceder a la segunda instancia con Actionscript 3.0?

Pues muy fácil, en este ejemplo accederemos a la propiedad que nos informa en que frame está en estos momentos "instNum0":

trace(this["inst0"]["instNum0"].currentFrame);


Como os habréis fijado los nombres de las instancias van entrecomilladas, o sea, que son Strings, por lo que pueden ser alterados dinámicamente de una manera muy sencilla.

Por ejemplo, con este bucle accederíamos al frame activo de las instancias "instNum0" a "instNum10":

var i:Number;

for(i=0;i<10;i++){
   trace(this["inst0"]["instNum" + String(i)].currentFrame);
}


Sencillo e intuitivo.

Grand Theft Auto IV: Y el mejor actor para interpretar a NIko Bellic es...




¡¡¡Luis Merlo es clavadito!!!

25 de abril de 2008

CSS: Los formularios en Internet Explorer...

... tienen la manía de aplicar bordes y padding por defecto rompiéndonos nuestras chachi-chulis maquetaciones usando CSS.

¿La solución?

Pues fácil, hay que aplicarles un "margin:0;padding:0;" para que se comporten como Dios manda ya sea en la hoja de estilos CSS correspondiente o usando style dentro del tag form, p.ej. así:

<form style="margin:0;padding:0;" action="prueba.php" method="post">

De esta manera el uso de formularios no romperá la imagen de nuestra web con los navegadores de Microsoft.

Google Maps y Cataluña

Esta mañana he puesto el nuevo Google Maps para probarlo unos minutos y me he encontrado al acercarme al mapa de España que Cataluña aparece con un color que la diferencia por completo del resto del país.



No sé si este efecto se ha producido de casualidad o a propósito, aunque como las imágenes han sido suministradas por el Institut Cartogràfic de Catalunya no me extrañaría que esa diferencia se hubiese buscado a drede.

¿Cuanto tardarán el resto de comunidades autónomas en hacer lo mismo? ¿Aparecerá la Comunidad Valenciana (mi tierra) con el mapa en color naranja para promocionar nuestras ídems?

Veréis como con este tema se monta una buena polémica :)

24 de abril de 2008

XBOX 360: Mass Effect

De los autores de clásicos como Baldur's Gate o Star Wars: Knights of the Old Republic nos llega este pedazo de juego de rol llamado Mass Effect.

En el manejamos a Sheppard, una especie de super soldado molón humano que debe investigar una serie de perturbadores sucesos que están ocurriendo a lo largo de la galaxia. Como no quiero chafarle el argumento a nadie (está lleno de sorpresas) no contaré nada más de la historia, al menos por ahora :)

La mecánica del juego consiste en manejar a nuestro héroe y a los dos miembros de su comando a lo largo de una serie de escenarios donde deberemos explorar, encontrar objetos, hablar o enfrentarnos con los personajes que nos topemos. En ocasiones deberemos conducir vehículos armados hasta los dientes para atravesar largas distancias o para enfrentarnos a enemigos demasiado poderosos.

Al ser un juego de rol podremos mejorar nuestro armamento y capacidades conforme avance el juego. Al ser un juego futurista no hay magia, pero hay algo muy parecido llamado biótica.

Podemos dar órdenes básicas a los miembros de nuestro comando y utilizar sus capacidades especiales cuando las necesitemos. Normalmente su inteligencia artificial funciona bastante bien salvo en los combates en espacios pequeños en los que más que ayudar te perjudican bastante (al menos hasta que te alejas de ellos y van detrás de ti).

Gráficamente utiliza el Unreal Engine 3, pero tan modificado (especialmente por el efecto cinematográfico del granulado) que no es para nada un clon de Gears of War. Los escenarios están muy bien trabajados y contribuyen a crear una ambientación genial. Por momentos estás viviendo en una película de Star Trek.

A nivel sonoro tiene algunos temas bastante buenos aunque otros son bastante ramplones (especialmente los de corte tecno). En cuanto a las voces vienen todas en inglés y no siempre están bien integradas con la música de fondo.

Aunque es un juego muy bueno tiene varios aspectos criticables, el primero es el desastre que se produce cada vez que hay combates en entornos pequeños, los miembros de tu equipo se vuelven memos de repente y se meten en tu línea de tiro, etc. Por otro lado los diálogos (al menos la traducción) a veces son un poco incongruentes, parece que un personaje te hable de la guerra y otro le responda hablando de como se hace una tortilla francesa.

Criticar también uno de los fallos habituales del Unreal Engine 3 que consiste en que el juego comienza y hasta que no pasan 3 o 4 segundos no han terminado de cargar todas las texturas en alta definición. Por favor, que te dejen la pantalla de cargando hasta que las tengan todas.

Criticarle también por último que se hace algo durillo de aprender al principio y que el vehículo oruga que he conducido hasta ahora tiene una conducción horrorosa.

Pero pese a las críticas que le he hecho es un juego muy divertido, absorvente, con un universo complejo e inmenso y una mecánica complicada al principio pero que luego te atrapa hasta el fondo.

En conclusión, si te gustan los juegos de rol o los FPS en plan light este es tu juego.

Valoración: 8/10

23 de abril de 2008

PHP: ¿Qué diferencia un include de un require?

Un include fallido produce un error de advertencia mientras que el require produce un error grave que detiene la ejecución del script.

Tened cuidado ya que antes de la versión de PHP 4.3.5 un error en require no detenía la ejecución del script.

Por lo tanto ya sabéis, el include se usa sólo para casos en los que el fichero a incluir no sea básico para la ejecución de vuestro script, lo cual en la práctica implica que hay que usar require en casi todos los casos :)

21 de abril de 2008

Personal: ¿Por qué los servidores de hosting se cuelgan cuando uno está trabajando a todo trapo?

No lo sé,

Debe ser cosa de la ley de Murphy (bueno, de una ley nueva).

Hosting: ¿Dónde alojan sus webs las cadenas de radio españolas?

Las cadenas de radio generan una gran cantidad de tráfico de datos debido a la publicación de sus programas en clips de audio en sus webs.

Así que me he hecho un pequeño estudio (y rápido) de quién hospeda a quien:
Como veis, Akamai Technologies arrasa de largo. Y bueno, lo de Sarenet es lógico ya que Punto Radio es del mismo grupo de empresas que Sarenet.

PS3, XBOX 360: Ya queda muy poco para el nuevo Soul Calibur



Me tira más Darth Vader que Yoda, así que seguramente terminaré comprando la versión de PS3... si el increíble mercado de 2ª mano de XBOX 360 no me lo impide por 10 euros :)

17 de abril de 2008

PS3: Motorstorm

Hace ya mucho tiempo que probé la demo de Motostorm, por fin me lo he comprado y bueno, aquí van mis impresiones.

Motostorm es un juego de carreras de coches, motos, camiones y todo lo que se tercie a lo largo de una serie de recorridos del desierto de Arizona (o uno similar, que para el caso es lo mismo). Cada circuito dispone de varios caminos paralelos que serán más o menos útiles dependiendo del vehículo que conduzcamos.

El apartado gráfico en su primera impresión es espectacular, los coches y los decorados derrochan calidad por los cuatro costados. Lo único que cuando ya llevas unos días jugando se hacen algo repetitivos (demasiado desierto, vamos).

A nivel sonoro la selección de temas musicales es buenísima, siempre que os guste el guitarreo, eso sí. En cuanto al sonido los vehículos están muy bien conseguidos, pero como es natural su ruido es tan ensordecedor que no nos deja oír cualquier otro tipo de efecto (si es que lo hay, que lo dudo).

La jugabilidad está bien medida, pero no es perfecta, cuesta ganar tu primera carrera, aunque una vez que lo haces ganarás 4 o 5 de un tirón. Pero eso sí, es muy divertido, tanto en su modo "historia" como en su modo multijugador.

Los circuitos se repiten demasiado, es verdad que tienen varias rutas y que varían bastante dependiendo del tipo de vehículo con el que los recorras, pero aún así se echa de menos un poquito de variedad. Tanto desierto satura.

En conclusión, un gran juego que se queda a las puertas de convertirse en un gran clásico, pero si os gustan los juegos de conducción "arcade" -y no os aburre el desierto- os lo recomiendo.

Valoración: 7.5/10

13 de abril de 2008

Flash: Un trozo de un capítulo de Héroes a 720p

Fabio Sonnati lo ha vuelto a hacer, HD 720p con Flash (codec h.264) y ¡¡¡en streaming!!!

Os pongo aquí el enlace.

12 de abril de 2008

Gadgets: Kodak EasyShare V1253

Ha caído en mis zarpas una de las últimas cámaras de fotos de Kodak, el modelo EasyShare V1253.



Os pongo aquí un par de fotos que he hecho con ella de ejemplo.

Para ver las fotos en grande (4000x3000 píxeles) haced click sobre ellas:

11 de abril de 2008

Webs: La home de "El otro lado" ha conseguido los 100 millones de visitas

Ahí es nada :)

"El otro lado" es una web "friki" donde se habla mucho de videojuegos, conexiones de Internet, derechos de autor, etc.

Una web imprescindible para todos los frikis que hablan español.

¡¡¡Enhorabuena!!!

9 de abril de 2008

Javascript: Una función para comparar dos campos de formulario

En ocasiones necesitamos comparar el contenido de dos campos de un formulario para validar su procesamiento (p.ej con los campos clave y confirmar clave).

Para comprar esos campos he desarrollado esta función en javascript:
function compareFields(name1,name2,field1,field2){
  if(field1==field2){
    return true;
  }else{
    alert(name1 + " y " + name2 + " no coinciden.");
    return false;
  }
}


Las variables name1 y name2 contienen el nombre de los campos tal como los conoce el usuario. Las variables field1 y field2 contienen el contenido de los dos campos que queremos comparar).

Ajax: La botonera del navegador

Pues sí, amigos, la botonera del navegador es el peor enemigo de una web basada en AJAX, y para que los más novatos no pierdan el tiempo os cuento que por restricciones de seguridad no podemos acceder al historial de navegación de un navegador ni podemos anular el botón (y la tecla) de recarga.

¿Qué sucede cuando un usuario le da al botón de atrás? Pues que aunque lleve más de 12 horas usando nuestra web con navegación AJAX se sale fuera de la web con el consiguiente cabreo.

¿Y qué sucede cuando el usuario le da al botón de recargar web? Pues que o le ponemos rápidamente un par de velas a Santa Tecla o corremos el riesgo de que nuestra aplicación web se vuelva loca.

¿Cómo solucionar esto?
Pues la única manera de solucionarlo es algo chusca, consiste en abrir una ventana del navegador sin la botonera. Pero claro, como he dicho antes es una solución muy cutre ya que cualquier bloqueador de Pop Ups nos impedirá ejecutar bien nuestra página.

Pero bueno, por si os sirve de consuelo con Flash también pasa lo mismo, ya sabéis, mal de muchos consuelo de tontos :)

Espero que algún año de estos el W3C se ponga serio con el tema y nos ofrezca alguna solución, pero me da a mí que con lo lleno que está Internet de crackers capullos vamos a tener bloqueado el historial de navegación de por vida.

8 de abril de 2008

Personal: Me acabo de enterar que ando por ahí de modelo publicitario

Bueno, más bien me enteré el sábado pasado cuando mi amigo David (el de cosas mías) me lo dijo.

Me ha enviado un cartel de un Paintball donde fuimos hace más de un año. Soy el de la mira telescópica en la espalda :)



De aquí a salir en las pasarelas me queda sólo un paso :P

ZX Spectrum: BC Bill

BC Bill es un curioso juego publicado por Imagine en el año 1984. En él tenemos que manejar a un cavernícola que debe asegurarse el futuro de la especie humana.

¿Y como lo va a asegurar? Pues muy fácil, debe conseguir tener el máximo número de hijos posibles y que estos lleguen a la edad adulta. Para ello tendrá que "seducir" a mujeres cavernícolas a base de un garrotazo a la cabeza y luego a estirar de su pelo para llevarla a la cueva.

Una vez tenga mujeres en su cueva deberá cazar alimento para ellas y los retoños que comenzarán a nacer. A más mujeres más hijos, cuantos más hijos y mujeres tengas más comida necesitarás para que sobrevivan. En el momento que se acabe la comida tus hijos pequeños saldrán a buscarse la vida fuera de la caverna, y créeme, durarán bien poco.

Casi todo lo que veremos en pantalla es cazable y comestible, salvo una tortuga carnívora y un velociraptor que nos matarán si nos tocan. Por último cada vez que alguno de nuestros hijos se haga adulto y decida irse de casa un gigantesco Rex vendrá a por ellos, tendremos que hacer de cebo para que no los coma.

A nivel gráfico el juego cumple bien y es resultón, aunque tampoco es una maravilla. A nivel sonoro las melodías del menú y del juego son muy buenas aunque al estar reproducidas por el chip del ZX Spectrum 48 Kbs van a irritar a más de un oído moderno.

Como aspectos a criticar, pues por un lado el toque machista de los garrotazos en la cabeza a las mujeres (y más en los tiempos que corren ahora) y por otro lado que se termina haciendo muy repetitivo.

Por el lado bueno que es un juego divertido, sin pretensiones y con una curva de aprendizaje muy sencilla.

En conclusión, un juego entretenido pero de muy corta vida.

Puntuación: 6/10



Por cierto, para jugar en el menú de opciones hay que seleccionar el control de vuestro jugador (p.ej. keyboard) y luego pulsar la tecla "Y".

7 de abril de 2008

Personal: Necesito que probéis mi web

La dirección es esta: http://www.gabrielcuesta.com.

Me he saltado (temporalmente espero) el estándar W3C.

Quien se decida a probar mi web que me envíe un comentario o un email con:
a) Navegador utilizado.
b) Resolución de su ordenador.
c) Sistema operativo
d) Si se ve bien o se ve rota.

Pues eso, a ver si alguien se anima.

6 de abril de 2008

Frikadas: Se filtran unas cuantas imágenes del rodaje de Dragon Ball

JoBlo.com ha conseguido una serie de jugosas imágenes del rodaje de la película de Dragon Ball. Así que ya nos podemos hacer una idea de la estética que lucirá.

Aquí os pongo una de Goku:


Si queréis ver más visitad JoBlo.com haciendo click aquí.

5 de abril de 2008

Nintendo Wii: En China te plagian to :)

Israel, de El Bocazas, me ha enviado un curioso vídeo que tiene ya algún tiempo pero que yo no conocía. Es un anuncio de una consola china "inspirada" en la Nintendo Wii, y se llama Vii :D

Aquí tenéis el vídeo:


Esto si que es piratería.

Ah, y voy a intentar comprarme una :), es superFreak.

4 de abril de 2008

Videojuegos: ¿La piratería perjudica tanto las ventas como dicen?

Este sábado me voy a comprar el Jericho para XBOX 360. ¿Qué es lo que ha decidido mi compra?

Pues la versión pirata que me dejó un amigo para PC.

El caso es que la demo de XBOX 360 estaba bastante bien, pero como los juegos son tan caros y tengo tan poco tiempo no me convenció para su compra. Pero en cuanto lo comencé a jugar en PC me encantó y me dije: corriendo a comprarlo.



No es la primera vez que me sucede esto. El Warcraft I y el II los tuve piratas, sin embargo el Warcraft III me lo compré ya original, así como mi hermano Pepe la expansión y el World of Warcraft, al que estuve más de un año jugando.

Lo mismo me ha pasado con otras sagas como Prince of Persia, Virtua Fighter, Project Gotham o Need for Speed. He comenzado con ellas en pirata y he terminado comprando los originales de las secuelas.

Supongo que la mayoría de la gente no hará como yo, los juegos siguen siendo demasiado caros. Pero también os digo que cuando una saga te tiene enganchado y ves la continuación en la tienda el impulso de comprar le aprieta a todo el mundo, si pusiesen los juegos a 20€ se forraban.

2 de abril de 2008

MySql: Cómo hacer consultas con subconsultas incluídas

Uno de los principales objetivos que me marco como programador web es intentar aligerar la carga de trabajo del servidor y acelerar la respuesta del mismo.

Para ello siempre intento reducir al máximo el número de conexiones que hago con el servidor de base de datos gracias a condensar en el mínimo número posible de sentencias de mySql todas las consultas de base de datos que debo hacer.

Una de las herramientas para conseguir un buen conjunto de datos con una instrucción mySql es la subconsulta.

Si sois nuevos con el uso de sql el uso de subconsultas os puede agobiar un poco, pero no os preocupéis, es algo muy sencillo.

Os voy a mostrar ahora un ejemplo en el que disponemos de dos tablas: categories y products.

Cada fila de la tabla products tiene un campo llamado category_id en el que enlazamos cada fila de datos de product con una fila de la tabla categories.

Pues bueno, os pongo aquí el ejemplo:


$DB->mQ = "SELECT * FROM categories c WHERE active='1' AND (select count(id) from products p where p.category_id=c.id)>0";

$categories = $DB->Execute($_SERVER['PHP_SELF'], __LINE__);



Con esta sentencia obtendremos un listado de categorías que tengan como mínimo un producto. Cómo podéis ver la sentencia sql a la izquierda de WHERE es la típica sentencia mySql. A la derecha del WHERE tenemos las dos condiciones de la sentencia, la también típica active='1' y la subconsulta (select count(id) from products p where p.category_id=c.id)>0.

Bueno, pues espero que este ejemplo os sirva :)

Frikadas: Solid Snake es un friki del Assasin's Creed



Cosas como estas hacen que el "April's Fool Day" merezca la pena.

1 de abril de 2008

Zen Cart: Función para obtener el nombre de una marca en base a la id

He revisado de arriba a abajo las funciones de Zen Cart y no he encontrado ninguna que me permita obtener el nombre de una marca en base a la id de la misma, así que me he hecho mi propia función y la he integrado en uno de los proyectos en los que estoy trabajando.

Aquí tenéis la función:
/*
* Return a manufacturer's name, from ID manufacturers
* TABLES: manufacturers
*/
function zen_get_manufacturers_name($manufacturer_id) {
  global $db;

  $manufacturer_query = "select m.manufacturers_name
     from ". TABLE_MANUFACTURERS ." m
     where m.manufacturers_id = '" . (int)$manufacturer_id . "'";

  $manufacturer =$db->Execute($manufacturer_query);

  return ($manufacturer->RecordCount() > 0) ? $manufacturer->fields['manufacturers_name'] : "";
}