Publi

  • Píldora: 10 maneras de tomar una captura de pantalla en GNU/Linux

    Captura de pantallaComo usuarios, seguro que por herencia de Microsoft Windows, casi siempre utilizamos la tecla Imprimir Pantalla para tomar capturas de nuestro escritorio o pantalla. Generalmente, nuestro entorno de ventanas tiene un programa configurado en esa tecla que nos permite guardar una imagen en el portapapeles o directamente en un fichero.

    Pero claro, los usuarios de GNU/Linux, otra cosa no, pero tenemos cientos de opciones para cualquier cosa. Y, claro, en según qué ocasión, nos viene mejor una forma u otra de hacer las cosas.… Leer artículo completo

  • Callbacks en C++11, llamando a métodos con un objeto asociado (II)

    2747581103_a6c79b8a38_o

    Hace dos semanas hablábamos de Callbacks en C++11 nuevas posibilidades para un software más potente . Empezamos con una pequeña introducción para «almacenar» una función en una variable o un argumento de función y llamarla desde ahí, incluso introdujimos las funciones anónimas o lambdas.

    Ahora, como no podía ser de otra forma, y dado que estamos en un lenguaje orientado a objetos, en el que queremos aprovechar todo su potencial. Vamos a hacer varios ejemplos en los que llamaremos a métodos de una clase de varias formas diferentes.… Leer artículo completo

  • Conexión segura a un servidor web (HTTPS) en C usando openSSL

    Bueno, el código no tiene mucha más explicación. El objetivo es poder conectar a un servidor web a través de un protocolo seguro y recibir datos, pero también que podamos ver si hay algún problema con el certificado, verificar el algoritmo de cifrado y los datos del certificado, verificar los certificados intermedios, etc.

    Si ignoramos SSL, lo que tenemos que hacer es conectar con un servidor a través de un puerto determinado (como estamos en web, sería el puerto 80, por defecto), y mandarle una serie de datos:

    GET / HTTP/1.1[CRLF]
    Host: openssl.org[CRLF]
    User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:37.0) Gecko/20100101 Firefox/37.0[CRLF]
    [CRLF]

    Por ejemplo.… Leer artículo completo

  • C++ Punteros a función miembro (pointer-to-member function) o callbacks con clase


    Otra de las características que dan a C++ mucha más flexibilidad son los punteros a miembro. Éstos nos permiten trabajar con elementos que podemos encontrar dentro de una clase, un struct o una union. Y el mejor ejemplo lo encontramos a la hora de hacer callbacks, si repasamos los callbacks en C inmediatamente veremos que en un lenguaje orientado a objetos necesitamos poder acceder a métodos dentro de una clase. Si hacemos un ejemplo parecido al de aquel post, podemos demostrar que la misma manera podemos acceder a métodos estáticos dentro de la clase:

    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
    #include <iostream>
    #include <cstring>

    using namespace std;

    /* TYPEDEF */
    typedef int (*funcion_callback)(char*);

    class MyClass
    {
    public:
      static int eco(char *cadena)
      {
        cout << "Eco: "<<cadena<<endl;
        return (strlen(cadena));
      }
    };

    /* DECLARACIÓN DE LLAMADORA */
    void generaecos(funcion_callback func)
    {
      int num;
      cout << "Voy a llamar al eco con el texto HOLA" << endl;
      num=func((char*)"HOLA");
      cout << "La he llamado y me ha devuelto: "<< num << endl;
    }

    int main()
    {
      generaecos(MyClass::eco);
    }

    Pero cuando queremos llamar a un método no estático de la clase fallará sin miramientos, ya que necesitaríamos la información del objeto en el que se encuentra el método, y de esta forma estaríamos pasando directamente una dirección de memoria (al ejecutar la función no encontraría el puntero this, entre otras cosas).… Leer artículo completo

  • Conocer la accesibilidad de un método en PHP (público, privado, protegido)

    Cuando programamos en PHP orientado a objetos, a veces, es importante conocer la visibilidad de ciertos métodos. Es una idea, que a priori puede resultar un poco ridícula, es decir, si llamo a un método es porque es público, si sólo lo puedo llamar desde las subclases, es porque es protegido, y si sólo lo puedo llamar desde la propia clase, es privado. Hasta aquí bien, pero… ¿y si colocamos un método intermediario?… Leer artículo completo

  • Polimorfismos: enrevesando la herencia entre clases [C++]

    Cuando desarrollamos bajo el paradigma de la programación orientada a objetos, a poco que avanzamos tenemos la sensación de estar escribiendo más para hacer lo mismo que hacíamos antes sin clases ni instancias ni tanta estructuración.
    Pero contamos con herramientas que, aunque al principio nos sonarán algo chocantes, a la larga terminarán abriéndonos un mundo de posibilidades y comprenderemos por qué es tan importante, tan utilizado y se exige en multitud de universidades y centros educativos.… Leer artículo completo

  • Recopilación de soluciones para los retos de #tuentiContest . Challenge #19

    Últimamente he hablado acerca del I concurso de programación de Tuenti. Un concurso de programación Online que se llevó acabo durante la semana pasada (del 13 al 20 de Junio, muy mala fecha).

    Podéis ver los enunciados de todos los problemas, con ejemplos sobre la entrada y salida (aunque a veces no hay que hacerles mucho caso) en la web oficial del concurso, pero en Vidas Concurrentes lo encontramos todo en español.… Leer artículo completo

  • Documentando el código con Doxygen

    librosssTanto o más importante que tirarse horas programando una aplicación es su documentación, y debemos hacerlo aunque nosotros seamos los únicos que intervengamos en su desarrollo.
    Algo que siempre digo en mis clases de programación es que a poco que compliquemos el código si no comentamos lo que estamos haciendo, en séis meses cuando toque hacer una siguiente versión no tendremos ni idea de lo que hace; y esto conlleva pasar más tiempo para hacer las modificaciones que necesitamos, que al final se traducen en dinero.… Leer artículo completo