Entradas

Mostrando entradas de agosto, 2021

Bug en PHP Spl seek SplFileObject. (Solucionado)

Imagen
Existe un bug en la función seek() de SPL  ( Standard PHP Library ) en PHP < PHP8.0.1. Aquí la solución. El bug concretamente aparece cuando hacemos un seek() del objecto SPL a la 2ª fila (índice 1). Nos devuelve la 3ª fila en lugar de la 2ª fila, y así con los posteriores índices de seek(). El bug está presente en todas las versiones anteriores a la PHP8.0.1. Los códigos de los programas que utilizamos a diario los creamos desarrolladores como yo. Muchas veces fallan a causa del uso en algún software o hardware específico. Otras veces fallan por una mala codificación. En definitiva, el hardware ha sido creado por humanos, el código lo teclean personas humanas, y como humanos que somos, podemos cometer errores también, ya sea en el hardware o en el software. La ventaja del software libre es que el código es público. Lo puedes descargar, modificar, reutilizar, etc... y por otra parte tiene la ventaja que todos los programadores se comunican entre ellos para detectar fallos, mejorar p

Importar & exportar bases de datos MySQL desde línea de comandos. Consola Linux

Imagen
  Hoy os traigo un par de comandos que os van muy bien en el momento de realizar backups y restaurar los ficheros de datos .sql en vuestras bases de datos MySQL/MariaDB. Se trata de las sentencias en bash  mysqldump & mysql PhpMyAdmin es muy buena herramienta para administrar las bases de datos, pero muchas veces se queda un poco corta cuando realizamos importaciones o exportaciones de bases de datos MySQL/MariaDB muy grandes (errores de conexión, reconexiones para volver a enviar las bases de datos, duplicidad de registros, volver a empezar, ....). Existe en Linux un par de comandos que funcionan muy bien y evitan los errores de conexión por estar demasiado tiempo esperando a que finalice la importación/exportación de las bases de datos MySQL/MariaDB. Exportar base de datos MySQL de servidor externo a fichero local .sql: mysqldump --column-statistics=0 -h NOMBRE_DE_SERVIDOR -u NOMBRE_USUARIO -p BASE_DE_DATOS > nombre_fichero_local.sql Existe algún problema intentando leer algu

Copias de seguridad en Linux RSYNC + RAID + SSH. Conceptos básicos. Evita ataques Ransomware

Imagen
He publicado un artículo en linkedin explicando un poco por encima la estructura que podemos tener en nuestra empresa para la realización de copias de seguridad. Un tema muy importante y que muchas empresas no prestan atención, hasta que pasa lo inevitable y le toca correr al informático de turno. La base es copiar los ficheros compartidos de una red Windows en un servidor Linux. Este servidor Linux queda a parte de la red, por lo que en caso de ataque ransomware, los datos no se ven afectados. No está explicado a nivel técnico, sino básico para que todo el mundo pueda entender qué es el sistema RSYNC, RAID Y SSH, qué es lo que hace cada uno de ellos, para qué sirve y en qué se puede beneficiar una empresa de su uso. Se habla también del uso de servidores separados de la red de compartición de ficheros windows para salvaguardar los datos y del uso extra de seguridad de Antivirus. El sistema puede avisar diariamente por mail sobre el proceso de la copia realizada. Se explica además el

Inteligencia Artificial aplicada a Robots. El robot que hace piruetas

Imagen
  Os dejo con un vídeo  que no deja de ser impresionante, donde podréis ver cómo está avanzando la inteligencia artificial aplicada a la robótica. Parece ser que muy pronto los podríamos tener entre nosotros para ayudar en las tareas de casa. No todo lo que se ve es inteligencia artificial, pero sin ella, este robot no sería nada. Lo que me pregunto es por qué no han entrenado a sus redes neuronales en cómo hacer una tortilla y darle la vuelta en lugar de entrenarlas para que sea él mismo el que se da la vuelta haciendo piruetas. Creo que sería más útil, y al menos serviría para algo ¿no? 😶

Clase en PHP para encender/apagar LED en Raspberry pi

Imagen
  Clase en puro PHP para encender/apagar led en Raspberry pi. Acceso directo a los puertos GPIO. He preparado una clase sencilla en PHP puro para poder, como os explicaba en el artículo anterior,  acceder directamente a los puertos GPIO desde PHP . Este acceso a los puertos GPIO se realiza directamente y de forma nativa contra el sistema, sin necesidad de usar exec(), shell_exec() o cualquier funcion de ejecución externa al lenguaje de programación PHP. El repositorio de la clase en PHP lo podéis descargar tanto en github.com como en phpclasses.org . Para utilizar la clase solo tenéis que realizar el include require_once( 'led.class.php' ); Debemos realizar el export antes de poder utilizar el puerto GPIO. La clase ya está preparada para realizar el export automáticamente con un LED individualmente o con varios. Si se utilizan varios LEDS, se pude aprovechar el sistema para que abra un solo fichero de export y un fichero unexport, común para todos los LEDS, lo que hará que sol

