Recientes
- Gráfico de series temporales con Flask, Bootstrap y Chart.js
- Utilización de IPv6 con Microk8s
- Uso de Ingress para acceder a RabbitMQ en un clúster Microk8s
- Galería de vídeo simple con Flask, Jinja, Bootstrap y JQuery
- Programación básica de trabajos con APScheduler
- Un conmutador de base de datos con HAProxy y el HAProxy Runtime API
Más vistos
- Usando PyInstaller y Cython para crear un ejecutable de Python
- Reducir los tiempos de respuesta de las páginas de un sitio Flask SQLAlchemy web
- Usando Python's pyOpenSSL para verificar los certificados SSL descargados de un host
- Conectarse a un servicio en un host Docker desde un contenedor Docker
- Usando UUIDs en lugar de Integer Autoincrement Primary Keys con SQLAlchemy y MariaDb
- SQLAlchemy: Uso de Cascade Deletes para eliminar objetos relacionados
Etiquetas
AiohttpAJAXAlembicAlpineAPIApplication settingsAsyncBabelBeautifulSoupBootstrapCachingCaptchaCeleryColorsCompileCronCryptographyCSRF protectionCythonDatabaseDecoratorDeep LearningDeepLDispatcherMiddleWareDistributionDNSDockerDocker SwarmDocker-composeEmailExceptionsFastAPIFlaskGunicornIconsIMAPInternetISPConfigJavascriptJinja2KubernetesLog fileLoggingMachine LearningMariaDBMessage brokerMicrok8sMultilanguageMultiprocessingNetworkingPentestingPikaPostfixPostgreSQLProfilingPyInstallerpyOpenSSLPytestRabbitMQRedisrqliteSchedulingScrapingSecuritySecurity testingSeleniumSlackSQLAlchemyTestingThreadsTimezoneToastsUbuntu TouchUUIDWeb automationWerkzeugWheelsWTFormsYouTubeGráfico de series temporales con Flask, Bootstrap y Chart.js
16 diciembre 2024 0
Peter
Ya tenemos una aplicación construida con Flask y Bootstrap y queremos añadir algunos gráficos. En este breve post crearemos una página web con un gráfico de series temporales utilizando Flask, Bootstrap y Chart.js. Esta página una página de prueba que podemos pegar y personalizar para nuestra aplicación.
Como siempre estoy haciendo esto en Ubuntu 22.04 Desktop.
Resumen
La página de prueba ...
Utilización de IPv6 con Microk8s
3 diciembre 2024 0
Peter
Para una parte de mi aplicación que consiste en varios proyectos Docker-Compose, necesitaba acceso a servicios externos sólo IPv6. En entradas anteriores escribí que ya había movido parte de mi aplicación de Docker a Microk8s (Kubernetes). Esta es la parte que requiere acceso a los servicios IPv6 externos. La aplicación Docker se comunica con la aplicación Microk8s usando un NodePort o Ingress ...
Uso de Ingress para acceder a RabbitMQ en un clúster Microk8s
20 noviembre 2024 0
Peter
Hace algún tiempo hice un post sobre mover parte de una aplicación que contenía RabbitMQ corriendo en Docker Swarm a Microk8s. Utilizamos NodePort para acceder al clúster Kubernetes RabbitMQ en el host.
Recientemente me he replanteado esto y he decidido utilizar el Microk8s Ingress Controller para acceder al RabbitMQ.En este post, asumimos que el pod RabbitMQ está presente y sólo nos ...
Galería de vídeo simple con Flask, Jinja, Bootstrap y JQuery
28 octubre 2024 0
Peter
Tenemos varias cámaras que generan clips cortos cuando algo se mueve delante de la cámara. Todos los clips, los vídeos, acaban en un sistema. Utilizamos programas estándar para ver los vídeos.
Pero ahora queremos compartir estos vídeos con otras personas de nuestra red local, y no queremos copiar los archivos de vídeo. Una solución obvia es seleccionar e instalar algo como un servidor de galería de ...
Programación básica de trabajos con APScheduler
19 octubre 2024 0
Peter
Has creado un programa Python , por ejemplo, para hacer una copia de seguridad de una base de datos, y ahora quieres ejecutarlo cada hora, o cada día.
Hay muchas soluciones para elegir, aquí utilizamos APScheduler, 'Advanced Python Scheduler', un programador de tareas que cumple muchos requisitos. Para nuestra tarea, este paquete puede parecer exagerado, pero vamos a usarlo aquí y una vez que entendamos ...
Un conmutador de base de datos con HAProxy y el HAProxy Runtime API
13 agosto 2024 0
Peter
Uno de mis proyectos necesitaba una base de datos de alta disponibilidad (no todos queremos esto ...). Esto significa (asíncrono) de replicación, y una configuración multi-nodo. Existen varias soluciones, escribiré sobre esto en otro post. En estos escenarios tenemos múltiples réplicas de la base de datos principal, y cuando ocurre un problema, cambiamos de una base de datos a otra.
Para hacer este ...
Docker Swarm rolling updates
7 julio 2024 0
Peter
Hace algún tiempo escribí que sería mejor pasar a una variante Kubernetes y ahora este post es sobre Docker Swarm. Sí, sigo utilizando Docker Swarm porque tengo un proyecto que lo utiliza. Recientemente moví el desarrollo de Docker a Docker Swarm, principalmente porque con Docker Swarm aprendes los fundamentos de la orquestación de contenedores, así que por qué no aprender esto durante el ...
Cómo ocultar las claves primarias de la base de datos UUID de su aplicación web
29 marzo 2024 0
Peter
Cuando creas una aplicación web, debes tener mucho cuidado de no exponer demasiada información. Si utiliza (autoincremento) Integer IDs en su base de datos, probablemente ya esté exponiendo demasiada información. Algunos ejemplos. Un Integer user_id hace que sea fácil adivinar cuántos registros nuevos recibes cada día. Un Integer order_id hace que sea fácil adivinar cuántos pedidos recibes ...
Don't Repeat Yourself (DRY) con Jinja2
20 febrero 2024 0
Peter
Estaba probando algunas cosas con Jinja2, creé una pequeña aplicación Flask , y pensé por qué no compartir esto. Lo que quería conseguir era poner todos los nombres de página en un archivo de plantilla.
Al igual que con Python, cuando escribes mucho código, debes tener cuidado de no repetirte con Jinja2. Antes de que te des cuenta, acabas con muchos archivos de plantilla que contienen los mismos ...
SQLAlchemy, PostgreSQL, número máximo de filas por user
5 febrero 2024 0
Peter
Tiene una aplicación multi-user que utiliza SQLAlchemy y PostgreSQL y desea limitar el número de filas por user de una tabla determinada. Por ejemplo, cada user puede tener un máximo de cinco entradas.
Necesitas una operación como
Bloquear la tabla
Contar el número de entradas del user
Si el número es inferior a cinco:
Añadir un nuevo mensaje ...
Mostrar los valores en filtros dinámicos SQLAlchemy
18 enero 2024 0
Peter
Cuando utilizo SQLAlchemy, suelo utilizar filtros dinámicos en mis consultas. Esto significa que empiezo con una lista con algunas condiciones y añado más condiciones que dependen de otras variables.Aquí tienes una consulta con un filtro estático:
# query with static filter
product_colors = ['white']
stmt = sa.select(Product).\
where(sa.and(
Product.category.in_(my_categories),
...
Transferencia de datos segura con cifrado de Public Key y pyNaCl
2 diciembre 2023 0
Peter
Este es un breve post sobre la transferencia de datos de forma segura entre dos personas. Para ello utilizamos el paquete Python pyNaCl para generar claves privadas y públicas y para cifrar y descifrar los datos. También he añadido el paquete Python keyring para almacenar las private_key y public_key. En realidad no es tan difícil. Necesitaba una clase básica para ...
rqlite: una alternativa de alta disponibilidad y dist distribuida SQLite
17 octubre 2023 1
Peter
En un proyecto estoy utilizando una base de datos SQLite . Los datos no son críticos, se pueden recargar en cualquier momento. Aún así, no quiero que parte de la aplicación deje de responder cuando la base de datos SQLite no esté disponible temporalmente.
Buscaba una base de datos rápida, más o menos tolerante a fallos, y también distributed, para poder replicar algunos módulos de lectura. Al ...
¿Debo migrar mi Docker Swarm a Kubernetes?
15 septiembre 2023 0
Peter
Cuando lees posts en internet diciendo que Docker Swarm está muerto, te asustas. Yo tengo un Docker Swarm funcionando y me gusta, es fácil cuando ya usas Docker.
¿Cuáles son las alternativas? Hemos leído todo el tiempo que sólo hay una cosa que hacer y es migrar a Kubernetes y olvidarse de todo lo demás.
Yo estaba a medio camino de migrar de Docker a Docker Swarm, y quería saber si debía ...
Obtener una lista de YouTube vídeos de una persona
7 septiembre 2023 0
Peter
Hace unos días recibí la pregunta ¿Se puede descargar todos los videos YouTube pública de una persona, que fueron subidos entre 2020 y hoy. El número total de vídeos era de unos doscientos. Y no, no he podido acceder a la cuenta YouTube de esta persona.
En este post, utilizo la YouTube API para descargar los metadatos necesarios de los vídeos, un elemento por vídeo. Busqué en PyPI, pero no ...
De Docker-Composer a Docker Swarm: Configs
29 agosto 2023 0
Peter
Tiene una aplicación que consta de varios proyectos Docker-Compose y utiliza Docker-Compose para compilar, iniciar y desplegar.
Ahora quiere ir un paso más allá y mover algunos de los proyectos Docker-Compose a otro servidor. La opción más obvia para hacer esto, bueno para probar primero, es Docker Swarm. Aprendes unos pocos comandos más Docker y listo. ¿Es ...
Docker-Componer proyectos con nombres de servicio idénticos
25 agosto 2023 0
Peter
Si tenemos proyectos Docker-Compose idénticos con nombres de servicio idénticos, conectados por una red Docker , debemos asegurarnos de que accedemos al servicio adecuado. En una red Docker hay dos formas de acceder a un servicio:
Por nombre de servicio
Por nombre de contenedor
Tengo múltiples proyectos Docker-Compose que son casi idénticos, cada proyecto está en su propio directorio ...
X Automatización web y scraping con Selenium
11 agosto 2023 0
Peter
Cuando se quieren extraer datos de la Web, hay que saber lo que se hace. No quieres sobrecargar un servidor de destino con peticiones. Si lo haces desde un único sitio, un IP address, podrías recibir un baneo (temporal).
Si quieres hacer un scrape grande, considera usar un servicio dedicado como ZenRows, ScrapFly, WebScrapingAPI, ScrapingAnt, etc. distribuyen tus peticiones a través ...
Aiohttp con servidores DNS personalizados, Unbound y Docker
13 julio 2023 0
Peter
Utilizar aiohttp parece muy fácil, pero no lo es. Es confuso. La documentación 'Client Quickstart' comienza con lo siguiente:
Nota
No cree una sesión por solicitud. Lo más probable es que necesite una sesión por solicitud que realice todas las solicitudes juntas.
Casos más complejos pueden requerir una sesión por sitio, por ejemplo, una para Github y otra para Facebook APIs. De todos ...
Devuelve sólo los valores de una lista de registros de FastAPI
6 julio 2023 0
Peter
En Python, todo es una clase, lo que significa que los datos del modelo son similares a un diccionario. Pero los diccionarios tienen claves. Y cuando devuelves una lista de muchos diccionarios desde FastAPI, el tamaño de los datos, claves y valores, suele ser mucho más del doble del tamaño de los valores. Mayor tamaño y más tiempo significa que nuestra aplicación no es muy eficiente, más lenta de ...