sábado, 11 de diciembre de 2021

Introducción a Quarkus

Como primer paso vamos a comenzar con la construcciones de una aplicación Quarkus, primero debemos instalar el JDK o en mi caso que usare el GraalVM para hacer aplicaciones nativas con Quarkus.

Primero comenzaremos con instalar Quarkus en linux:

curl -Ls https://sh.jbang.dev | bash -s - app install --fresh --force quarkus@quarkusio

en caso de que esto falle pueden bajar el script desde la terminal de la siguiente manera

wget  https://sh.jbang.dev > jbang

después de descargar solamente instalan de manera normal 

./jbang - app install --fresh --force quarkus@quarkusio

Una vez que tenemos instalado el Quarkus procedemos a crear un proyecto:

quarkus create && cd code-with-quarkus

una vez estando en la carpeta del proyecto únicamente procedemos a correr el proyecto  con el siguiente comando:

quarkus dev

Hasta este punto todo va bien ahora comenzaremos a configurar nuestro entorno de desarrollo para esto usare IntelliJ IDEA.

cuando se abre por primera vez debemos de seleccionar la pestaña de proyectos:


Damos click sobre el botón de open y buscamos el proyecto sobre el directorio donde decidimos crearlo:

Seleccionamos y presionamos en OK.
y se lanza el proyecto de manera automática:


En automático Quarkus ya tiene el API Rest activo solo es cuestión de hacer sus propias rutas y hacer la lógica de fondo.

Para terminar de configurar su entorno de desarrollo deberán presionar las teclas "Ctrl+alt+mayúsculas+s" y les saldrá la siguiente ventana.
En esa parte configuran el JDK con el que quieren compilar sus aplicaciones en caso de tener múltiples JDK. 

Con esto terminamos la primera parte de como crear la plantilla para el proyecto Quarkus. 








jueves, 29 de marzo de 2018

como solucionar 

"[drm:intel_pipe_update_end [i915]] *ERROR* Atomic update failure on pipe A (start=17739 end=17740) time 151 us, min 763, max 767, scanline start 756, end 770"

Este cambio puede verse afectado por un parámetro que puede pasarse al controlador durante el tiempo de arranque. Puede hacer esto en la línea de comandos de GRUB (gestor de arranque) o crear un archivo para el controlador.  
Creo que el segundo método es más fácil de implementar.
En /etc/modprobe.d/, debe crear un archivo de i915.conf, si aún no existe. Luego, dentro de este archivo, debe agregar la siguiente línea:

options i915 enable_psr=0 


domingo, 18 de marzo de 2018

Actualizar firefox en debian 9

bueno esto es muy sencillo lo primero que tenemos que hacer es ir su pagina y descargar el  tar.bz2 una vez descargado el archivo en mi caso es la version 59 de firefox.
Lo siguiente es abrir la terminal y saber cual es la ruta del antiguo firefox para lo cual usamos el comando whereis

 
una vez que tengamos la ruta como se muestra en la imagen anterior tenemos que acceder a la carpeta y borrar todo 

cd /usr/lib/firefox-esr
sudo rm -R *

una vez que dejamo limpio el directorio seguimos y vamos a nuestra carpeta donde esta descargado nuestro firefox en mi caso es la carpeta de descargas 
y escribimos lo siguiente 
sudo tar xvf firefox-59.0.1.tar.bz2 -C /usr/lib/firefox-esr

y bueno con eso tenemos ahora solo nos queda arreglar una pequeña cosa con el acceso de escritorio para eso vamos a la siguiente dirección 

sudo nano /usr/share/applications/firefox-esr.desktop

 en la linea de 
Exec=/usr/lib/firefox-esr/firefox-esr %u

lo dejamos de la siguiente manera 
Exec=/usr/lib/firefox-esr/firefox %u 
 y ahora listo solo nos queda disfrutar de firefox actualizado


 


La mejor opcion de reproductor para debian 9

lplayer

cuya pagina oficial es la siguiente atareao después de que publicaran lplayer un reproductor minimalista quise probar para ver como estaba y si cumplía mis expectativas déjenme decir que es muy buen reproductor por su puesta aquí esta el código para poder darle un ojo.
después de probar algo que había estado buscando me agrado mucho a un hay algunas cosas que hacen falta pulir y otras que falta por desarrollar  bueno seguiremos los clásicos pasos para instalar desde repositorio.

