Recientes
- Cómo ocultar las claves primarias de la base de datos UUID de su aplicación web
- Don't Repeat Yourself (DRY) con Jinja2
- SQLAlchemy, PostgreSQL, número máximo de filas por user
- Mostrar los valores en filtros dinámicos SQLAlchemy
- Transferencia de datos segura con cifrado de Public Key y pyNaCl
- rqlite: una alternativa de alta disponibilidad y dist distribuida SQLite
Más vistos
- Usando Python's pyOpenSSL para verificar los certificados SSL descargados de un host
- Usando UUIDs en lugar de Integer Autoincrement Primary Keys con SQLAlchemy y MariaDb
- Conectarse a un servicio en un host Docker desde un contenedor Docker
- Usando PyInstaller y Cython para crear un ejecutable de Python
- SQLAlchemy: Uso de Cascade Deletes para eliminar objetos relacionados
- Flask RESTful API validación de parámetros de solicitud con esquemas Marshmallow
Etiquetas
AiohttpAJAXAlembicAlpineAPIApplication settingsAsyncBabelBeautifulSoupBootstrapCachingCaptchaCeleryColorsCompileCronCryptographyCSRF protectionCythonDecoratorDeep LearningDeepLDispatcherMiddleWareDistributionDNSDockerDocker SwarmDocker-composeEmailExceptionsFastAPIFlaskGunicornIconsIMAPInternetISPConfigJavascriptJinja2KubernetesLog fileLoggingMachine LearningMariaDBMessage brokerMultilanguageMultiprocessingPentestingPikaPostfixPostgreSQLProfilingPyInstallerpyOpenSSLPytestRabbitMQRedisrqliteScrapingSecuritySecurity testingSeleniumSlackSQLAlchemyTestingThreadsTimezoneToastsUbuntu TouchUUIDWeb automationWerkzeugWheelsWTFormsYouTubeCó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 ...
Prevención de la suplantación de identidad IP address mediante el filtrado de ruta inversa
15 junio 2023 0
Peter
Este post es sobre administración de sistemas y no tiene nada que ver con Python. Entonces, ¿por qué publicar esto aquí? Porque creo que hay muchos como yo que tienen uno o más servidores web y a veces se encuentran con estos problemas. En el post anterior escribí que mi servidor ISPConfig Debian fue objeto de escaneo de puertos, etc y que parecía que el 95% de todas las solicitudes procedían ...
Recoger y bloquear IP addresses con ipset y Python
21 mayo 2023 0
Peter
Si tienes un servidor conectado a Internet, probablemente hayas visto esto en tus archivos de registro: montones de peticiones externas ilegales intentando acceder a tus servicios. Yo mantengo un servidor Debian , y utilizo Fail2Ban para la prevención de intrusiones. Práctica estándar, instalar, configurar y olvidar. Como el servidor se caía a ciertas horas, decidí echar un vistazo más de cerca. Me ...
Cómo cancelar tareas con Python Asynchronous IO (AsyncIO)
2 mayo 2023 0
Peter
Para un proyecto estaba usando AIOHTTP para comprobar las respuestas de muchos sitios web remotos, URLs. Las URLs provenían de una lista. Esta lista puede contener duplicados. Todo bien hasta que noté que algunas respuestas también tenían el código de estado HTTP-429 'Demasiadas peticiones'. Cualquiera que sea la razón, sobrecarga, seguridad, queremos comportarnos amigablemente y no queremos llamar ...
Ejecutar un comando Docker dentro de un contenedor Cron Docker
18 abril 2023 0
Peter
Al utilizar Docker, su aplicación suele constar de varios contenedores Docker . A menudo, quieres ejecutar scripts dentro de estos contenedores en determinados momentos, por ejemplo, cada cinco minutos, una vez por hora, una vez al día. Aquí es donde el programador de tareas Cron entra en juego, y hay varias opciones sobre cómo hacer esto. En este post creo un contenedor Cron separado, y uso el ...
Creación de un Captcha con Flask, WTForms, SQLAlchemy, SQLite
10 abril 2023
Peter
En el pasado escribí algo de código para un (sólo texto) Captcha para un sitio web Flask . Esto es una actualización. Aquí utilizo un paquete Pypi para generar la imagen. Además también añadí un botón de actualización de imagen Captcha .Puedes probar el código de abajo, es un formulario de suscripción (newsletter). Aunque esta es una solución Captcha para un sitio web Flask , se puede convertir ...
Multiprocessing, bloqueo de archivos, SQLite y pruebas
30 marzo 2023 0
Peter
Estaba trabajando en un proyecto con SQLAlchemy y PostgreSQL. Para algunas tablas, quería limitar el número de filas por user, y lo hice añadiendo una función de comprobación y un trigger PostgreSQL . Probando manualmente todo parecía estar funcionando bien, pero ¿qué pasaría si un user iniciara múltiples procesos y añadiera filas exactamente al mismo tiempo? He añadido el 'pg_advisory_xact_lock' ...
Envío de mensajes a Slack mediante chat_postMessage
23 marzo 2023 0
Peter
Para un proyecto que ya estaba enviando mensajes por correo electrónico, pero ahora también quería enviar mensajes a Slack. Por supuesto, estamos utilizando el Python Slack SDK. La documentación se puede encontrar en la página: Python Slack SDK - Cliente Web. En este post creo una simple clase SlackAPI con su propia clase de excepción SlackError. Crear y ...