Como apasionado de la consola, soy una de esas personas que tarda menos en escribir un comando y pulsar enter que en cargar una interfaz gráfica, click, click, control, clic, arrastrar, soltar, click… y el tiempo es muy valioso.
Eso sí, cuando empiezas a pegarle al teclado y escribir comandos en la terminal, parece que todo va más lento, una simple coma, o un espacio es capaz de fastidiarlo todo, pero cuando llevas mucho tiempo, lo tienes todo tan automatizado que te sale el alma.… Leer artículo completo
Vicio con el teclado, comandos, manías y coletillas que nos salen sin pensar
Cómo conocer CPU y memoria ocupada por un grupo de procesos con el mismo nombre
En multitud de ocasiones, mientras estamos trabajando con nuestro ordenador, o incluso con un servidor remoto, se presenta la necesidad de saber la memoria ocupada o la CPU consumida por un determinado proceso.
Para ello tenemos herramientas como top o ps (entre otras) que nos permiten conocer dicha información. Podemos encontrar multitud de tutoriales para ambos comandos, sólo daré una pincelada aquí.ps
Casi siempre que uso ps suelo hacerlo de la siguiente manera:
$ ps ax
para así mostrar todos los procesos que están corriendo actualmente, y si queremos obtener información sobre memoria y CPU podremos ejecutar:
$ ps axl
o
$ ps axo pid,pcpu,pmem,size,cmd
Si queremos obtener más datos como ID de proceso (pid), % de CPU (pcpu), % de memoria (pmem), tamaño en memoria (size), comando que genera el proceso (cmd).… Leer artículo completo
Cómo comprimir y descomprimir datos en memoria o textos en 128 líneas o menos en C
Si queremos que nuestra información ocupe menos, ésta es una buena forma de conseguirlo. Muy útil cuando queremos transmitir información y reducir los bytes transmitidos, es lo que hacen muchas páginas web actualmente, el servidor nos manda la página comprimida y luego el navegador se encarga de descomprimirla antes de mostrarla y como por lo general se tarda menos en comprimir-enviar-descomprimir que en enviar sin comprimir antes es algo que acelera la navegación web.… 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
Windows se pone agresivo! Instala Windows 10 o te saco los ojos !!!
Muchos usuarios durante estos días reciben un mensaje parecido a este. Parece que Microsoft se está poniendo serio con el reemplazo de versiones anteriores de Windows por Windows10. Lo entiendo, así se centran más en su nuevo sistema y pueden dejar un poco más de lado el mantenimiento de versiones anteriores, algunas de las cuales ya están desatendidas.
Aunque parece que fue ayer cuando salió Windows7, ya hace 6 años y nosotros nos vamos haciendo mayores y las actualizaciones que recibirá hasta 2020 serán sólo de temas de seguridad, por lo que ya no tendrán novedades en el sistema.… Leer artículo completoLectura, escritura y eliminación de elementos de un array multidimensional en PHP usando separadores
Puede parecer muy complejo así dicho. Pero de lo que se trata es de proporcionar una forma más natural para acceder a lo elementos de un array en PHP. Nos podemos imaginar un array de configuración de una aplicación, donde encontremos apartados como cookies, idiomas, usuarios, rutas, urls, apis externas, bases de datos e infinidad de cosas más. Hace un tiempo veíamos una función para acceder a una clave de un array, comprobando antes la existencia de esa clave y dándonos la opción de devolver un valor por defecto en caso de que dicha clave no exista.… Leer artículo completo
Singletons en C++. Intentando que sean seguros en hilos (thread safety) II
Ayer 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
Creando un mutex con semáforos entre procesos hijos en C [fork()]
Hemos estado viendo cómo compartir variables entre procesos hijos, y dejamos un poco en el tintero la implementación de mutex en ese caso, esta vez, para implementar el mutex vamos a utilizar semáforos. Estos semáforos también tienen que ser variables compartidas para funcionar correctamente.
Los semáforos tendrá un funcionamiento peculiar. En principio, pensemos en ellos con los valores 1 y 0. Por tanto, si el semáforo vale 1, el semáforo está abierto y lo haremos 0, pero si vale 0, nos esperaremos hasta que valga 1 (al contrario que un while (semaforo==0); utilizando semáforos, será el sistema operativo el que active nuestro proceso cuando el semáforo vale 1 por lo que podemos utilizar los recursos del sistema para otra cosa mientras).… Leer artículo completo
Variables compartidas entre procesos hijos en C [fork()]
Otra forma de enfrentarse con la concurrencia, en el maravilloso mundo de hacer varias cosas al mismo tiempo, es utilizar procesos hijos con fork(). La principal diferencia con respecto a los threads es que éstos son procesos completos, es decir, el sistema operativo les ha dado una zona de memoria de código, otra de datos, y otra de pila, a diferencia de los threads que compartían código y datos, sólo tenían la pila diferente.… Leer artículo completo
Enlazado dinámico en C++ (dynamic linking) IV: Permitir plug-ins en nuestra aplicación
Un ejemplo práctico de uso del enlazado dinámico es la posibilidad de crear plug-ins para nuestros programas. Estos plug-ins nos permitirán aumentar las funcionalidades de nuestro programa sin necesidad de recompilarlo, utilizando el código de añadidos binarios. Para poder «hablar» con los demás binarios, es necesario haber establecido antes unas normas para ese diálogo.
Intentaré poner un ejemplo más o menos completo, pero sencillo, y se podrá descargar el código fuente al final del artículo (serán bastantes archivos).… Leer artículo completo
Últimos comentarios