Publi

  • Singletons en C++. Intentando que sean seguros en hilos (thread safety) II

    Singleton thread-safeAyer hablábamos de la creación de un sigleton y de que nuestro ejemplo no era «thread safe», vamos, que en un entorno con varios hilos de ejecución cabe la posibilidad de que el comportamiento esperado no siempre se cumpla.

    Ahí encontrábamos diferencias entre C++ (<11) y C++11 ya que esta última revisión incluye tratamiento de threads y algunas cosas más que trataremos aquí.

    Lo primero que podemos pensar, es que al traernos la instancia de nuestro singleton se crea una sección crítica, la cuál podemos regular con un mutex, provocando que siempre que vayamos a obtener una instancia de nuestro objeto pasemos por el semáforo, y aunque dos threads quieran pelearse por ver quién crea antes el recurso, sólo uno lo conseguirá finalmente.… Leer artículo completo

  • Singletons en C++ y alguna nota sobre thread safety (I)

    Antes de nada, comentar que he dividido este post en dos porque vi que se estaba alargando demasiado y se lanzarán uno al día, pondré aquí enlaces a todos los posts.

    Muchas veces cuando estamos programando tenemos la necesidad de crear un objeto de una clase determinada, pero éste objeto deberá ser creado una sola vez en nuestra aplicación y debemos evitar a toda costa que pueda ser creado más veces.… Leer artículo completo

  • Enfrentándote con los fantasmas de tu pasado


    Cuando llevas varios años programando, y te has embarcado en multitud de proyectos, tarde o temprano llega el día en el que te enfrentas a un proyecto antiguo, en concreto estoy pensando en un proyecto de hace unos 5 años… (2008) ni quiero pensar lo que podré sentir cuando vea un proyecto que tenga 20 años, seguro que dentro de unos años puedo volver al blog a contarlo.

    El proyecto en cuestión fue una web en la que me pidieron realizar algunos cambios y añadir alguna característica nueva.… Leer artículo completo

  • Bucles y cursores en MySQL con ejemplos

    Hace mucho tiempo que quería escribir sobre esto. Y aunque es recomendable no abusar de los bucles en MySQL, es más, a veces no son necesarios, y siempre hay que buscar una solución que no los use, a veces no la vamos a encontrar y será en esos casos cuando debamos utilizarlos.

    Veamos un bucle muy sencillo, parecido a un for de los de toda la vida, en el que contamos del 1 al 9:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    DELIMITER $$
    CREATE PROCEDURE simple_loop ( )
    BEGIN
      DECLARE counter BIGINT DEFAULT 0;
     
      my_loop: LOOP
        SET counter=counter+1;

        IF counter=10 THEN
          LEAVE my_loop;
        END IF;

        SELECT counter;

      END LOOP my_loop;
    END$$
    DELIMITER ;

    cuando hagamos:

    1
    CALL simple_loop();

    Veremos algo como esto:

    +———+
    | counter |
    +———+
    | 1 |
    +———+
    1 row in set (0.01 sec)

    +———+
    | counter |
    +———+
    | 2 |
    +———+
    1 row in set (0.01 sec)

    +———+
    | counter |
    +———+
    | 3 |
    +———+
    1 row in set (0.01 sec)

    +———+
    | counter |
    +———+
    | 4 |
    +———+
    1 row in set (0.01 sec)

    +———+
    | counter |
    +———+
    | 5 |
    +———+
    1 row in set (0.01 sec)+———+
    | counter |
    +———+
    | 6 |
    +———+
    1 row in set (0.01 sec)

    +———+
    | counter |
    +———+
    | 7 |
    +———+
    1 row in set (0.01 sec)

    +———+
    | counter |
    +———+
    | 8 |
    +———+
    1 row in set (0.01 sec)

    +———+
    | counter |
    +———+
    | 9 |
    +———+
    1 row in set (0.01 sec)

    Query OK, 0 rows affected (0.01 sec)

    Vemos que el código que iteraremos está entre LOOP…END LOOP, lo que aparece justo antes (my_loop) es una etiqueta para nombrar ese bucle.… Leer artículo completo

  • CI XXII: física 2D en JS, Graph Model NoSQL, Lenguajes de programación más odiados, GNUPanel, snap.svg y más

    Esta semana traigo algunos enlaces interesantes. Estoy intentando seguir una nueva técnica, durante la semana he ido publicando enlaces en la página de Facebook de Poesía Binaria (y en alguna otra página que tengo por Facebook). Por lo que este post será una recopilación de esos enlaces, y de alguno más que me sacaré de la manga:

    • Física 2d en javascript: En este enlace presentan algunos proyectos con los que podemos empezar a trabajar en este campo.
    Leer artículo completo
  • Nuevos proyectos asociados al blog (github, binary prose, projects and discoveries)

    Hoy vamos a hablar de nuevos proyectos que tengo por aquí a mano, en principio son pequeños retos personales y cosas que tenía ganas de hacer, aunque no tengo nunca demasiado tiempo, pero son cosas que tarde o temprano iba a hacer.

    En principio, presentar un blog gemelo a este, llamado Binary Prose, ya que lo que escribo aquí es más prosa que poesía y porque en inglés me sonaba mejor.… Leer artículo completo

  • Cariño, quieres algo de postre? [SQL en la vida real]

    Mientras yo, absorto en mis pensamientos digo:

    1
    2
    SELECT * FROM Frigorifico WHERE AND Tipo='Yogur' AND Caducidad IN
         (SELECT MIN(Caducidad) FROM Frigorifico WHERE AND Tipo='Yogur' AND Caducidad>=NOW());

    Y mi pareja me mira con una cara de no entender demasiado, o de haber soltado la frikada del año, el caso es que luego me trajo exactamente lo que pedí, el yogur que antes caduque… siempre y cuando no esté caducado ya 🙂

    Foto: stopnlook (Flickr) CC-by a 21/08/2013… Leer artículo completo

  • Conocer los likes de una web en Facebook y algo más

    Hoy en día, la red social por excelencia es Facebook, aunque algunos digan que le quedan 3 años, es interesante aún seguir desarrollando aplicaciones que funcionen para esta red, o que interactúen de cierta manera con ella.

    Hoy toca un sencillo código con el cuál podemos obtener el número de Likes o «Me gusta»s que tiene una determinada URL. Esto nos puede servir para almacenar en nuestra base de datos local (y no en facebook) dicho número para su posterior análisis, o para poner el número como nosotros queramos, y no necesariamente integrado en un cuadro servido por la red social.… Leer artículo completo

  • Invocando métodos por su nombre (en string) con C++

    Vamos a implementar una pequeña aplicación en la que el usuario pueda elegir el método de la clase que va a ejecutarse, vamos a tener una clase en la que crearemos varios métodos «ejecutables» por el usuario.
    En el ejemplo que presento, aunque sea un poco repetitivo, estoy suponiendo que C++ no tiene reflexion, esto, dicho de una forma rápida es que una clase tenga la facultad de conocer sus miembros, podremos llamarlos, pero no podremos decirle que nos dé una lista.… Leer artículo completo

  • Vótame en #libreblogrank


    Me he apuntado a esta inicialiva de @ubuntizando, en la que a través de Twitter podéis votar vuestro blog favorito dedica al software libre. Desde aquí os invito a votarme haciendo retweet al siguiente tweet. Hay hasta el día 21 de este mes a las 00:00 (no queda mucho, pero todavía hay tiempo):

    Pero, por supuesto, también os invito a ver la lista de blogs participantes y a votarles en la web de Ubuntizando.… Leer artículo completo