sudo add-apt-repository ppa:atareao/lplayer
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6A9653F936FD5529
sudo apt install lplayer


Y listo  con eso tendremos instalado el reproductor mas fácil no se puede
ahora solo hace falta una extensión para poder administrar el reproductor cuando este en segundo plano Media player Indicator.
 
 
Incluso pude notar el consumo de RAM del reproductor y me pareció muy ligero
Espero que esto les sirva :)




 

sábado, 27 de enero de 2018

Limpiador de cache y trash de debian/ubuntu

El siguiente script permite limpiar el ordenador



#!/bin/bash
if [ "$(whoami)" != "root" ]
then
  echo "¡Tienes que ejecutar este script como superusuario!"
  exit 1
fi

# Obtener información de memoria
liberarmemoria_antes=$(cat /proc/meminfo | grep MemFree | tr -s ' ' | cut -d ' ' -f2) && liberarmemoria_antes=$(echo "$liberarmemoria_antes/1024.0" | bc)
memoriacache_antes=$(cat /proc/meminfo | grep "^Cached" | tr -s ' ' | cut -d ' ' -f2) && memoriacache_antes=$(echo "$memoriacache_antes/1024.0" | bc)

# Output Information
echo -e "Esta secuencia de comandos borrará la memoria en caché y liberará su ram.\n\nPor el momento tienes $memoriacache_antes MiB cached y $liberarmemoria_antes MiB de memoria liberada."
free -m -h
echo "limpiando";
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get clean
echo "Borrando temporales";
rm -vfr /tmp/*
echo "Limpiando la cache";
sudo sync ; echo 3 > /proc/sys/vm/drop_caches
sudo swapoff -a && sudo swapon -a
echo "Limpiando papelera de reciclaje ";
sudo rm -rf ~/.local/share/Trash/*
#  
if [ "$?" != "0" ]
then
  echo "Algo salió mal, es imposible sincronizar el sistema de archivos."
  exit 1
fi

# Borrar el búfer del sistema de archivos usando "sincronización" y Borrar cachés
sync && echo 3 > /proc/sys/vm/drop_caches

freemem_after=$(cat /proc/meminfo | grep MemFree | tr -s ' ' | cut -d ' ' -f2) && freemem_after=$(echo "$freemem_after/1024.0" | bc)

# Output Summary
echo -e "This freed $(echo "$freemem_after - $liberarmemoria_antes" | bc) MiB,  entonces ahora tienes $freemem_after MiB de meoria libre RAM."
free -m -h
exit 0
primero tendremos que darle permisos al script de la siguiente manera:

chmod +x limpiar.sh

ahora lo ejecutamos de la siguiente manera

sudo ./limpiar.sh

nos quedaría de la siguiente manera
listo!!

miércoles, 30 de marzo de 2016

Thread en lenguaje C sobre entorno linux - Creación de un hilo

Thread Creation - Creación de un hilo
Cada hilo en un proceso se identifica mediante un ID de hilo. Cuando se hace referencia a los ID de hebra en los programas de C o C ++, se utiliza el tipo pthread_t.

Tras su creación, cada hilo realiza una función.Este es sólo una función ordinaria y contiene el código que el hilo debe ejecutar. Cuando la función devuelve, el hilo termina. En GNU / Linux, las funciones de hilos toman un único parámetro, de tipo void*, y tienen un tipo de retorno void *.


El parámetro es el argumento de hilo:
GNU / Linux pasa el valor a lo largo del hilo sin mirarlo.Su programa puede utilizar este parámetro para pasar los datos a un nuevo hilo. Del mismo modo, el programa puede utilizar el valor de retorno de pasar los datos a partir de un tema existente de vuelta a su creador.

La función pthread_create crea un nuevo hilo.Y usted le proporciona lo siguiente:
  1. Un puntero a una variable pthread_t, en el que el ID del hilo del nuevo hilo es almacenado. 
  2. Un puntero a un objeto de atributo hilo.Este objeto controla los detalles de cómo el hilo interactúa con el resto del programa. Si pasa NULL como el atributo de hilo, un hilo se creará con los atributos de hilo por defecto.Esto se discutiría mas adelante. 
  3. Un puntero a la función del hilo. Este es un puntero de función ordinaria, de este tipo:    void* (*) (void*)
  4. Un valor del argumento de hilo de tipo void *. Este pasa simplemente como argumento a la función del hilo cuando el hilo comienza a ejecutar.
Una llamada a pthread_create retorna inmediatamente, y el hilo original continúa ejecutando las instrucciones después de la llamada. Mientras tanto, el nuevo hilo comienza a ejecutar la función del hilo. Y los horarios de los dos hilos de Linux trabajan de forma asíncrona, y su programa no deben confiar en el orden relativo en el que las instrucciones se ejecutan en los dos hilos.
El siguiente programa crea un hilo que imprime x de forma continua en el error estándar. Después de llamar a pthread_create, el hilo principal o imprime de forma continua en el error estándar.

 Ejemplo:
#include <pthread.h>
#include <stdio.h>
/* Imprime x como salida de error. El parámetro no se utiliza. No retorna. */
void* print_xs (void* unused)
{
while (1)
fputc ('x', stderr);
return NULL;
}
/* El inicio del programa */
int main ()
{
pthread_t thread_id;
/* Crea un nuevo Hilo. El nuevo hilo se ejecutará la función print_xs. */
pthread_create (&thread_id, NULL, &print_xs, NULL);
/* Imprimir de forma continua 'o' como salida estándar de errores. */
while (1)
fputc ('o', stderr);
return 0;
}
compilar y enlazar este programa mediante el siguiente codigo:
gcc nombre.c -o nombre -lpthread

