Cuando te independizas y te vas a vivir a un piso o a una casa te preguntas, ¿cómo serán mis vecinos? Por un lado tendremos al típico que deja la basura en la puerta de su casa durante todo el día y esparce olores al resto de los vecinos; o el que desea compartir la música que escucha con los demás y el que cuando entra al edificio y ve que vas a entrar va corriendo al ascensor para no esperarte… Aunque como procesos en ejecución en un entorno Linux muchas veces queremos saber cómo son nuestros vecinos y, al contrario de lo que puede parecer en una comunidad de vecinos, éstos suelen ser mucho más receptivos y dispuestos a darnos información.… Leer artículo completo
Procesar argumentos de entrada en nuestros shell scripts con getopt
Hace unos días analizamos cómo tratar los argumentos de entrada desde un shell script en Bash de una manera sencilla. Aunque, cuando la cosa se complica, debemos utilizar herramientas algo más avanzadas. Tal y como hicimos con getopt para C [parte 1, parte 2], vamos a hacer lo mismo en un shell script.
Aunque aquí tenemos dos posibilidades, que hacen prácticamente lo mismo getopt y getopts.… Leer artículo completo
Cómo procesar múltiples argumentos de entrada en scripts para Bash
Los argumentos de entrada de un programa nos sirven para modificar ligeramente el comportamiento de un programa dentro de las opciones que nos permita su desarrollador. Y, sobre todo, siempre que trabajamos con programas para consola, es muy buena idea permitir que nuestros usuarios puedan utilizar funciones extras o especificar sus propios parámetros de trabajo sin necesidad de modificar el programa.
Si trabajáis con lenguajes como C o C++ podéis leer algo de información al respecto:
- Cosas que damos por hechas en C/C++: int main(int argc, char *argv[])
- Cómo gestionar los parámetros de nuestros programas con getopt en C
- Cómo gestionar los parámetros de un programa en C (parte 2: parámetros largos)
Pero, cuando hacemos algún script en Bash para línea de comandos, también puede resultar muy útil, tanto para especificar archivos de entrada, como las propias opciones de nuestro programa.… Leer artículo completo
Cifrar y descifrar un archivo fácilmente con openSSL
Queremos cifrar (o como queráis, codificar, encriptar…) un documento rápidamente desde la consola, con la posibilidad de que pueda ser descifrado. Por ejemplo, nos puede servir para transmitir por e-mail (o un chat) un archivo confidencial, para almacenar elementos privados en la nube, o para que alguien no se entere del contenido de un archivo.
Guía rápida
Para codificar un archivo:
1$ openssl aes-256-cbc -in mi_archivo -pass pass:passw0rd -out mi_archivo.ency para decodificar:
1$ openssl aes-256-cbc -d -in mi_archivo.enc -pass pass:passw0rd -out mi_archivoExplicación
El primer argumento es el algoritmo de cifrado/descifrado, podéis encontrar algoritmos como aes, des, base64 y muchos más.… Leer artículo completo
Cómo hacer una barra de progreso gráfica para las transferencias con rsync
Rsync es una gran utilidad, de esas en las que al principio da miedo meterse, pero, cuando un día la descubres no quieres utilizar otra cosa y esperas el momento en que vuelves a utilizarla y encima se lo dices a tus amigos. Que luego te miran con cara de friki, y te dejarán de hablar, pero bueno… esperas pacientemente el momento en que ellos descubran Rsync.
Rsync, es una utilidad para copiar archivos.… Leer artículo completo
Cómo gestionar los parámetros de un programa en C (parte 2: parámetros largos)
Hace unos días publiqué Cómo gestionar los parámetros de nuestros programas con getopt en C como una introducción a la gestión de los argumentos desde nuestros programas en C. De esta forma podremos hacer nuestros programas más flexibles aceptando una entrada del usuario en forma de parámetros y así modificar el comportamiento.
Antes de nada: WordPress cuando ve dos guiones seguidos (- y -) lo interpreta como un guión largo.… Leer artículo completo
Callbacks en C++11, llamando a métodos con un objeto asociado (II)
Hace dos semanas hablábamos de Callbacks en C++11 nuevas posibilidades para un software más potente . Empezamos con una pequeña introducción para «almacenar» una función en una variable o un argumento de función y llamarla desde ahí, incluso introdujimos las funciones anónimas o lambdas.
Ahora, como no podía ser de otra forma, y dado que estamos en un lenguaje orientado a objetos, en el que queremos aprovechar todo su potencial. Vamos a hacer varios ejemplos en los que llamaremos a métodos de una clase de varias formas diferentes.… Leer artículo completo
Cómo gestionar los parámetros de nuestros programas con getopt en C
Cuando hablamos de argumentos o parámetros de un programa en C, debemos pensa en los parámetros tan raros que pasamos a la función main(). En este caso, podemos ver cómo con dos argumentos (argc, o el número de argumentos que tenemos y argv o el contenido de esos argumentos, somos capaces de gestionar la información que un usuario nos pasa justo cuando ejecuta nuestro programa.
Lo más sencillo que podemos hacer con los argumentos
Imaginemos este ejemplo, de un programa donde queremos copiar un archivo origen a un destino (como cp), primero comprobamos que el número de argumentos es suficiente y luego imprimimos en pantalla el valor de cada uno (es un ejemplo inofensivo, no vamos a copiar nada).… 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
Definir valores de variables desde una cadena de caracteres [C++11]
A veces, es muy útil poder definir variables de diversos tipos (int, string, double, bool, etc) o incluso inicializar clases todo desde un string. El objetivo es dar al usuario de nuestro programa más libertad aún y no combernos demasiado la cabeza transformando cada una de las variables. Por otro lado, no siempre podrán estar definidas todas, por lo que hacer una solución específica para cada cao es un poco largo.… Leer artículo completo
Últimos comentarios