Bienvenidos
sábado, 13 de junio de 2026
jueves, 11 de junio de 2026
Trabajo en Quito entregas
Para trabajar en Quito por entregas hay varias aplicaciones
https://tipti.hiringroom.com/jobs
Para motos
Envios a Galapagos
martes, 26 de mayo de 2026
código php y mysql
Implementar un sistema de anuncios y monetización en tu plataforma de videos con MySQL y PHP es un proyecto que requiere varios pasos y consideraciones. Aquí te detallo una guía estructurada, dividida en fases, con las tecnologías y conceptos principales a considerar:
1. Diseño de la Base de Datos (MySQL)
Necesitarás las siguientes tablas principales:
-
videos:id: INT PRIMARY KEY AUTO_INCREMENTtitulo: VARCHAR(255)descripcion: TEXTurl_video: VARCHAR(255) (URL del video en tu servidor o servicio de hosting de video)duracion: INT (En segundos)fecha_creacion: TIMESTAMPcategoria_id: INT (Foreign Key a la tablacategorias)usuario_id: INT (Foreign Key a la tablausuarios)precio_anuncio: DECIMAL(10, 2) (El precio que el creador del video cobra por anuncios)estado: ENUM('activo', 'inactivo', 'pendiente') (Para gestionar la visibilidad y aprobación)
-
usuarios:id: INT PRIMARY KEY AUTO_INCREMENTusername: VARCHAR(50) UNIQUEpassword: VARCHAR(255) (Hash de la contraseña)email: VARCHAR(100) UNIQUEtipo_usuario: ENUM('creador', 'espectador') (Para diferenciar entre creadores y usuarios regulares)saldo: DECIMAL(10, 2) (Saldo del creador para recibir pagos por anuncios)
-
categorias:id: INT PRIMARY KEY AUTO_INCREMENTnombre: VARCHAR(100)
-
anuncios:id: INT PRIMARY KEY AUTO_INCREMENTvideo_id: INT (Foreign Key a la tablavideos)fecha_inicio: DATETIMEfecha_fin: DATETIMEtipo_anuncio: ENUM('pre_roll', 'mid_roll', 'post_roll') (Define dónde se mostrará el anuncio)url_anuncio: VARCHAR(255) (URL del archivo de anuncio - video, imagen, HTML5)estado: ENUM('activo', 'inactivo', 'pendiente', 'completado')
-
pagos:id: INT PRIMARY KEY AUTO_INCREMENTusuario_id: INT (Foreign Key a la tablausuarios)fecha_pago: TIMESTAMPmonto: DECIMAL(10, 2)metodo_pago: VARCHAR(50) (Ej: PayPal, transferencia bancaria)estado: ENUM('pendiente', 'completado', 'fallido')
2. Lógica del Servidor (PHP)
-
Autenticación y Autorización:
- Implementa un sistema de autenticación robusto para usuarios y creadores.
- Define roles y permisos (creador vs. espectador) para controlar el acceso a funcionalidades.
-
Gestión de Videos:
- Funciones para crear, editar y eliminar videos (solo para creadores).
- Validación de datos de entrada para prevenir ataques.
- Subida segura de archivos de video (considera el uso de
move_uploaded_file()y validación del tipo de archivo).
-
Sistema de Anuncios:
- Creación de Anuncios: Un creador puede agregar anuncios a sus videos, especificando la URL del anuncio, tipo (pre, mid, post roll) y duración. Estos datos se almacenan en la tabla
anuncios. - Programación de Anuncios: Define
fecha_inicioyfecha_finpara que los anuncios se muestren solo durante un período específico. - Integración con el Reproductor de Video:
- Servidor: Cuando un usuario solicita un video, tu servidor debe:
- Verificar si el video tiene anuncios asociados (
video_iden la tablaanuncios). - Determinar si el anuncio está activo según
fecha_inicioyfecha_fin. - Construir una lista de URLs de anuncios a reproducir, basada en el
tipo_anuncio.
- Verificar si el video tiene anuncios asociados (
- Cliente (JavaScript/HTML5): El reproductor de video debe:
- Solicitar al servidor la lista de anuncios para el video específico.
- Reproducir los anuncios en la secuencia definida (pre, mid, post roll).
- Utilizar una API del reproductor que permita insertar anuncios de manera programática. (Ej: Vimeo Player API, JW Player, o un reproductor HTML5 custom).
- Servidor: Cuando un usuario solicita un video, tu servidor debe:
- Manejo de Impresiones: Registra cada vez que un anuncio se reproduce (impresión). Esto es crucial para el seguimiento de métricas y el cálculo de pagos. Puedes usar una tabla
impresiones_anuncios:id: INT PRIMARY KEY AUTO_INCREMENTanuncio_id: INT (Foreign Key a la tablaanuncios)usuario_id: INT (Foreign Key a la tablausuarios)fecha_impresion: TIMESTAMPestado: ENUM('exito', 'error')
- Creación de Anuncios: Un creador puede agregar anuncios a sus videos, especificando la URL del anuncio, tipo (pre, mid, post roll) y duración. Estos datos se almacenan en la tabla
-
Gestión de Pagos:
- Cálculo de Pagos: Al final de cada período (ej: semanal, mensual), calcula el monto a pagar a cada creador basándose en el número de impresiones de sus anuncios (
impresiones_anuncios) y elprecio_anunciodefinido en la tablavideos. - Procesamiento de Pagos: Integra una pasarela de pago (ej: PayPal, Stripe) para realizar los pagos. Registra la información de cada pago en la tabla
pagos. - Notificaciones: Envía notificaciones a los creadores cuando se realicen pagos.
- Cálculo de Pagos: Al final de cada período (ej: semanal, mensual), calcula el monto a pagar a cada creador basándose en el número de impresiones de sus anuncios (
3. Tecnologías Sugeridas
- PHP Framework: Laravel, Symfony, o CodeIgniter (para una mejor estructura y seguridad).
- Base de Datos: MySQL (como ya tienes).
- Reproductor de Video:
- Vimeo Player API: Fácil de integrar, tiene funciones de inserción de anuncios.
- JW Player: Popular, flexible, pero puede requerir una licencia.
- HTML5 Custom Player: Mayor control, pero más trabajo de desarrollo.
- Pasarela de Pago: PayPal, Stripe, Mercado Pago (elige la que mejor se adapte a tu región y necesidades).
- Seguridad:
- Sanitización de Datos: Usa funciones como
htmlspecialchars()ofilter_var()para prevenir ataques XSS. - Validación de Datos: Valida todos los datos de entrada del usuario.
- Protección contra SQL Injection: Usa consultas preparadas (prepared statements) o un ORM (Object-Relational Mapper) para evitar SQL injection.
- Hash de Contraseñas: Utiliza un algoritmo de hash robusto como
password_hash()para almacenar contraseñas de forma segura.
- Sanitización de Datos: Usa funciones como
4. Pasos Clave de Implementación
- Diseño de la base de datos: Crea las tablas necesarias en MySQL.
- Desarrollo de la API: Crea endpoints para la creación, edición, eliminación de videos y anuncios.
- Integración del reproductor: Configura el reproductor de video para mostrar los anuncios según el tipo especificado.
- Implementación del sistema de pagos: Integra una pasarela de pago y crea la lógica para calcular y realizar los pagos a los creadores.
- Pruebas exhaustivas: Realiza pruebas exhaustivas para asegurar que todos los componentes funcionan correctamente y de forma segura.
- Implementación gradual: Lanza la funcionalidad de anuncios a un grupo pequeño de usuarios antes de lanzarla a toda la plataforma.
- Monitoreo y optimización: Monitorea el rendimiento del sistema de anuncios y realiza optimizaciones según sea necesario.
Ejemplo Simplificado (PHP - Obtener Anuncios para un Video)
<?php
// Conexión a la base de datos (reemplaza con tus credenciales)
$conn = new mysqli("localhost", "usuario", "contrasena", "basededatos");
function obtenerAnuncios($videoId) {
global $conn;
$sql = "SELECT * FROM anuncios WHERE video_id = $videoId AND fecha_inicio <= NOW() AND fecha_fin >= NOW() AND estado = 'activo'";
$result = $conn->query($sql);
$anuncios = [];
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$anuncios[] = $row;
}
}
return $anuncios;
}
// Ejemplo de uso
$videoId = $_GET['video_id']; // Obtiene el ID del video de la solicitud
$anuncios = obtenerAnuncios($videoId);
// Devuelve la lista de anuncios en formato JSON
header('Content-Type: application/json');
echo json_encode($anuncios);
$conn->close();
?>
<?php
// Conexión a la base de datos (reemplaza con tus credenciales)
$conn = new mysqli("localhost", "usuario", "contrasena", "basededatos");
function obtenerAnuncios($videoId) {
global $conn;
$sql = "SELECT * FROM anuncios WHERE video_id = $videoId AND fecha_inicio <= NOW() AND fecha_fin >= NOW() AND estado = 'activo'";
$result = $conn->query($sql);
$anuncios = [];
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$anuncios[] = $row;
}
}
return $anuncios;
}
// Ejemplo de uso
$videoId = $_GET['video_id']; // Obtiene el ID del video de la solicitud
$anuncios = obtenerAnuncios($videoId);
// Devuelve la lista de anuncios en formato JSON
header('Content-Type: application/json');
echo json_encode($anuncios);
$conn->close();
?>
Consideraciones Importantes:
- Escalabilidad: Piensa en cómo escalará tu plataforma a medida que aumente el número de usuarios y videos.
- Seguridad: La seguridad es primordial. Implementa medidas para proteger los datos de los usuarios y prevenir ataques.
- Cumplimiento legal: Asegúrate de cumplir con las leyes y regulaciones relacionadas con la publicidad en línea (ej: GDPR, CCPA).
- Análisis: Implementa herramientas de análisis para rastrear el rendimiento de los anuncios y comprender el comportamiento de los usuarios. (Google Analytics, Matomo)
- Testing: Prueba a fondo cada función antes de lanzarla a producción.
Este es un esquema general. La implementación específica dependerá de tus necesidades y habilidades técnicas. Si tienes más preguntas o necesitas ayuda con algún aspecto específico, no dudes en preguntar.
sábado, 23 de mayo de 2026
martes, 12 de mayo de 2026
lunes, 27 de abril de 2026
viernes, 24 de abril de 2026
Tutorial del juego Pong
https://kivy.org/doc/stable/tutorials/pong.html
Bienvenido al tutorial de Pong
Este tutorial te enseñará a programar en Pong usando Kivy. Empezaremos con una aplicación básica como la que se describe en el tutorial «Crea una aplicación y conviértela en un juego de Pong jugable», describiendo cada paso del proceso.
Instalación https://kivy.org/doc/stable/gettingstarted/installation.html
miércoles, 22 de abril de 2026
CLASE 3: Domina la habilidad más cotizada del mercado: Herramientas y Automatizaciones con IA
CLASE 3: Domina la habilidad más cotizada del mercado: Herramientas y Automatizaciones con IA
https://www.youtube.com/live/fCJ3AEWnB0E
https://www.youtube.com/@centeia-education/videos
viernes, 17 de abril de 2026
lunes, 6 de abril de 2026
codigo python para web
from flask import Flask, render_template
app = Flask(__name__)
# Definir ruta principal
@app.route("/")
def index():
"""Renderiza la página de inicio."""
return render_template("index.html")
# Definir otra ruta
@app.route("/acerca")
def acerca():
"""Renderiza la página 'Acerca de'."""
return render_template("acerca.html")
# Definir una ruta con parámetro
@app.route("/usuario/<nombre>")
def usuario(nombre):
"""Renderiza una página de usuario con un nombre específico."""
return render_template("usuario.html", nombre=nombre)
# BLOQUE FINAL
if __name__ == "__main__":
app.run(debug=True)
ejecutar visual estudio en linux
Para ejecutar Visual Studio Code como administrador (root) en Debian y editar archivos del sistema, utiliza la terminal con sudo. Ejecuta sudo code --user-data-dir="~/.vscode-root" para abrir VS Code con privilegios, permitiendo guardar cambios en directorios restringidos de forma segura
en una terminal escribes lo siguiente :
sudo code --user-data-dir="~/.vscode-root"
- Nota:
--user-data-dir es necesario porque VS Code no permite ejecutarse como root de forma predeterminada por seguridad.
Permisos de archivo (Alternativa): Si solo necesitas editar archivos específicos, es mejor cambiar el propietario de esos archivos con chown en lugar de ejecutar todo el editor como root:
sudo chown -R $USER /ruta/al/archivo_o_directorio
domingo, 5 de abril de 2026
Las mejores alternativas a DNS
Los NDS para colocar en tu tarjeta para navegar.
Google 8.8.8.8
secundario 8.8.4.4
DNS
Cloudflare por su alta velocidad y privacidad
Cloudflare 1.1.1.1
Secundario 1.0.0.1
Quad9 por su seguridad contra sitios maliciosos
Quad 9 9.9.9.9
secundario 149.112.112.112
OpenDNS (Cisco) personalización y filtrado. Alta fiavilidad y control total
OpenDNS 208.67.222.222
secundario 208.67.220.220
NextDNS: Ofrece alta personalización y filtrado de publicidad
NextDNS 45.90.28.0
secundario 45.90.30.0
sábado, 4 de abril de 2026
Pagina web con python
from flask import Flask, render_template
app = Flask(__name__)
# Definir ruta principal
@app.route("/")
def index():
"""Renderiza la página de inicio."""
return render_template("index.html")
# Definir otra ruta
@app.route("/acerca")
def acerca():
"""Renderiza la página 'Acerca de'."""
return render_template("acerca.html")
# Definir una ruta con parámetro
@app.route("/usuario/<nombre>")
def usuario(nombre):
"""Renderiza una página de usuario con un nombre específico."""
return render_template("usuario.html", nombre=nombre)
# BLOQUE CRUCIAL: Esto inicia el servidor
if __name__ == "__main__":
app.run(debug=True)
# pip install flask
Pasos para instalar Flask en Debian:
sudo apt update && sudo apt upgrade -y
2 . Instalar Python 3 y el gestor de paquetes pip:
sudo apt install python3 python3-pip python3-venv -y
3- Crear el directorio de tu proyecto y un entorno virtual (venv):
mkdir mi_proyecto
cd mi_proyecto
python3 -m venv venv
4. Activar el entorno virtual
source venv/bin/activate
Al hacer esto, tu terminal mostrará (venv) al inicio
5. Instalar Flask:
Pip install flask
6. Verificar la instalación escribe en una terminal
flask --version
Nos devolvera en nuestro caso
Python 3.13.12
Flask 3.1.2
Werkzeug 3.1.5
Ejecutar una primera aplicación
Una vez instalado, puedes crear un archivo app.py, activar el entorno y ejecutar con flask run
Para salir del entorno virtual, simplemente escribe deactivate
Creación de la aplicación Flask:
app = Flask(__name__): Crea una instancia de la clase Flask. __name__ es una variable especial de Python que contiene el nombre del módulo actual. Es importante para que Flask sepa dónde buscar los archivos de plantilla y otros recursos.
Definición de rutas (endpoints):
@app.route("/"): Este decorador asocia una función de Python (en este caso, index()) con una URL específica (en este caso, la ruta raíz /). Cuando un usuario visita la URL /, la función index() se ejecuta.@app.route("/acerca"): Define una ruta para la página "Acerca de".@app.route("/usuario/<nombre>"): Define una ruta con un parámetro llamado nombre. Este parámetro será pasado a la función usuario() como un argumento. Por ejemplo, si un usuario visita /usuario/Juan, la función usuario() se llamará con nombre = "Juan".
Funciones de las rutas:
def index():: Esta función se ejecuta cuando un usuario visita la ruta /. Utiliza render_template("index.html") para renderizar el archivo HTML llamado index.html que debe estar ubicado en la carpeta templates.def acerca():: Similar a index(), esta función renderiza el archivo acerca.html.def usuario(nombre):: Esta función renderiza el archivo usuario.html y pasa el valor del parámetro nombre a la plantilla HTML. Esto permite que el nombre del usuario se muestre en la página.
Ejecución de la aplicación:
if __name__ == "__main__":: Esta condición asegura que el código dentro del bloque if solo se ejecute cuando el script se ejecuta directamente (no cuando se importa como un módulo).app.run(debug=True): Inicia el servidor de desarrollo de Flask. debug=True habilita el modo de depuración, que proporciona mensajes de error más detallados y reinicia el servidor automáticamente cuando se realizan cambios en el código. Es muy importante NO usar debug=True en producción (desarrollo).
Estructura de archivos:
Debes crear una estructura de archivos como la siguiente:
mi_pagina_web/
├── app.py # Tu código Python (este archivo)
└── templates/ # Carpeta para las plantillas HTML
├── index.html # Página de inicio
├── acerca.html # Página "Acerca de"
└── usuario.html # Página de usuario
Ejemplos de archivos HTML (dentro de la carpeta templates):
templates/index.html:
<!DOCTYPE html>
<html>
<head>
<title>Mi Página Web</title>
</head>
<body>
<h1>¡Bienvenido a mi página web!</h1>
<p>Esta es la página de inicio.</p>
<a href="/acerca">Acerca de</a>
</body>
</html>
templates/acerca.html:
<!DOCTYPE html>
<html>
<head>
<title>Acerca de</title>
</head>
<body>
<h1>Acerca de</h1>
<p>Esta es la página "Acerca de".</p>
<a href="/">Inicio</a>
</body>
</html>
templates/usuario.html:
<!DOCTYPE html>
<html>
<head>
<title>Perfil de Usuario</title>
</head>
<body>
<h1>Perfil de Usuario</h1>
<p>Bienvenido, {{ nombre }}!</p> <!-- Usamos la variable 'nombre' pasada desde Python -->
<a href="/">Inicio</a>
</body>
</html>
Cómo ejecutar la aplicación:
- Guarda el código Python como
app.py. - Crea la carpeta
templates y los archivos HTML dentro de ella. - Abre una terminal o línea de comandos y navega al directorio donde guardaste
app.py. - Ejecuta el comando:
python app.py - Abre un navegador web y visita la URL
http://127.0.0.1:5000/ (o la URL que se muestre en la terminal).
Puntos importantes:
- Plantillas HTML (Jinja2): Flask utiliza el motor de plantillas Jinja2. Las plantillas HTML se escriben con una sintaxis especial que permite insertar variables de Python y lógica de control.
- Carpetas y archivos: Asegúrate de que la estructura de archivos sea correcta. Los archivos HTML deben estar en la carpeta
templates. - Modo de depuración: El modo de depuración es útil durante el desarrollo, pero debes desactivarlo en producción. En producción, el servidor se ejecuta de otra manera para mayor seguridad y rendimiento.
- URL dinámicas: Las rutas con parámetros como
/usuario/<nombre> permiten crear URL dinámicas que pueden mostrar información diferente según el valor del parámetro. render_template: Esta función es crucial porque busca los archivos HTML dentro de la carpeta templates y los renderiza, reemplazando las variables con los valores correspondientes.- Variables en las plantillas: En el ejemplo
templates/usuario.html, {{ nombre }} es cómo insertas una variable de Python dentro del HTML. Flask/Jinja2 reemplazará {{ nombre }} con el valor de la variable nombre que pasaste desde el código Python.
Próximos pasos:
- Aprender más sobre Jinja2: Profundiza en la sintaxis de las plantillas Jinja2 para crear plantillas más complejas.
- Agregar más rutas y funciones: Crea más rutas y funciones para agregar más páginas y características a tu sitio web.
- Usar bases de datos: Conecta tu aplicación Flask a una base de datos para almacenar y recuperar datos.
- Desarrollar el front-end: Utiliza CSS y JavaScript para mejorar la apariencia y la interactividad de tu sitio web.
- Despliegue: Aprende a desplegar tu aplicación Flask en un servidor para que esté disponible en Internet.
- Seguridad: Implementa medidas de seguridad para proteger tu aplicación contra ataques.
- Frameworks front-end: Considera usar frameworks como Bootstrap, Tailwind CSS, o React para simplificar el desarrollo del front-end.