intente ejecutarlo para que pasa. Observe el patron impredecible de las x's y las o's como linux alterna horarios de los hilos. 

En circunstancias normales, un hilo sale de una de dos maneras. Una forma, como se ilustra anteriormente, es mediante la devolución de la función del hilo. 
El valor de retorno de la función del hilo se toma como el valor de retorno del hilo. Alternativamente, un hilo puede salir de forma explícita llamando pthread_exit.
Esta función puede ser llamado desde dentro de la función del hilo o de alguna otra función de llamada directa o indirectamente por la función de hilo.El argumento para pthread_exit es el valor de retorno hilo.

Thread en lenguaje C sobre entorno linux - introduccion

PTHREAD
HILOS, por ejemplo los procesos, son un mecanismo para permitir que un programa pueda hacer más de una cosa a la vez. Al igual que con los procesos, subprocesos parecen funcionar simultáneamente;El kernel de Linux es el que planifica de forma asíncrona, interrumpiendo cada hilo de vez en cuando para dar a otros la oportunidad de ejecutarse.

Conceptualmente, existe un hilo dentro de un proceso. Los hilos son una unidad de grano más fino de la ejecución de procesos. Cuando se invoca un programa, Linux crea un nuevo proceso y en ese proceso crea un solo hilo, que ejecuta el programa de forma secuencial. Ese hilo puede crear hilos adicionales; todos los hilos se ejecutan en el mismo programa y en el mismo proceso, pero cada hilo puede ser la ejecución de una parte diferente del programa en cualquier tiempo dado.
Se a visto cómo un programa puede bifurcar un proceso hijo. El proceso hijo que inicialmente ejecuta el programa de su padre, con la memoria virtual de su padre, los descriptores de archivo, etc.
"En copiado". El proceso hijo puede modificar su memoria, cierre de los descriptores de fichero, y similares sin afectar a su padre, y viceversa. Cuando un programa crea otro hilo, nada se copia. La creación y el hilo creado comparten el mismo espacio de memoria, los descriptores de archivos y otros recursos del sistema que el original.
Si cambiamos de un hilo, el valor de una variable, por ejemplo, el otro hilo posteriormente verá el valor modificado. Del mismo modo, si un hilo cierra un descriptor de archivo, otros hilos no pueden leer o escribir en el descriptor de archivo. Debido a un proceso y todos sus hilos pueden ser ejecutando sólo un programa a la vez, si cualquier hilo dentro de un proceso de llama uno de las funciones exec , todos los otros hilos se terminaron (el nuevo programa puede, por supuesto, crear una nuevo hilo). 
GNU / Linux implementa la API de hilos POSIX estándar (conocido como pthreads). Todas funciones de hilo y tipos de datos se declaran en el archivo de cabecera <pthread.h> .Las funciones del pthread no están incluidos en la biblioteca estándar C. En su lugar, están en libpthread, lo que debería agregar -lpthread a la línea de comandos cuando se vincula a su programa.