miércoles, 5 de enero de 2022

in_array multidimensional en PHP

 Para buscar dentro de un array si existe o no un valor en PHP tenemos la función nativa in_array que devuelve true o false dependiendo de si encontró la coincidencia, pero si tenemos un array multidimensional y queremos buscar sobre alguno de los valores de los campos (keys) de ese array se nos vuelve mas complicado, para eso podemos añadir esta función que realmente cumple muy bien con el cometido 

function in_multiarray($elem, $array,$field)
{
    $top = sizeof($array) - 1;
    $bottom = 0;
    while($bottom <= $top)
    {
        if($array[$bottom][$field] == $elem)
            return true;
        else 
            if(is_array($array[$bottom][$field]))
                if(in_multiarray($elem, ($array[$bottom][$field])))
                    return true;
        $bottom++;
    }        
    return false;
}

y para usarla en un IF no hay mas que llamarla de esta forma:

in_multiarray("loquequieresbuscar", $dondequieresbuscar, "keydondebuscar") {}

Créditos: https://stackoverflow.com/questions/4128323/in-array-and-multidimensional-array  

viernes, 24 de diciembre de 2021

Evitar "Flickering" o parpadeo con Tarjetas NVidia en Linux

 Recientemente y probando el modo "Alto rendimiento" de NVIDIA, en Linux (concretamente en Linux Mint 20.3 basado en Ubuntu 20.04 y kernel 5.13), en un portatil con dos gráficas (Intel Iris y Nvidia 3060 RTX) observé que la pantalla parpadeaba solo en ese modo (que es cuando realmente dejamos que nuestra segunda gráfica, en mi caso nvidia, sea la que renderice todo lo que se nos muestra por pantalla), no obstante si la ponía en la opción bajo demanda, este flickering desaparecía pero es por que realmente renderizaba intel. 

Bueno, llendo al grano, para solucionar el problema hay que añadir esto a los parámetros de grub en /etc/default/grub

i915.enable_psr=0

¿que hace ese parámetro? según he podido leer fuerza a la tarjeta gráfica a renderizar todos los frames aunque el anterior sea idéntico al actual. 

lunes, 6 de diciembre de 2021

Daemon para procesos Linux (Evitar cierres)

A veces cuando ejecutamos un proceso en Linux, este puede fallar por cualquier motivo imprevisto, por ejemplo en youtube-dl cuando descargamos un vídeo de páginas como mitele.es a veces se cierra porque encuentra algún error en la red desde donde está descargando, youtube-dl es capaz de reanudar la descarga si se vuelve a ejecutar pero si no podemos estar pendientes he creado un pequeño script para solucionar este tipo de errores. Crea un fichero llamado wdog.sh y dale permisos de ejecución (si lo metes en /usr/bin mejor), ábrelo con nano, vi, xed, edit o tu editor favorito y escribe el siguiente código:
#!/bin/bash
# Ejecuta un daemon para no cerrar un proceso solo si falla.
code=1
retry=10
while (( $code != 0 && $code != 4 && $retry != 0  )); do
 $@
 code=$?     
 retry=$(( retry-1 ))
 echo "Intentos restantes: "
 echo $retry
done

Guárdalo.  Para usarlo basta con poner en la terminal donde se creó el fichero (en el caso de no tenerlo guardado en /usr/bin) 
./wdog.sh tuprograma

Donde tuprograma se refiere al programa del que va a estar pendiente Linux de no cerrarse con sus parámetros incluidos. En el caso de querer meterlo en /usr/bin puedes guardarlo directamente sin la extensión .SH y usarlo como un comando más desde cualquier directorio (por ejemplo: wdog youtube-dl direccion)

El script tiene un máximo de 10 reintentos (en caso de que vaya fallando tu aplicación, despues de esos 10 intentos el script se cerrará para no volver a entrar al bucle), esté numero se puede cambiar en la cuarta línea cambiando el 10 por el número que necesites. Yo lo uso sobretodo para youtube-dl porque últimamente sin esto tengo que estar pendiente a que se haya completado la descarga, pero se puede usar para otros comandos.  

miércoles, 7 de abril de 2021

XAMPP Windows, activar SSL (Método fácil)

Descargamos el siguiente software: 
Ejecutamos:
mkcert -install
mkcert localhost
mkcert -pkcs12 localhost
copy "localhost.pem" C:\xampp\apache\conf\ssl.crt\server.crt
copy "localhost-key.pem"  C:\xampp\apache\conf\ssl.key\server.key
Una vez hecho eso iniciamos XAMPP normalmente y listo.

martes, 10 de noviembre de 2020

