Publi

  • Operador coma. Cómo incorporarlo a nuestro día a día con muchos ejemplos en C

    El operador coma. ¿Cómo empezar a usarlo?
    Seguro que lo has visto cientos de veces por ahí, pasando desapercibido en multitud de programas hechos en C. Es más, incluso el primer día que empezaste a ver programación os visteis las caras y casi no te diste cuenta. Incluso puede que lo hayas utilizado sin siquiera ser consciente de lo que hace en realidad.

    Otros muchos sí que sabréis de qué va este operador, y me gustaría que los que sí sabéis de qué va, sugirierais más ejemplos en los comentarios.… Leer artículo completo

  • ¿Cómo funcionan los WebSockets? Comunicación bidireccional en tiempo real con el navegador web

    photo-1434396505260-9ec0d6491795

    Internet poco a poco va haciéndose más y más grande. A medida que crecen sus usuarios y dispositivos conectados lo hacen las necesidades de los mismos, y de los servicios que ofrece. Hoy vamos a meternos con los WebSockets. Este sistema se utiliza para hacer una comunicación bidireccional y persistente entre un cliente y un servidor web. Pero, ¿para qué queremos esto?

    Un poco de background

    Para realizar una comunicación entre un cliente web (navegador) y un servidor web (cualquier programa que sea capaz de enviar información coherente a un navegador) se utiliza el protocolo HTTP (por debajo utiliza TCP/IP y muchas más cosas, pero no profundizaremos tanto).… Leer artículo completo

  • Cómo empotrar datos dentro de un ejecutable hecho en C

    photo-1453179592584-e2587867cfff

    En nuestras andanzas como programadores, seguro que nos hemos encontrado alguna vez en esta situación. Tenemos un programa que vamos a distribuir, pero que tiene ciertos archivos asociados (imágenes, texto, scripts, etc) que deben ir junto con el programa.
    En un primer momento podemos distribuir los archivos junto con el programa, y es una buena solución hasta que a alguien le da por cambiar esos archivos y consiguen que nuestro programa haga cosas diferentes a aquellas para las que ha sido pensado originalmente.… Leer artículo completo

  • Generando imágenes en C, sólo por diversión, empezando desde cero (Parte I)

    colores_y_formasHace tiempo que no pongo nada de imagen digital, y ya tenía ganas. No haremos nada complicado, pero muchas veces, cuando empezamos a programar, pensamos en representar el contenido de un array en una imagen, o para esas veces en que pensamos que un simple algoritmo nos puede ayudar a crear la imagen que queremos.

    Cómo generar las imágenes

    Para generar las imágenes, vamos a pensar en un buffer sencillo, lineal de tipo unsigned char, o uint8_t, para imágenes en blanco y negro… vamos a empezar con imágenes sencillas, ya meteremos color… y más cosas.… Leer artículo completo

  • Callbacks en C++11 nuevas posibilidades para un software más potente (I)

    My beautiful picture

    My beautiful picture

    Hace tiempo, hice una serie de posts sobre callbacks:

    Hay algunos posts más, pero se salen del tema (y seguro que salen sugeridos más abajo). El caso es que dejé un poco el tema de lado y me gustaría retomarlo con los cambios de la especificación C++11 (vale, tenemos C++14 lista, pero la versión de 2011 es una de las que más cambios introdujeron (y que también valen para C++14).… Leer artículo completo

  • Comparativa de acceso rápido y seguro a un elemento de un array unidimensional [PHP]

    477292813_c913243065_o

    Nota: Si usas algún Framework PHP, lo más seguro que estas funciones no te sirvan, ya que muchos Frameworks suelen tener cosas parecidas, más o menos completas que hacen lo mismo. Si eres de los que trabajan “a pelo”, estás creándote tu propio framework, tal vez te interese todo esto.

    Acceso simple a un elemento de un array

    Esto es una tarea sencilla en PHP, sólo tenemos que poner entre corchetes la clave a la que queremos acceder y podremos acceder a su valor:

    1
    2
    3
    <?php
    $miArray['precio']=12.34;
    echo $miArray['precio'];

    Aunque, el problema viene cuando dicha clave no existe, veremos una notificación de PHP indicando que el índice especificado no existe:

    PHP Notice: Undefined index: precio in /home/pruebas/test.php on line 3
    PHP Stack trace:
    …..

    Leer artículo completo
  • Un hito en el blog 256 = 2^8 Me gusta en Facebook y otras cosas del 256

    Es un momento interesante y curioso en la historia del blog. Ya no puedo almacenar el número de likes de Facebook en un byte. Es una tontería, pero me ha hecho ilusión y dado el carácter el blog no podía dejarlo pasar.

    ¿Qué tiene de especial?

    Tal vez sea por la forma de sus dígitos, por su sonido al pronunciarse (personalmente me gusta más el 256 que el 512) o que es el número de combinaciones que se pueden formar con la unidad mínima de memoria direccionable en la mayoría de las arquitecturas de computadoras actuales.… Leer artículo completo

  • 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

  • Formateando la salida en Serial para Arduino [1ª parte] ( y no sólo para Arduino )

    Arduino - Minicom - Emacs Una de las cosas que más echo de menos programando con Arduino es el formateo de texto de cara al serial, ya que éste sólo permite cadenas de texto o números, y no todo junto. En principio es comprensible, el sistema debe estar en un tamaño muy reducido, y esta característica engordará el binario. como mínimo 1.5Kb; Podemos optar por varias soluciones que explicaré en este post:

    • sprintf()
    • Usando la clase String
    • vsnprintf()
    • Inventar nuestro printf() particular con salida a cadena
    • Inventar nuestro printf() particular con salida a Serial

    Usando sprintf()

    Esta forma es muy sencilla y engordará nuestro ejecutable 1.5Kb aproximadamente.… Leer artículo completo