Publi

  • Permitir que nuestros usuarios ejecuten tareas controladas en nombre de otro. #SUID #SGID – Con ejemplos y ataques

    Uno de los puntos fuertes de un sistema Unix es su forma de gestionar los privilegios de usuario. Se suele decir que el malware en GNU/Linux sólo afecta al usuario por el que entra (y podrá hacer todo lo que éste pueda hacer), por lo tanto será muy difícil (nada es imposible, y siempre hay bugs) que un programa ejecutado con privilegios de usuario normal afecte al sistema completo.

    Eso sí, otro de los puntos fuertes de un sistema tipo Unix, es que nos deja automatizar absolutamente todo.… Leer artículo completo

  • Cómo obtener información de salud de tu sistema Linux o tu servidor en C y C++ (I. Memoria)

    Es algo necesario para el buen funcionamiento de nuestras aplicaciones. Para añadir robustez a nuestros sistemas, haciendo que éstos se comporten de manera adecuada en situaciones imprevistas. Por ejemplo, si necesitamos crear un archivo y añadir cierta información, podemos, a priori, comprobar que el dispositivo en el que vamos a escribir tiene suficiente espacio libre, lo que nos puede ahorrar suplicios si los ficheros son demasiado grandes. También deberíamos ser capaces de comprobar que un disco de red está conectado antes de trabajar con él y, en muchos casos, anticiparnos a largas esperas y bloqueos por parte del sistema operativo.… Leer artículo completo

  • Experimento: Creando un nuevo efecto de imagen para el secuenciador de vídeo de Blender (VSE) con código fuente


    Lo que pongo aquí es solo un experimento. Como dije en mi anterior post, me encanta Blender para hacer montajes de vídeo y para mí, es el mejor editor de vídeo disponible para GNU/Linux. Aunque tiene un pequeño defecto, bueno, muy grande… apenas tiene efectos para los vídeos, por lo que si quieres algún efecto que no sea un crossfade, una corrección de color, o un blur, vas a tener que hacerlo de otra forma y eso implica exportar vídeo y luego importarlo cuando esté hecho.… Leer artículo completo

  • Operaciones básicas con cadenas en C++: capitalización, conversiones, recorte, recorrido y más

    Como ha sucedido con otros lenguajes, C++ también ha evolucionado. Ha madurado mucho desde aquellos códigos que programábamos hace años y se nota. Por un lado, podemos pensar que al sumar abstracción en ciertos aspectos nos separa de la máquina y hace nuestro código más lento. Suma comprobaciones, hace más callbacks y en definitiva, una sencilla tarea que completaba en pocos cientos de operaciones, ahora son pocos miles. Aunque en su favor, podemos decir que aquello que programábamos en 15 o 20 líneas de código se ha reducido a una o dos, reduciendo así los puntos de ruptura, posibles bugs y calentamientos de cabeza futuros.… Leer artículo completo

  • 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 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

  • 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

  • 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 la salida de nuestros programas con plantillas en C++ con Silicon en pocas líneas

    photo-1456983887044-b5ecb1059660

    A medida que el hardware y el software van evolucionando, van cambiando las preferencias a la hora de desarrollar un producto. Hace unos años, el objetivo principal era que el producto final funcionara, intentar hacer el mínimo número de operaciones para que el software corriera en un ordenador de la mejor forma posible. Desde hace unos años, el hardware es capaz de hacer muchas cosas y muy rápido, los lenguajes han evolucionado y se han optimizado mucho; por lo tanto, podemos aprovechar y hacer que desde el punto de vista del mantenimiento, legibilidad del código, hacer que el código sea poesía y hacer que todas las piezas encajen perfectamente.… Leer artículo completo

  • Ese inesperado día en el que decides devolver el favor

    photo-1418874586588-88661ed80c4a

    El mundo del software libre es amplio y complejo. Se ha hablado mucho de las 4 libertades del software libre, definidas por Richard M. Stallman1 (libertad de usarlo con cualquier propósito, libertad de estudiarlo y modificarlo de acuerdo a tus necesidades, libertad de compartir las copias del programa y libertad para mejorarlo). Si lo pensamos, desde un punto de vista humano, tal vez pensemos que todos los programas de nuestro ordenador son así.… Leer artículo completo