Publi

  • El 2013 para Poesía Binaria


    Este es un pequeño resumen de lo que ha sido 2013 para este blog. Lo más visto, lo más comentado y algunas curiosidades:

    Lo más visitado

    1. Recibiendo cadenas de texto completas con Arduino por USB (I)
    2. Formas de transformar un entero a cadena en C y C++
    3. Listar archivos dentro de un directorio o carpeta en C
    4. Comprobación de IP invertida / Reverse IP lookup
    5. Bucles for en BASH

    En general, los artículos de C y C++ son más visitados que los de PHP o Java (aunque de Java no haya muchos todavía), y aparece un nuevo competidor, BASH, que normalmente también es muy visitado.… Leer artículo completo

  • Stream de lo que se oye por nuestros altavoces con VLC y pulseaudio

    A veces, nos gusta compartir lo que nosotros escuchamos en nuestro ordenador con el resto del mundo y esta es una forma fácil de hacerlo. Ya sea porque tienes música en una habitación y quieras compartirla en otra habitación, o quieras reproducirla desde el móvil o porque quieras saber cuándo te llega un mensaje… bueno, hay muchos usos. Lo único que tienes que hacer es abrir un terminal y escribir:

    1
    $ pactl list | grep monitor

    Con eso obtenemos la lista de monitores de tu ordenador, yo sólo tengo uno: alsa_output.pci-0000_00_1b.0.analog-stereo.monitor

    Ahora, copiando todo eso, voy a VLC, y elijo emitir desde un medio de red, e introduzco en la URL del recurso: pulse://alsa_output.pci-0000_00_1b.0.analog-stereo.monitor , es lo mismo de antes, pero pulse:// delante, de esta forma:
    .… 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

  • Jugando con threads y mutex en C++11

    Hace poco tuve un problema en el que la concurrencia era fundamental para realizar la tarea en el mínimo tiempo posible, y decidí darle una oportunidad a C++11 y a algunas de sus nuevas características (todo esto ya lo podíamos hacer con las bibliotecas Boost por ejemplo, pero da alegría poder hacer muchas cosas desde std 🙂

    Aprovechando mi experiencia he decidido poner un pequeño ejemplo de cómo realizar una aplicación concurrente en esta revisión de C++, cosa que veo la tarea más fácil del mundo y, por supuesto nos beneficiará a todos a la hora de buscar el paralelismo.… 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
  • Utilizando expresiones regulares en C++ con Glib::Regex

    En nuestra vida como programadores, se marca un hito cuando aprendemos a utilizar las expresiones regulares… es más, son como Twitter, cuando lo conoces, entras un par de veces y lo abandonas durante un tiempo, pero cuando llega tu momento, no puedes vivir sin él. Aquí pasa igual, la primera vez que lo ves y lo entiendes dices: «Mira qué curioso», pero cuando pasa un tiempo, siembre que hay algún problema con cadenas de texto, las expresiones regulares surgen en tu mente.… Leer artículo completo

  • Reemplazar cadenas en C++, esta vez desde un map, para múltiples sustituciones

    Hace unos días hablamos de cómo reemplazar cadenas de texto en C++, tuvimos un método para copiar y pegar en nuestros proyectos muy fácil, pero cuando queremos hacer múltiples sustituciones podemos tener un problema: demasiadas llamadas a la función que producirán un código un poco feo…

    Para ello podemos utilizar el contenedor map de C++ y crear la misma función replace() que creamos hace unos días, pero esta vez aceptando un mapa como argumento, así buscaremos en cada una de las claves, y lo sustituiremos por cada uno de los valores que encontremos:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    #include <iostream>
    #include <string>
    #include <map>

    using namespace std;

    string replace(string source, std::map<string,string>strMap, int offset=0, int times=0)
    {
      int total = 0;
      string::size_type pos;

      for (std::map<string, string>::iterator i=strMap.
    Leer artículo completo
  • Slugs amigables en PHP para usar en URLs

    Cuando estamos desarrollando webs, normalmente tenemos que enlazar a contenidos creados por el usuario, y hoy en día está muy bien que la URL sea amigable tanto para el usuario, como para los buscadores y el navegador. Es decir, antes se veía mucho acceder a una página tipo: http://dominio.com/noticias.php?id=192391283 y ahora, eso mismo o vemos como http://dominio.com/noticias/2013/10/acabo-de-subir-un-slug-amigable . La URL es más larga, pero se indexa mejor, y al usuario le da una sensación algo más profesional.… 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

  • Bug corregido en stermp y ya puestos lo subo a github

    Como algunos de vosotros me habéis enviado mensajes referentes a stermp (aquella colección de funciones que hice para utilizar algo parecido a conio.h desde Linux), lo he publicado en GitHub.

    Además, he arreglado un pequeño bug que afectaba a algunos ordenadores y sólo algunas veces cuando se recibía información de posición por ejemplo.

    Disponéis del código fuente de los archivos aquí, stermp.tar: 4.7Kb.

    También podéis visitarla como puse antes en GitHub, y también se podrá ver en algún que otro lado.… Leer artículo completo