Mercado medieval

General, Málaga No Comments »

Carpa en el mercadillo medieval

El fin de semana pasado en Málaga, fue el mercado medieval, pero como he tenido un examen esta semana, no lo he posteado hasta hoy, que ya me encuentro algo más tranquilo.

Bueno, pues el caso es que el mercado de época, también conocido como mercadillo medieval, se montó durante los días 19, 20 y 21 en el parque del norte de Málaga, cerca de donde yo vivo, y consiste en puestos y tiendas con ambiente medieval donde se venden y ofrecen cosas de época, como jabones artesanales, dulces morunos, juguetes antiguos…

Quesos y embutidos

Además, había incluso como una entrada de castillo, y animadores, como malabaristas y músicos de época, ataviados con las vestiduras apropiadas por supuesto.

Una de las cosas que más me llamó la atención (concretamente el olfato xD), era un puesto así rustico de embutidos y quesos, en los que probamos un queso azul que olía y sabía de muerte. Al final me quedé con las ganas de comprarlo (se me olvidó vamos), pero casi mejor para mi, porque en esos lugares ya se sabe que está todo muy caro.

También habían algunas actividades, como tiro al arco y un tiovivo hecho con unos caballitos de goma que parecían neumáticos. Ah! y también vimos un poney de paseo por mitad del parque xDD

La verdad es que si me pongo a enumerar cosas no acabo, así que siempre se pueden ver más fotos en mi cuenta de Flickr, o incluso videos en youtube [1] [2].

Castle walls!

Transitividad

Citas, Pensamientos 1 Comment »

El dinero no da la felicidad.

O eso se dice…