Filtros Adblock para MiTele

 Si estas cansado de ver anuncios en la web de Mitele y en sus vídeos, puedes bloquearlos sin problemas usando un bloqueador de anuncios y los siguientes filtros para no ser detectado y poder seguir viendo la web:

Según el programa usad un filtro u otro ( si no estáis seguros no hay problema por meter los dos filtros en el mismo programa )


UBLOCK ORIGIN

@@||pubads.g.doubleclick.net/gampad/ads*mitele.es$xhr,domain=imasdk.googleapis.com

*$media,redirect=noopmp3-0.1s,domain=mitele.es

ADBLOCK PLUS

mitele.es#$#abort-on-property-read $REACTBASE_STATE.serverModules.push

@@||pubads.g.doubleclick.net/gampad/ads*mitele.es$xmlhttprequest,domain=imasdk.googleapis.com

*$media,domain=mitele.es

mitele.es##div[class^="adsInfo__container"]

Fuente: https://www.bloguerismo.com/2017/08/quitar-publicidad-en-mitelees-quitar.html

 

lunes, 9 de noviembre de 2020

Corregir KWIN para funcionar en XFCE4 y appmenu

KWin (El gestor de ventanas del proyecto KDE) arrastra un "bug" que lo hace incompatible para usar el indicador de menús globales de XFCE4, por suerte podemos solucionarlo fácilmente escribiendo una REGLA (  KDE System Settings > Workspace > Window Management > Window Rules ) de ventana en la configuración de KWIN.

 Screenshot_2018-08-30_07-42-40Screenshot_2018-08-30_07-43-21

 

Fuente: https://gitlab.com/vala-panel-project/vala-panel-appmenu/-/issues/246

martes, 21 de julio de 2020

XAMPP Linux, activar SSL (HTTPS) en localhost

Paso 1: Creación de carpeta
Crear una carpeta vacía y dirigirnos a ella desde la terminal. Por ejemplo:
mkdir ssl
cd ssl
Para los pasos siguientes, asumiremos que estamos parados dentro de esa carpeta.


Paso 2: Root key & root certificate
Primeramente, debemos crear una root key para luego generar un root certificate. Importante: para este paso deberemos elegir y recordar una passphrase o contraseña .
sudo openssl genrsa -des3 -out localRootCA.key 2048
Ahora podemos crear un root certificate. Durante este paso utilizaremos la passphrase ingresada al generar la root key. Importante: se pueden contestar las preguntas que aparecen en este paso con un punto o un espacio en blanco, sin embargo cuando nos soliciten el Common Name debemos ingresar «localhost» sin comillas.
sudo openssl req -x509 -new -nodes -key localRootCA.key -sha256 -days 1024 -out localRootCA.pem

Paso 3 : Pedido de firma de certificado
Antes de generar nuestro certificado SSL, es necesario emitir un archivo de solicitud de firma de certificado (server.csr) y una clave (server.key) para poder hacer la comprobación de nuesro certificado. Importante: se pueden contestar las preguntas que aparecen en este paso con un punto o un espacio en blanco, sin embargo cuando nos soliciten el Common Name debemos ingresar «localhost» sin comillas. Para este paso también deberemos pensar una passphrase.
sudo openssl req -new -nodes -out server.csr -newkey rsa:2048 -keyout server.key
Paso 4 : Certificado SSL
Para generar un certificado SSL, primero debemos generar un archivo de configuración denominado x509v3.ext con el siguiente contenido:
authorityKeyIdentifier = keyid, issuer
basicConstraints = CA: FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
Finalmente, ahora podemos expedir nuestro certificado SSL para XAMPP con el siguiente comando (la passphrase que nos pedirá es la del segundo paso):
sudo openssl x509 -req -in server.csr -CA localRootCA.pem -CAkey localRootCA.key -CAcreateserial -out server.crt -days 500 -sha256 -extfile x509v3.ext
Configuraciones finales
Finalmente, deberemos copiar los certificados generados a nuestro servidor local, y decirle al navegador que utilicemos que puede confiar en esos certificados.

Para mover los archivos:
sudo cp server.crt /opt/lampp/etc/ssl.crt/
sudo cp server.key /opt/lampp/etc/ssl.key/
En el caso de que usemos Google Chrome, dirigirse a chrome://settings/certificates, en la pestaña Authorities hacer click en Import y seleccionar el archivo localhostRootCA.pem. La configuración es similar para el resto de los navegadores.

Para terminar, bastará con reiniciar nuestra instancia de XAMPP:
sudo /opt/lampp/lampp restart

Conclusión
Nos dirigimos a https://localhost deberíamos ver que la conexión es segura.

Fuente: https://www.syloper.com/blog/servidores/xampp-certificados-ssl-localhost/