Publi

  • ¿Cómo crear un chat utilizando WebSockets en C++? Y no morir en el intento

    websockets_en_cpp
    Los WebSockets proporcionan un canal bidireccional entre el servidor y el navegador y nos permiten crear aplicaciones aún más dinámicas y rápidas. Hace unas semanas vimos cómo funcionan los WebSockets por dentro. En este post vamos a ver una implementación de los mismos en C++, en realidad la parte de navegador como habréis imaginado será Javascript, HTML y CSS, como siempre; será la parte de servidor la que programemos en C++.… Leer artículo completo

    [Leer más...]
  • 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

    [Leer más...]
  • Instalar múltiples versiones de PHP y extensiones con phpfarm en Ubuntu/Mint/Debian…

    photo-1441749074938-1c6782303919
    Si llevas varios años trabajando con este lenguaje de programación. Tal vez se te ha presentado un pequeño problema: tienes varios desarrollos a lo largo del tiempo y tienes código en una versión de PHP antigua que no es compatible con versiones nuevas. Y, por otro lado, mientras mantienes una versión de producción de otro proyecto (para PHP 5.5 o PHP 5.6), quieres empezar a hacer pruebas para ver cómo se comporta con PHP7, y todo ello sin morir en el intento.… Leer artículo completo

    [Leer más...]
  • Conocer el tipo MIME de un archivo gracias a GIO en lenguaje C

    3210986710_d3cbbdac55_b

    La biblioteca GIO nos proporciona una capa más sobre el manejo de archivos. Nos aíslan un poco de las llamadas al sistema operativo para hacer muchas operaciones sobre archivos facilitando el uso de la biblioteca en aplicaciones multiplataforma. Así como dándonos algunas funciones interesantes que ya vienen hechas.

    La gran ventaja de GIO frente al acceso normal a un archivo es que hace transparente al programador el acceso a sistemas de archivos compartidos (en Windows, Mac o Linux) sin tener que gastar mucho tiempo en todo eso.… Leer artículo completo

    [Leer más...]
  • 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

    [Leer más...]
  • Enlazado dinámico en C++ (dynamic linking) III: Carga dinámica de objetos

    Hasta ahora, en varios artículos referentes a este tema: Introducción a dynamic linking, Carga dinámica de bibliotecas, hemos visto como, en lenguaje C, podemos escribir bibliotecas de funciones y, sin necesidad de conocer su código fuente, ejecutar funciones encerradas dentro de esas bibliotecas en nuestros proyectos, así como cargar dicho código al vuelo.

    Pero todo se complica un poco cuando queremos hacer lo mismo con C++, y en concreto, cuando estamos exportando clases completas, ya que de primeras necesitamos una forma de traernos algo parecido a un tipo, el nombre de la clase, y con dlopen() y dlsym(), nos podemos traer sólo una referencia de memoria, por lo que junto con la clase que programemos en C++ tendremos que incluir una función que llame al constructor.… Leer artículo completo

    [Leer más...]
  • Preparando nuestro entorno para Arduino sin Java

    Arduino Emacs

    Como comenté en el post anterior, la plataforma Arduino viene con un IDE hecho en Java, no es muy completo, pero nos hace el apaño, aunque, como es mi caso, estoy acostumbrado a Emacs. Aunque esta guía no estará limitada a este editor, ni a Ubuntu (o basados en él).

    El objetivo, es usar nuestro IDE o editor preferido para trabajar con estos pequeños bichos programables.

    En principio tenemos que instalar las herramientas para compilar los programas para la plataforma (esto es común con todas las instalaciones).… Leer artículo completo

    [Leer más...]
  • Sabayon, a medio camino entre la cocina y la oficina

    Zabaglione
    El sabayón es un postre italiano del siglo XVI… bueno y también una distribución Linux bastante completa, aunque no se oiga mucho hablar de ella, ni ha salido en las listas anuales de mejor distribución del año ni nada, creo que es una de las que tenemos que tener en cuenta.

    Es cierto, que en el perfil de usuario de esta distribución no entra cualquier persona, ya que, aunque te da muchas cosas hechas, también hay muchas otras que hay que retocar (nada es a gusto de todo el mundo).… Leer artículo completo

    [Leer más...]
  • WiFi USB Conceptronic C150RUSM (RT3070) Editando el módulo para que funcione

    c150rusm_prodpiczm_1Si habéis adquirido este adaptador Wifi USB, veréis que Linux, al menos hasta la fecha, no lo detecta, es más, pasa de nosotros, y aunque carguemos el driver a mano con modprobe; seguirá sin pasar.

    Afortunadamente, no es nada difícil, y es algo que me hace estar un poco más feliz por utilizar software libre, y es que si el driver no reconoce el dispositivo como suyo, voy a presentárselo.

    En principio, no sabía qué driver utilizaba el dispositivo.… Leer artículo completo

    [Leer más...]
  • La importancia de conocer atajos de teclado en nuestro IDE/Editor favorito

    photo-1454165205744-3b78555e5572_r
    Siempre aconsejo a alguien que esté aprendiendo a programar que lo primero es sentirte bien con el entorno o IDE que manejas. A veces, en muchos centros de enseñanza se impone un entorno, por ejemplo Dev-Cpp o Borland C, pero cuando nos toca ponernos a programar algo en serio, ya sea para nosotros o para trabajar lo primero es elegir un IDE con el que nos encontremos cómodos.

    Tanto para personas que están empezando como para expertos suelo hacer que prueben alguno de estos tres: Eclipse, Netbeans o Code::Blocks y que echen un rato intentando familiarizarse con el entorno, sus caprichos y su metodología.… Leer artículo completo

    [Leer más...]