Publi

  • Ejecutando tareas desde consola simultáneamente con GNU Parallel


    Los ordenadores cada día son más potentes. Y una de las formas de poder ejecutar tareas de forma más rápida, es simultanearlas. Por un lado, es lógico que si una tarea está esperando un dato (ese dato puede venir del disco, del usuario por medio del teclado o el ratón, o descargándoselo de Internet), es normal que el ordenador decida ejecutar otras cosas para no perder el tiempo. Y de hecho se ha aprovechado esto para tener varios programas en ejecución, constantemente dando y quitando el acceso al procesador.… Leer artículo completo

  • Cómo empaquetar programas para Ubuntu o Debian y servirlos desde mi PPA de Launchpad

    Hace unos meses vi una serie de posts de El Atareao donde hablaba del empaquetado de un programa para Ubuntu y subirlo a un PPA. Esto nos va a permitir distribuir nuestros programas para que puedan ser instalados fácilmente. Porque, para nosotros programadores, es muy fácil decir que descomprimamos un archivo y cada uno se lo compile en su ordenador. Pero, en realidad, poca gente se lo va a compilar y poca gente lo va a utilizar.… Leer artículo completo

  • Creando una configuración personalizada para Emacs. Mi .emacs.d con explicaciones detalladas (II – Edición de código)


    Suelo utilizar Emacs para editar código fuente para todos mis programas, tanto proyectos grandes como pequeños. Y, para crear muchos de los ejemplos que pongo en el blog (Aunque a veces la indentación no se copia bien). Por eso, es muy importante, tener herramientas para poder utilizar sin problemas y cómodamente el código en nuestro editor.

    En este post, como ya empecé hace unos días (ver aquí Mi configuración personalizada para Emacs, primera parte) seguiré comentando punto por punto mi configuración actual de Emacs, con las utilidades a mi gusto.… Leer artículo completo

  • Crea rápidamente servicios con Systemd para iniciar demonios o ejecutar scripts


    Hay quien lo odia, hay personas a quienes les gusta y también a quien no le importa. Pero es un sistema que ha entrado en las vidas de muchos de nosotros. Tanto usuarios como sysadmins. Ya que este post va a ser un post pequeño, quiero mostrar un ligero ejemplo paso a paso de la creación de un servicio utilizando systemd. El servicio será sencillo y se limitará a ejecutar un script durante el arranque y el apagado de nuestro sistema, nuestro servidor o nuestro cacharro (si hablamos de IoT).… Leer artículo completo

  • Software de edición de vídeo libre para GNU/Linux

    Edición de vídeo en GNU/Linux

    Me gusta mucho la edición de vídeo. Es una tarea que me relaja desde hace mucho tiempo. Y si puedo meter algún efecto de vez en cuando, mejor. Me encanta investigar e inventar. Aunque, a veces, la mejor forma de transmitir conocimiento, una idea o dar a conocer tu trabajo es de forma audiovisual.

    Aquí viene el dilema, desde hace más de 10 años soy usuario exclusivo de GNU/Linux. Al principio, como muchas personas, empecé haciendo arranque dual con Windows, aunque siempre he sido de no apagar el ordenador, de dejarlo por la noche haciendo algo, o al menos encendido para seguir por donde me quedé el día anterior (costumbre que empezó con Windows, porque al hibernar o al suspender tenía muchos problemas para levantar de nuevo el estado del equipo, incluso con los drivers oficiales y actualizados de todo; aunque en GNU/Linux también me ha pasado alguna vez).… Leer artículo completo

  • 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 el tamaño de las tablas en MySQL? Y alguna idea para nuestros servidores

    Hoy en día tenemos multitud de aplicaciones web instaladas en nuestros servidores. Algunas serán para gestionar nuestros servicios de forma más cómoda, también puede que tengamos varios WordPress instalados, Drupal, una tienda online, CRM, o algunas más específicas. El problema aquí es que como todo en esta vida digital, tiende a ocupar el máximo espacio posible. El caso es que a veces, es muy útil contar con un resumen del tamaño de todas las tablas de nuestro servidor.… Leer artículo completo

  • Programas que me han salvado la vida este 2016

    photo-1477244075012-5cc28286e465Otro de los posts típicos de fin de año que me gusta hacer (bueno, el año pasado fue el primero, aunque hace unos años ya empecé con el tema). Sabemos que un navegador, un cliente de correo y tal vez un programa de música son esenciales (y un S.O., pero no quiero ser pesado con ese tema), así como la mensajería instantánea, aunque en este último caso debemos coger el programa que más utilicen nuestros contactos o alguno compatible.… Leer artículo completo

  • Asus Zenfone 2 Laser, desbloqueo, root, limpieza, sincronización y algunas cosas más

    movil_asus
    Hace un tiempo mi antiguo móvil empezaba a agonizar: perdía la cobertura, la batería duraba cada día menos, se reiniciaba, y muchos más pequeños detalles. Era un THL T11, comprado a una tienda china online. Es cierto que para el hardware que traía (octa core, 2Gb de RAM) no me salió caro, 118€. Aunque creo que a la larga, he perdido más tiempo esperando que reiniciara, rellamando a personas, reiniciando el teléfono y antes de jubilarlo instalando ROMs y tocando scripts de inicio.… Leer artículo completo

  • Cómo saber si existe una función en Bash, saber qué estamos ejecutando y más

    photo-1457317680121-ef12e98979e8

    En nuestra historia como programadores, hacemos infinidad de llamadas a funciones propias, de terceros, de biblioteca, a otros programas a un alias, etc Y si queremos que nuestros scripts sean lo más robustos posible, debemos tener claro antes de la ejecución que aquello que llamamos se puede ejecutar o dar opciones si algún comando o función no existe.

    Por ejemplo, nuestro script necesita hacer una llamada a wget de este tipo:

    wget -O salida http://totaki.com

    Pero queremos hacer que sea compatible con otros sistemas, por ejemplo, con cURL, y no podemos cambiar uno por otro, pues con curl sería con o minúscula:

    curl -o salida http://totaki.com

    Nuestro script podrá ser:

    1
    2
    3
    4
    5
    6
    7
    8
    if [ -n "$(which wget)" ]; then
        wget -O salida http://totaki.com
    elif [ -n "$(which curl)" ]; then
        curl -o salida http://totaki.com
    else
        echo "No puedo descargar el fichero"
        exit 1
    fi

    De modo que probamos la existencia de diferentes programas y utilizamos el que tengamos a disposición.… Leer artículo completo