Publi

  • 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
  • Reemplazar cadenas de texto en C++ (string y Glib::ustring)

    Una herramienta muy útil a la hora de hacer nuestros programas es buscar y reemplazar texto de una cadena de caracteres. Imaginad por ejemplo el uso de plantillas, éstas serán cadenas de texto en las que reemplazaremos algunas palabras clave para generar el mensaje, o la salida que queremos. En principio, hacemos uso de las llamadas a métodos de string para encontrar una subcadena de texto dentro de una cadena, y más adelante reemplazarla por otra:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #include <iostream>
    #include <string>

    using namespace std;

    int main()
    {
      string original = "Me voy a dormir, que todos sabemos que a partir de las 12 de la noche es hora de dormir.";

      string::size_type pos = original.
    Leer artículo completo
  • Copiar en el portapapeles un texto desde la línea de comandos [C]

    En ocasiones, cuando estamos haciendo shell scripts, surge la necesidad de copiar algo al portapapeles para que el usuario lo utilice, en principio, podemos utilizar xclip, aunque ese sería el portapapeles de X11, ese con el que se copia seleccionando con el ratón, y se pega con el botón del centro (o izquierdo+derecho si emulamos el botón central).
    Pero para dar algo de usabilidad (Control+V), y no queremos obligar al usuario a configurar sus gestores de portapapeles, esos grandes desconocidos que suelen estar ahí y nunca hacemos caso…

    Podemos hacer este pequeño programa en C, que utilizará Gtk para acceder al portapapeles, y escribir en él.… Leer artículo completo

  • Conocer la velocidad de descarga de nuestra conexión desde terminal

    A la hora de hacer un test de velocidad, muchas veces recurrimos a páginas que ofrecen aplicaciones Flash para hacer el test de velocidad, muchas veces Flash nos puede resultar incómodo, otras veces, estamos en un ordenador tan antiguo que no tira bien de Flash.

    Estos tests, suelen descargar un fichero relativamente grande, y dividen tamaño del archivo descargado por el tiempo empleado en su descarga, con lo que nos devuelven los Mb/s a lo que hemos descargado dicho archivo; suelen medir la velocidad de un conjunto muy complejo de elementos que están funcionando a la vez (por mencionar algunos de los más importantes):

    • El servidor que nos manda la información: Si el servidor está saturado, tal vez no nos mande la información al máximo de su velocidad
    • La conexión del servidor: Si la velocidad de subida del servidor es más pequeña que la velocidad de bajada del ordenador a analizar (por ejemplo si hacemos que nuestro ordenador envíe el test a casa de un amigo, el test no saldrá bien), si el proveedor de servicios ha penalizado la transferencia del servidor (a lo mejor por consumo excesivo de ancho de banda), o si el servidor tiene muchas peticiones simultáneas, tiene que repartir su ancho de banda entre todos.
    Leer artículo completo
  • Guardar un log con las excepciones producidas en C++

    logSobre todo a la hora de crear un programa se pueden generar muchas excepciones, bueno y cuando estamos usándolo de forma normal también, y todos sabemos del típico cliente/amigo/usuario que nos llama de madrugada o a una hora normal diciendo:
    – «El programa me da error» –
    – «¿Qué error te da el programa?» – respondemos
    – «Nada error, solo eso» –
    – «Bueno, ¿seguro que no salía nada más?» – insistimos
    – «Sí, muchas letras y cosas que no tenían sentido» – nos responde para bajarnos la moral – «¿qué puede ser?»
    Nuestra respuesta ahora depende de la relación que tengamos con esa persona, ya sea cliente, amigo, usuario, desconocido… o destornillador, digo, desarrollador (que hay algunos que también…).… Leer artículo completo

  • Herramientas Open Source para colorear código

    Aquí muestro una recopilación de herramientas que nos ayudarán a mostrar código fuente con colores, y así poder enseñar orgullosos nuestro código, bueno más que nada porque se ve todo más claro y se puede identificar mejor a qué corresponde cada palabra que en texto plano sin color.
    Dependiendo del proyecto que tengamos entre manos nos conviene más utilizar una herramienta online u offline, o si tenemos un blog, mejor utilizar una herramienta específica para blogs.… Leer artículo completo