Publi

  • Creando un pequeño bot para Twitter en PHP paso a paso (parte 1)


    En esta serie de posts veremos información paso a paso para crear un bot en Twitter. Este tipo de bots pueden ser muy útiles para programar publicaciones, para conocer información periódica de nuestra cuenta, para detectar menciones y tomar decisiones, y muchas cosas más. Todo ello lo quiero enfocar desde un punto de vista agnóstico del framework que vayamos a utilizar. Lo voy a basar en PHP porque la mayoría de los scripts los tengo hechos en este lenguaje y me va a resultar útil para un par de proyectos en el futuro.… Leer artículo completo

  • Compilando y subiendo los primeros programas al ESP8266. Usando GPIO y UART-

    Me ha gustado mucho la facilidad de uso (y sobre todo el precio) de este dispositivo. El ESP8266 puede dotar a nuestros proyectos de la conectividad que necesitaban y así adentrarnos en el Internet de las cosas o IoT.

    Lo primero es sentirnos cómodos con el entorno. Así que voy a proponer dos opciones. La primera, multiplataforma será utilizando el mismo entorno Arduino. En este caso, al final del proceso cuando estemos compilando o subiendo el código a nuestro chip seleccionaremos la placa ESP8266 y compilaremos para ella.… Leer artículo completo

  • Píldora: Modificar a mano la velocidad de los ventiladores de nuestro ordenador

    Velocidad de los ventiladores

    Normalmente el control de los ventiladores que hace automáticamente el sistema está bien. Cuando la CPU se calienta mucho los ventiladores aumentan su velocidad y ésta disminuye cuando se enfrían. El objetivo es mantener el procesador a una temperatura estable y que no se rompan los componentes. Porque seguro que más de uno nos hemos cargado algún aparato cuando se ha sobrecalentado.

    El caso es que no siempre está bien el control automático.… Leer artículo completo

  • Lista de control para instalar un servidor para tu web, blog, correo y más (Checklist para servidor)

    En la actualidad hay una gran oferta de servidores para utilizar en nuestras aplicaciones. Y, tenemos la posibilidad de contratar servidores muy potentes por relativamente poco dinero. Una de las posibilidades que tenemos es contratar un VPS (Servidor Privado Virtual) En el mercado encontramos servicios administrados, en los que tendremos directamente un panel de control, un servidor instalado con ciertas características, y ya se encargan por nosotros de actualizar, instalar software y tener al día la seguridad.… Leer artículo completo

  • Crea tus propias webs dinámicas en C++ de forma fácil y usando plantillas para no compilar a cada cambio

    Screenshot 12-08-2016-020848
    Esto forma parte de un pequeño proyecto que mantengo desde hace algo más de un año. El objetivo es crear un sistema con el que servir webs desde C++, que sea más o menos fácil de mantener y generar, flexible, que soporte enrutadores, plantillas, hosts virtuales con el fin de poder utilizarlo para diferentes tipos de aplicaciones a modo de panel de control web.

    Sobre todo está pensado para aplicaciones internas y no para desarrollos web públicos, por temas de seguridad y rendimiento cuando la carga aumenta considerablemente, aunque sí que podría ser utilizado sin problemas en segundo plano por nuestras aplicaciones web por eso de que en ciertas operaciones, un programa hecho en C++ rendirá mucho mejor que cualquier Javascript, Java, PHP, etc.… Leer artículo completo

  • Usando SQLite en nuestros programas en C/C++ (II): Nueva interfaz v2 y prepared statements

    Hace unos días empezamos a programar utilizando SQLite para gestionar nuestra información usando SQL de toda la vida.

    Bien, SQLite tiene la interfaz clásica, que vimos en el post anterior: sqlite3_open(), sqlite3_close(), sqlite3_exec()… con utilidades básicas para trabajar.

    Por un lado, podemos tener más control sobre la base de datos, por ejemplo, podemos definir cómo abirmos la base de datos, tenemos códigos de error extendidos, ventajas con respecto al tratamiento interno de la memoria y algunas cosas más.… Leer artículo completo

  • ListView con búsqueda rápida en GTKMM

    Es muy útil cuando listamos elementos en una aplicación proporcionar al usuario una opción de búsqueda rápida. Hacemos la aplicación más amigable con poco esfuerzo extra por nuestra parte.

    El ejemplo que traigo es muy parecido al ejemplo de ListStore, aunque añado la posibilidad de filtrar la lista con el texto introducido en un widget Entry.

    La clave está en crear una columna más en el modelo de datos (c_visible) que determinará si el elemento es visible o no en la lista, y en lugar de hacer que nuestro TreeView siga el modelo por defecto, haremos que siga un modelo filtrado.… Leer artículo completo

  • Calmando los ventiladores de netbooks Acer One

    En ocasiones, el ventilador de los netbook Acer One puede llegar a ser algo molesto, y bueno, no es porque sea molesto, sobre todo es porque un ventilador girando a toda pastilla, aunque es bueno que tenga fresco el procesador, es capaz de gastar una batería un 40% más rápido y si estamos fuera de casa o lejos de un enchufe se nos acaba el chollo pronto, eso sí, el portátil estará frío.… Leer artículo completo

  • Luces del coche fantástico con Arduino (I)

    Leds con Arduino

    Un pequeño proyecto con Arduino, para probar todas las salidas con posibilidad de PWM (pulse width modulation), es como una salida parecida a analógica, aunque lo que estamos haciendo es enviar pulsos cuadrados, el valor medio de la tensión será la tensión analógica que buscamos.

    Os acordáis de aquella serie de los 80, El Coche Fantástico, en la que podíamos ver unas luces que se desplazaban de derecha a izquierda dejando un rastro, en eso me basé.… Leer artículo completo

  • Leyendo archivos de imagen en formato BMP en C

    n1214332197_30461081_3311160

    Hoy vamos a practicar a leer una imagen desde un archivo BMP desde C. Aunque existen muchas APIs disponibles que son capaces de hacerlo, y mucho mejor que lo que voy a plantear (puesto que nos limitaremos a BMPs sin compresión y a 24bits por pixel), es un buen ejercicio para leer archivos con un formato especificado y documentado.

    Para este tipo de archivos, tendremos dos cabeceras disponibles, la primera será la cabecera de fichero, y la segunda, la cabecera de información de imagen, que las definimos aquí:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    typedef struct bmpFileHeader
    {
      /* 2 bytes de identificación */
      uint32_t size;        /* Tamaño del archivo */
      uint16_t resv1;       /* Reservado */
      uint16_t resv2;       /* Reservado */
      uint32_t offset;      /* Offset hasta hasta los datos de imagen */
    } bmpFileHeader;

    typedef struct bmpInfoHeader
    {
      uint32_t headersize;      /* Tamaño de la cabecera */
      uint32_t width;               /* Ancho */
      uint32_t height;          /* Alto */
      uint16_t planes;                  /* Planos de color (Siempre 1) */
      uint16_t bpp;             /* bits por pixel */
      uint32_t compress;        /* compresión */
      uint32_t imgsize;     /* tamaño de los datos de imagen */
      uint32_t bpmx;                /* Resolución X en bits por metro */
      uint32_t bpmy;                /* Resolución Y en bits por metro */
      uint32_t colors;              /* colors used en la paleta */
      uint32_t imxtcolors;      /* Colores importantes.
    Leer artículo completo