Raspberry Pi. Encender/Apagar LED desde PHP. Acceso directo a los puertos GPIO ultrarápido.

Imagen
  Objetivo:  Encender y apagar un led a muy alta velocidad, SIN realizar llamadas al sistema shell_exec() . Control directo de los GPIO con puro PHP. Acceso directo a los puertos GPIO con PHP nativo. No, tranquil@s. Este no es un tutorial más que te enseña a encender o a apagar un led y ya está. La misión de este artículo es la de enseñar a hacerlo con PHP de forma optimizada, accediendo directamente a los puertos GPIO sin utilizar shell_exec() para incrementar el rendimiento de nuestras aplicaciones, sobre todo en los las primeras raspberry pi que aparecieron, con una velocidad de proceso limitada, pero que, lejos de desaparecer, aún siguen funcionando tan bien como el primer día. 😀 Existen muchas maneras de utilizar los LEDS con los puertos GPIO en nuestra Raspberry Pi. Pero hoy os voy a mostrar una técnica que en PHP nativo y puro que es con muchísima diferencia la que consigue el  tiempo de respuesta más rápido  de acceso a los puertos GPIO. Lo que aquí encontraréis lo podréis ap

Ingeniería de datos. Como saber qué características o features dar como Inputs a nuestras redes neuronales

Imagen
Una característica es una propiedad que se puede medir de un fenómeno (según la wikipedia ). Partiendo de esta definición totalmente acertada, os enseñaré cómo debemos preparar nuestros datos para crear un buen dataset, antes de empezar a trabajar con los modelos de redes neuronales para no tener datos inútiles, que el sistema no pueda manejar o que entorpezcan lo que tendría que ser un entrenamiento fluido y natural de nuestra red neuronal optimizado al máximo. Quizás lo primero que se nos pasa por la cabeza es..... tengo un listado de artículos con precios, características, etc..... con muuuuuuuchos datos. Mientras más datos le de a la red neuronal mejor, no? así que le paso todos mis datos tal cual a mi red neuronal y que se espabile, a ver qué soluciones me da. Se trata de inteligencia artificial y para esto está, porque es inteligente y ya sabrá qué hacer con todos estos datos. No era tan difícil no? Que bueno soy y qué culito tengo!!!!. ERROR!!!!! Si creías que todo iba a ser un

Imprimir etiquetas APLI en PDF desde PHP

Imagen
  Imprimir etiquetas APLI, calcula márgenes, enlaza con plantillas word, Deja unas etiquetas sin imprimir para aprovechar las anteriores, ahora me cambian de impresora, ahora me cambian de formato de etiquetas, ahora las hojas están en blanco y tengo que ser yo quien dibuje los bordes para recortar las etiquetas, ... ¿Como enlazo con la base de datos para hacerlo fácil al cliente?,....  Problemas, problemas y más problemas ¿Cuantos dolores de cabeza os deben de haber causado a la hora de imprimir etiquetas APLI al largo de los años? Yo lo he sufrido y he decidido crear finalmente una clase en PHP standard para poder solucionar este problema definitivamente.... al menos con servidores web. Al crear la clase hay que tener en cuenta que hay que utilizar medidas en cm y no en píxeles, ya que esto es lo que hace que muchos de los trabajos que he visto realizados, funcionen en unos sistemas y en otros no. Al hacerlo en medidas de documentos (centímetros en este caso), funcionará para cualqui

PHP system resources & CSV Pair file for Machine learning nominadas en los premios de innovación en phpclasses.org

Imagen
  Phpclasses.org es uno de los principales repositorios mundialmente conocidos por los programadores PHP. Se trata de una biblioteca gigante donde poder descargar código que efectúa una tarea concreta y compartido gratuitamente y a nivel mundial gracias al esfuerzo de otros programadores  (una clase puede crear un archivo pdf, otra generar y enviar un correo electrónico, etc....). Todos los programadores nos alimentamos de estos códigos publicados para crear nuestras propias aplicaciones. Devolviendo a la comunidad PHP su esfuerzo, compartí unas clases destinadas al aprendizaje profundo y este mes han estado nominadas dos de ellas a los premios de innovación . Es un muy buen reconocimiento al trabajo realizado y a mejorar el funcionamiento global de PHP con nuevas funcionalidades. Hay 15 clases en total que compiten mensualmente. Durante todo este mes estarán disponibles las votaciones aquí:  https://www.phpclasses.org/vote.html . El mes siguiente se presentarán los resultados. Ambas