Si nos paramos a pensar, podemos observar los siguientes axiomas…

  1. Uno consigue la felicidad haciendo las cosas que le gustan.
  2. Para hacer las cosas que nos gustan, necesitamos tiempo.
  3. Generalmente, podemos ahorrar tiempo, gastando dinero.

    Así que, por transitividad e implicaciones hacia atrás, podemos decir, que el dinero da la felicidad no? :D

    El despertador que necesito

    Gadgets 1 Comment »

    Vía microsiervos me encuentro con esto:

    Dios! Es el despertador perfecto para mi!

    Cuando empieza a sonar se pone a volar por la habitación (tirando las cosas de las estanterías… xD) y no para hasta que lo pones en su sitio.

    ¿Seguro que internet perjudica la música?

    Internet, Música, Noticias 6 Comments »

    Vía barrapunto, leo que el grupo de música Radiohead, ha ganado más dinero regalando su último album de música. Simplemente pedían a los usuarios que se lo descargasen, que dejasen un donativo, lo que creyesen justo pagar por su album, y por lo visto, han dejado una media de 8 dólares.

    RadioheadComo podeis imaginar, un artista, por cada album de una discográfica vendido, se llevará menos de 8 dólares (menos del 10%, es decir, entre 1 y 3 dólares como mucho xD).

    Además, “el número de discos vendidos en esta primera semana supera al total de las ventas en la primera semana de sus últimos tres discos sumados“.

    Y este hecho no es aislado. Madonna abandona la Warner, con la que ha estado 25 años produciendo sus discos. Paul McCartney y Joni Mitchell lanzaron sus últimos discos en un Starbucks. Prince regaló su último disco con un periódico británico, e incluso en España, Enrique Sierra ha lanzado un portal que permite descargar música y otras obras gratuitamente.

    ¿Estaremos ante un cambio en el comercio? Radical, lo dudo xD. Es posible que este negocio cambie de manera que los propios autores se beneficien más de sus productos, en detrimento de las discográficas, ancladas a un mercado anticuado. De todas maneras, dudo que, aunque pase bastante tiempo, deje de haber gente que compre los discos de manera que pueda tenerlos en una cajita haciendo bonito en su estantería del salón, pero puede que en el futuro el mercado discográfica-internet esté más compensado. Ya lo veremos…

    Errores en Windows

    Humor, Informática No Comments »

    Vía GeekNews, veo uno de los mejores errores de Windows:

    No error en Windows

    Si ya sabía yo, que el que Windows no diese un error, no podía estar bien xD

    Equivocarse

    Anime y manga, Citas 1 Comment »

    Cuando cierto viajero salió un día en busca de lo que deseaba, su maestro le dijo:”No debes perder tu camino, porque si das una vuelta equivocada, nunca encontrarás lo que estabas buscando.“Pero por desgracia, el viajero perdió su camino. El viajero bajó la cabeza desalentado. Pero cuando levantó de nuevo la cabeza, lo que vio ante él fue un mundo aun más magnífico que aquel que había estado buscando.

    Significa que si no cometes errores, habrá cosas que no descubrirás.

    Alicia-san, Aria The Natural.

    Sakura en Aria The Natural

    Exploits de una madre

    Humor 1 Comment »

    Exploits de una madre

    - Colegio: Hola, le llamo desde el colegio de su hijo. Estamos teniendo algunos problemas con los ordenadores.
    - Madre: Oh Dios, ¿es qué mi hijo ha roto algo?
    - Colegio: Pues sí. ¿De verdad llamó a su hijo Robert'); DROP TABLE Students; -- ?
    - Madre: Oh si. Le llamamos pequeño Bobby Tables.
    - Colegio: Bien… hemos perdido todos los registros de los estudiantes de este año… espero que esté contenta.
    - Madre: Y yo espero que hayais aprendido a sanear las entradas a vuestra base de datos.

    Vía xkd.

    En teoría…

    Citas No Comments »

    En teoría, no hay diferencia entre la teoría y la práctica. Pero en la práctica, si la hay.

    Jan L.A. van de Snepscheut.

    Crear GIFs con el GIMP

    Informática, Linux, Pixel Art No Comments »

    Desde siempre me ha gustado muchísimo el estilo de dibujo pixel art, del que seguramente hablaré más adelante más veces ^_^. Ayer comencé a hacer un personajillo, y para enseñarlo, pues se me ocurrió hacerle una pequeña animación de un simple parpadeo.

    Para hacer la animación pensé en el formato GIF, que se puede crear con el GIMP fácilmente, aunque para los no iniciados puede ser difícil de encontrar cómo hacerlo.

    Paso 1: Creando los fotogramas

    Lo primero de todo es hacer los dibujos que se usarán en los frames de la animación. Aquí vemos los míos

    GIF-capa1 GIF-capa2

    Paso 2: Optimizando la imagen

    Una vez tenemos todas las capas, hacemos que el GIMP nos optimice la imagen, en cuestión de tamaño y demás, con lo siguiente:

    Filtro -> Animación -> Optimizar (para GIF)

    Esto nos crea un nuevo documento, habiendo recortado lo necesario de cada capa, para que ocupe lo mínimo, y además las pone en modo composición (esto es, que por ejemplo, en esos fotogramas solo varían los ojos, pues el 1er fotograma está tal cual, pero el 2º solo tiene los ojos, y lo demás es transparente, y a la hora de redibujar, en vez de dibujar todo el frame, se dibuja sólo lo necesario ^_^)

    Además, hace una indexación de colores con los mínimos necesarios.

    Paso 3: Definiendo la duración de cada fotograma

    GIF-capasSi nos fijamos, el documento creado por el paso 2, ha modificado los nombres de las capas, añadiendo (100ms) a las capas y (composed) a algunas. Esto es porque el GIMP pone por defecto una duración de 1/10 de segundo para cada frame, y el composed es para lo que hemos explicado en el paso 2.

    Pues, aunque pueda parecer un parche cutre ( xD ), la duración de cada fotograma, se pone en el nombre de la capa con ese formato. Yo en este ejemplo le he puesto 2 segundos a la de los ojos abiertos, y 100 ms para los ojos cerrados, de manera que mi bicho parpadeará cada 2 segundos, durante 100 ms.

    Paso 4: Guardando la imagen

    Ya solo nos queda darle a Archivo -> Guardar como… y escribir el nombre del archivo con extensión .gif

    Cuando nos pregunte como debe manejar las capas, marcamos Guardar como animación, de manera que cada capa sea un frame.

    Paso 5: Disfrutando del resultado ^_^

    Ya podemos ver el resultado:

    Animación GIF creada con el GIMP

    Doble/Triple buffering y Page flipping

    Allegro & C, Informática No Comments »

    Hoy toca hablar de los métodos de buffering al pintar en pantalla en Allegro (Bueno, en cualquier programa, pero implementado en Allegro xD)

    Cuando se hace un juego, siempre hay que ir pintando los gráficos en pantalla, y si se hace sin ningún tipo de buffer, se pinta a la vez que el monitor se refresca, provocando los molestos efectos que hacen que parece que la pantalla parpadea. Esto es, en resumidas cuentas, porque cuando estamos pintando el frame N, también hay restos del N-1, y el monitor pinta partes de cada uno.

    Para evitar esto, se usa un buffer donde se pinta todo lo necesario del frame y después se vuelca a la memoria de video para que el monitor lo actualice. Hay varias técnicas.

    Page Flipping:

    Consiste en tener el doble de memoria (dos páginas de memoria) de lo que la pantalla usa. Es decir, si tenemos una resolución de 800×600 a 16bpp, se usa casi 1 Mbyte de memoria de video. Pues en este caso usaríamos casi 2, para que mientras se dibuja en una página, se muestra la otra.

    Por ejemplo, inicializamos el sistema gráfico de la siguiente manera:

    BITMAP *pantalla_buffer[2];
    int pantalla_actual;
    BITMAP *pantalla;
    
    pantalla_buffer[0] = create_video_bitmap(SCREEN_W, SCREEN_H);
    pantalla_buffer[1] = create_video_bitmap(SCREEN_W, SCREEN_H);
    pantalla_actual = 0;
    pantalla = pantalla_buffer[pantalla_actual];
    

    Con esto estamos reservando dos páginas (pantalla_buffer) e indicando que la actual es la 0. Además tenemos la variable pantalla, que será a la que nos refiramos siempre por comodidad, para no tener que estar poniendo pantalla_buffer[pantalla_actual] siempre, y además la haremos accesible al resto de paquetes.

    Y para actualizar la pantalla, se llamaría en cada proceso de renderizado (en cada frame) a:

    show_video_bitmap(pantalla);
    pantalla_actual = (pantalla_actual+1)%2;
    pantalla = pantalla_buffer[pantalla_actual];

    Con la primera linea lo que hacemos es pedir que se pinte el bitmap pantalla (la página donde hemos pintado). Con las dos siguientes lineas actualizamos la página actual, para que en el siguiente frame, al pintar sobre el bitmap pantalla, pintemos en la otra página a la que se está mostrando.

    En algunos sistemas hay que especificar la memoria de video concreta que hay que reservar, así que, antes de nada habría que poner:

    #ifdef ALLEGRO_VRAM_SINGLE_SURFACE
      error_init = set_gfx_mode(GFX_AUTODETECT_WINDOWED, w, h, w*2, h);
    #else
      error_init = set_gfx_mode(GFX_AUTODETECT_WINDOWED, w, h, 0, 0);
    #endif
    

    Doble Buffer:

    Es una técnica bastante parecida, pero en vez de tener dos páginas de memoria de video, tenemos un buffer de memoria principal, que volcaremos sobre la pantalla en cada frame.

    Para inicializar el sistema gráfico lo haríamos con:

    BITMAP *pantalla = create_bitmap(SCREEN_W, SCREEN_H);
    

    En este caso la variable pantalla actuaría de buffer. Y para actualizar la pantalla copiaríamos el buffer en la memoria de video con:

    blit(pantalla, screen, 0, 0, 0, 0, SCREEN_W, SCREEN_H);
    

    Triple Buffer:

    Aunque por su nombre parezca que es como el doble buffer, la verdad es que su implementación se parece más a la del page flipping, pero con tres páginas.

    Además, esta técnica no la soportan todos los sistemas, y por ello se debería de dar opcional a las otras técnicas, por si no funciona. Para comprobar si se puede o no, se usa:


    gfx_capabilities & GFX_CAN_TRIPLE_BUFFER

    Si el flag comprobado no está activado, puede intentar activarse de todas maneras con la funcion enable_triple_buffer()

    Una vez se haya comprobado que se puede, se inicializa igual que el page_flipping, pero en vez de ser un array de 2 páginas, es de 3:

    
    BITMAP *pantalla_buffer[3];
    int pantalla_actual;
    BITMAP *pantalla;
    
    pantalla_buffer[0] = create_video_bitmap(SCREEN_W, SCREEN_H);
    pantalla_buffer[1] = create_video_bitmap(SCREEN_W, SCREEN_H);
    pantalla_buffer[2] = create_video_bitmap(SCREEN_W, SCREEN_H);
    pantalla_actual = 0;
    pantalla = pantalla_buffer[pantalla_actual];
    

    Y se actualiza cada frame de la siguiente manera:

    while(poll_scroll());
    request_video_bitmap(pantalla);
    pantalla_actual = (pantalla_actual+1)%3
    pantalla = pantalla_buffer[pantalla_actual];
    

    Lo que hacemos con la primera linea es comprobar el estado del hardware para ver si está listo o no. Con la segunda pide una página de la memoria de video, pero no espera para un repintado. Y con las dos últimas lineas, se actualiza la página actual, de igual manera que en el page flipping.

    Ya que disponemos del código para cada tipo de renderizado, y no es muy complicado, lo suyo sería encapsularlo en funciones y hacer posible que el usuario seleccionase cual quiere, por si alguna le va mejor que otras en su sistema (por ejemplo, en mis pruebas, con page_flipping me va muy rápido en Linux, pero lento en Windows…)

    WP Theme & Icons by N.Design Studio
    Entries RSS Comments RSS Iniciar sesión