Las últimas novedades de Red.es e INCIBE en diciembre de 2025 se centran en impulsar la innovación digital y reforzar la ciberseguridad nacional.
Red.es – Principales novedades
Convocatoria RedIA Salud (noviembre 2025): Red.es ha lanzado un programa dotado con 50 millones de euros para proyectos de inteligencia artificial aplicada al ámbito sanitario. El objetivo es mejorar diagnósticos, tratamientos y gestión hospitalaria mediante IA.
Internacionalización de startups: 34 startups y organismos españoles participaron en el pabellón de España en SLUSH Helsinki 2025, mostrando innovación tecnológica en uno de los mayores eventos europeos de emprendimiento.
Expansión internacional: cinco startups españolas se preparan para conquistar Canadá con soluciones tecnológicas innovadoras, apoyadas por Red.es.
Smart Cities: Red.es continúa promoviendo proyectos de ciudades inteligentes, aplicando innovación y tecnología al servicio del ciudadano.
INCIBE – Principales novedades
Criptografía cuántica como prioridad nacional: Félix Barrio, director de INCIBE, ha señalado que la criptografía cuántica es una de las tres prioridades nacionales en seguridad y defensa. Se advierte que los sistemas robustos actuales podrían ser vulnerables en el futuro.
Informe sobre ciberseguridad 2025: INCIBE ha publicado un análisis sobre el estado de la ciberseguridad y la ciberinteligencia en España en 2025, destacando tendencias, vulnerabilidades y retos emergentes.
Demanda de profesionales: España necesita alrededor de 99.600 especialistas en ciberseguridad para cubrir la creciente demanda del sector.
Reestructuración institucional: INCIBE se ha integrado en la Secretaría de Estado de Telecomunicaciones, Infraestructuras Digitales y Seguridad Digital, reforzando su papel en la estrategia nacional de transformación digital.
Aquí tienes las convocatorias abiertas de Red.es e INCIBE a diciembre de 2025:
Convocatorias Red.es
C006/25-SP – Ayudas IA en Salud
Proyectos de desarrollo experimental para impulsar la adopción de la inteligencia artificial en el ámbito sanitario.
Plazo: hasta el 5 de enero de 2026.
C055/25-SI – Kit Espacios de Datos
Ayudas para la transformación digital de sectores estratégicos fomentando la incorporación a espacios de datos.
Plazo: hasta el 31 de marzo de 2026.
Agentes del Cambio – Kit Consulting
Adhesión de asesores digitales para apoyar a pymes en su proceso de digitalización.
Kit Digital – Agentes Digitalizadores
Adhesión de agentes para la digitalización de pequeñas empresas y autónomos.
Convocatorias INCIBE
Empleo público INCIBE 2025
Convocatoria de selección de personal técnico sénior para el Laboratorio de Tecnologías.
Publicada el 31 de octubre de 2025, con alegaciones hasta el 1 de diciembre de 2025.
Proyecto INCIBE‑UNED (2025)
Concurso de méritos para cubrir 100 plazas de dinamizadores-docentes en formación de ciberseguridad.
Enmarcado en el Plan de Recuperación, Transformación y Resiliencia financiado por la UE.
Red.es está impulsando proyectos de IA en salud y la integración en espacios de datos, además de programas de digitalización para pymes.
INCIBE está reforzando su plantilla con perfiles técnicos y promoviendo la formación en ciberseguridad a gran escala.
Conclusiones
Red.es está apostando fuerte por la IA aplicada a la salud y la internacionalización de startups.
INCIBE está marcando la agenda de la ciberseguridad nacional, con foco en criptografía cuántica, formación de talento y nuevas estructuras de coordinación.
La solución a ingresos bajos en AdSense pasa por dos frentes: aumentar el tráfico cualificado y optimizar la colocación y formato de los anuncios. No basta con tener visitas; necesitas mejorar el valor del clic (CPC) y la visibilidad de los anuncios para que cada impresión rinda más.
Para colocar los anuncios de AdSense tú mismo en tu web (sin depender solo de los anuncios automáticos de Google), existen varias herramientas y plugins que te dan control total sobre dónde y cómo aparecen:
Programas y plugins para gestionar anuncios
WordPress
Ad Inserter: uno de los más usados. Permite insertar bloques de AdSense en cualquier parte (cabecera, sidebar, dentro de posts, después de párrafos, etc.) con reglas condicionales (por rol de usuario, dispositivo, categoría…).
Advanced Ads: muy completo, con opciones de rotación, pruebas A/B y segmentación.
WP Quads: heredero del clásico Quick AdSense, sencillo y rápido para colocar anuncios en entradas y páginas.
CMS o sitios sin WordPress
Google Ad Manager (antes DFP): plataforma oficial de Google para gestionar inventario de anuncios. Es más complejo, pero te da control absoluto sobre posiciones y campañas.
Insertar manualmente el código: copiando el bloque <ins class="adsbygoogle"> en tus plantillas (header.php, sidebar.php, single.php) o en módulos de tu constructor (Divi, Elementor).
Herramientas externas
AdRotate: plugin que permite gestionar no solo AdSense, sino también banners propios o de afiliados.
OIO Publisher (aunque menos actualizado): para vender espacios publicitarios directamente y combinar con AdSense.
Ventajas de usar un programa/plugin
Controlas exactamente dónde aparece cada anuncio.
Evitas repeticiones en la misma página.
Puedes ocultar anuncios a ciertos roles (como ya haces con “Profesional”).
Facilita pruebas: cambiar posiciones y ver qué da más ingresos (CTR y RPM).
Si decides usar un programa o plugin para colocar los anuncios manualmente (como Ad Inserter o Advanced Ads), lo recomendable es desactivar los anuncios automáticos de AdSense.
Diferencia entre ambos modos
Anuncios automáticos (Auto Ads)
Google decide dónde y cuántos anuncios mostrar.
Ventaja: cero configuración, rápido de activar.
Desventaja: poca personalización, riesgo de repetición o saturación en la página.
Anuncios manuales (bloques insertados por ti)
Tú eliges la posición exacta (ej. después del 2º párrafo, en sidebar, al final del post).
Puedes aplicar reglas condicionales (por rol de usuario, categoría, dispositivo).
Evitas duplicados y controlas la experiencia del visitante.
Qué hacer en tu caso
Desactiva Auto Ads desde tu panel de AdSense → Configuración de anuncios → Apagar “Anuncios automáticos”.
Inserta manualmente los bloques con un plugin (ej. Ad Inserter) o directamente en tu plantilla.
En resumen: sí, al usar un plugin para colocar anuncios tú mismo, lo ideal es desactivar los automáticos para evitar que Google meta anuncios extra en lugares no deseados.
Te muestro un paso a paso claro para que configures anuncios manuales en WordPress con Ad Inserter y desactives los automáticos de AdSense:
Desactivar anuncios automáticos en AdSense
Entra en tu cuenta de Google AdSense.
Ve a Anuncios → Resumen → Configuración de anuncios automáticos.
Desactiva el interruptor de Auto Ads.
Esto evita que Google coloque anuncios adicionales sin tu control.
Instalar Ad Inserter en WordPress
En tu panel de WordPress → Plugins → Añadir nuevo.
Busca Ad Inserter e instálalo.
Actívalo.
Insertar un bloque de AdSense
Copia el código de anuncio desde tu cuenta de AdSense (ejemplo: <ins class="adsbygoogle" ...>).
En WordPress → Ad Inserter → Bloque 1, pega el código.
Configura dónde quieres que aparezca:
Before paragraph 2 → justo después del segundo párrafo.
Sidebar → en la barra lateral.
After content → al final del artículo.
Reglas condicionales
En Ad Inserter puedes definir:
Mostrar solo a visitantes (ocultar a roles como “Profesional”).
Diferenciar entre móvil y escritorio.
Limitar el número de anuncios por página.
Ejemplo visual de colocación recomendada
Cabecera (Header) → 1 anuncio tipo banner.
Dentro del artículo → 1 anuncio in-article después del 2º párrafo.
Sidebar → 1 anuncio vertical.
Final del artículo → 1 anuncio matched content o display.
Con esto tendrás 4 posiciones estratégicas, sin saturar al usuario y maximizando CTR y RPM.
LAS CONEXIONES SIMULTÁNEAS PUEDE CAUSAR UNA CAÍDA EN MariaDB, y perder la conexión del sitio web de WordPress con la Base de Datos, causando un ERROR DE CONEXIÓN CON LA BASE DE DATOS.
Arrancar, detener y reiniciar
Arrancar MariaDBsudo systemctl start mariadb
Detener MariaDB sudo systemctl stop mariadb
Reiniciar MariaDB sudo systemctl restart mariadb
Estado del servicio
Ver estado (sin quedarse dentro del visor)bashsudo systemctl status mariadb --no-pager
Ver si arranca al inicio del sistemabashsudo systemctl is-enabled mariadb
Logs y errores
Ver últimos registros de MariaDBbashjournalctl -u mariadb -n 50 --no-pager
Ver logs en tiempo realbashjournalctl -u mariadb -f
Comprobación de conexión
Entrar al cliente MySQL/MariaDBbashmysql -u root -p
Consejo: Si alguna vez te quedas “atrapado” viendo el estado con systemctl status, recuerda que basta con pulsar q para salir y volver al prompt.
Aquí tienes una mini‑guía de optimización de MariaDB para un VPS con 2 GB de RAM. Con estos ajustes tu servidor debería mantenerse estable y evitar que el sistema lo mate por falta de memoria.
⚙️ Configuración recomendada en /etc/mysql/mariadb.conf.d/50-server.cnf
Dentro del bloque [mysqld] añade o ajusta estas líneas:
ini
[mysqld]
# Memoria principal para InnoDB (ajustada a 256 MB para 2 GB de RAM)
innodb_buffer_pool_size = 256M
# Número máximo de conexiones simultáneas
max_connections = 100
# Tamaño máximo de tablas temporales en memoria
tmp_table_size = 64M
max_heap_table_size = 64M
# Caché de consultas (puede ayudar en sitios con muchas lecturas repetidas)
query_cache_size = 32M
query_cache_type = 1
# Limitar el tamaño del log binario si no usas replicación
expire_logs_days = 7
max_binlog_size = 100M
# Evitar que MariaDB consuma demasiada RAM en operaciones grandes
join_buffer_size = 2M
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 4M
Pasos para aplicar
Edita el archivo: sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
Añade el bloque [mysqld] con los parámetros anteriores.
Guarda con Ctrl+O, confirma con Enter y sal con Ctrl+X.
Activa swap si tu VPS no la tiene, para evitar OOM‑kill:bashsudo fallocate -l 1G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile
Monitoriza consumo con:bashhtop
Ajusta valores si notas que MariaDB sigue consumiendo demasiada RAM.
script automático pensado para tu VPS Debian con 2 GB de RAM. Este script ajusta los parámetros de MariaDB y activa un archivo de swap de 1 GB para evitar que el sistema vuelva a matar el proceso por falta de memoria.
Aquí tienes un script avanzado que no solo optimiza MariaDB y activa swap, sino que además monitoriza el servicioy lo reinicia automáticamente si detecta un fallo por OOM‑kill (falta de memoria).
Un certificado SSL sirve para cifrar la comunicación entre el navegador y el servidor, garantizando privacidad y autenticidad del sitio web. Además, muchos certificados incluyen una garantía monetaria ofrecida por la Autoridad de Certificación (CA), que puede cubrir al usuario final en caso de que el certificado falle y cause pérdidas económicas.
🔐 ¿Qué es un certificado SSL?
Es un certificado digital que autentica la identidad de un sitio web y habilita una conexión segura mediante HTTPS.
El protocolo SSL/TLS cifra los datos transmitidos (contraseñas, tarjetas de crédito, información personal), evitando que terceros los intercepten o manipulen.
El candado en la barra de direcciones indica que la conexión está protegida.
¿Existe un seguro monetario?
Sí, pero con matices:
Los certificados SSL incluyen una garantía que varía según el tipo y el proveedor.
Esta garantía es un compromiso de la CA (Autoridad de Certificación) de indemnizar económicamente al usuario final si el certificado falla por negligencia de la CA y provoca pérdidas financieras (por ejemplo, fraude en transacciones online).
Los montos de cobertura pueden ir desde 10.000 USD hasta 1.5 millones USD, dependiendo del nivel del certificado (DV, OV, EV).
Importante: esta garantía no protege al dueño del sitio web, sino al cliente que confía en el certificado. Es decir, si un visitante sufre un daño económico porque el certificado fue emitido de forma incorrecta, puede reclamar la indemnización.
Puntos clave
Propósito principal: seguridad y confianza en las transacciones online.
Seguro monetario: sí existe, pero solo en casos de fallo atribuible a la CA.
No cubre: errores del administrador del sitio, hackeos por mala configuración, ni fraudes ajenos al certificado.
Valor añadido: además de cifrado, el SSL mejora el SEO y la reputación del sitio.
El certificado SSL protege la comunicación y aporta confianza. La garantía monetaria es un respaldo adicional, pero solo aplica si la Autoridad de Certificación comete un error que cause pérdidas financieras.
Detalles del certificado EV SSL
Proveedor: Sectigo (una de las principales Autoridades de Certificación).
Precio: 126,95 € / año.
Tipo: Validación extendida (EV).
Proceso de validación:
Verificación exhaustiva de la identidad de la empresa solicitante.
Revisión de datos legales y de contacto.
Garantiza que el sitio web pertenece realmente a la entidad indicada.
Cobertura:
Cifrado fuerte de las comunicaciones (HTTPS).
Mayor confianza para clientes en transacciones online.
Incluye garantía monetaria para usuarios finales en caso de fallo atribuible a la CA (el importe depende del certificado, en Sectigo EV SSL suele rondar hasta 1 millón USD).
Diferencias frente a otros certificados
DV (Domain Validation): solo valida el dominio, más barato (~10–30 €/año).
OV (Organization Validation): valida la empresa, precio intermedio (~50–100 €/año).
EV (Extended Validation): máxima validación y confianza, precio más alto (~126,95 € ).
✅ Conclusión: Si buscas máxima credibilidad para un sitio corporativo o de comercio electrónico, algún proveedor sí ofrece el EV SSL de Sectigo a 126,95 €/año, con validación extendida y garantía monetaria para clientes.
La diferencia principal entre un certificado EV SSL y uno gratuito como Let’s Encrypt está en el nivel de validación, la garantía monetaria y la confianza que transmiten. Let’s Encrypt ofrece cifrado básico, mientras que el EV SSL proporciona validación empresarial completa y respaldo económico.
🔐 Comparativa: EV SSL vs Let’s Encrypt
Característica
EV SSL (Extended Validation)
Let’s Encrypt (Gratuito)
Precio
100–300 USD/año (DonDominio: 126,95 €/año)
Gratis
Validación
Validación extendida de empresa (documental)
Validación de dominio (automática)
Confianza visual
Muestra nombre legal de la empresa en el certificado
Solo muestra el candado HTTPS
Garantía monetaria
Sí (hasta 1 millón USD para usuarios finales)
No incluye garantía económica
Soporte técnico
Profesional, con SLA y asistencia personalizada
Limitado o comunitario
Renovación automática
Manual o asistida por proveedor
Sí, cada 90 días
Uso recomendado
Comercio electrónico, banca, instituciones
Blogs, sitios personales, proyectos básicos
✅ ¿Cuál elegir?
Let’s Encrypt es ideal si necesitas cifrado básico, sin coste, y no manejas datos sensibles ni pagos.
EV SSL es imprescindible si tu sitio representa una empresa, gestiona transacciones, o necesita máxima confianza y respaldo legal.
Si tu web es corporativa o comercial, el EV SSL transmite profesionalismo y seguridad jurídica. Si es un blog o proyecto personal, Let’s Encrypt puede ser suficiente. ¿Quieres que te ayude a instalar uno u otro en tu hosting?
Mantén a la vista el Reloj Analógico en tu sitio de WordPress, fácil de insertar, y con un potente efecto visual. El Reloj Analógico se adapta a todos los dispositivos.
⏰ Añade un reloj analógico en tu WordPress
¿Quieres mostrar la hora en tu sitio web con un reloj analógico elegante? Aquí tienes un código completo que puedes insertar en el widget de barra lateral de tu WordPress.
RELOJ WEB
Pasos:
Entra en tu panel de administración de WordPress.
Ve a Apariencia > Widgets.
Añade un widget de tipo HTML personalizado en la barra lateral.
Copia y pega el siguiente código completo en el widget:
html
<html>
<head>
<title>RELOJ WEB</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
.reloj-container {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
max-width: 420px; /* tamaño máximo */
margin: 0 auto; /* centra horizontalmente */
padding: 10px;
box-sizing: border-box;
}
canvas {
width: 100%;
height: auto;
display: block;
}
</style>
</head>
<body>
<div class="reloj-container">
<canvas id="my_canvas" width="420" height="420"></canvas>
</div>
<script>
var angle_jump=6;
var dt= new Date();
sec = dt.getSeconds()*angle_jump;
var min=dt.getMinutes();
min=min*angle_jump;
min=min + (sec/360)
var hour=dt.getHours();
hour=hour*30;
hour=hour + (min/12);
var ang_second=90-sec;
var ang_minute=90-min;
var ang_hour=90-hour;
var r=100;
var my_canvas=document.getElementById("my_canvas");
var gctx = my_canvas.getContext("2d");
var x=my_canvas.width/2;
var y=my_canvas.height/2;
speed=1000;
arc_angle=10;
my_function=function my_function(){
gctx.clearRect(0, 0, my_canvas.width,my_canvas.height);
// círculo exterior con sombra
gctx.beginPath();
gctx.strokeStyle= '#0B033B';
gctx.lineWidth=10;
gctx.shadowColor = 'rgba(0,0,0,0.5)';
gctx.shadowBlur = 15;
gctx.shadowOffsetX = 5;
gctx.shadowOffsetY = 5;
gctx.arc(x,y,r*1.4,0,2*Math.PI);
gctx.stroke();
// reset sombra
gctx.shadowColor = 'transparent';
gctx.shadowBlur = 0;
gctx.shadowOffsetX = 0;
gctx.shadowOffsetY = 0;
gctx.lineWidth=1;
// números y marcas
var h=2;
gctx.textAlign = "center";
gctx.textBaseline = "middle";
gctx.font = '36px serif';
for(j=0;j<360;j += angle_jump){
j_radian=j*(Math.PI/180);
gctx.beginPath();
gctx.strokeStyle= '#464623';
if((j % (5*angle_jump))==0){
var y1_text=y+ 0.85*r*Math.sin(j_radian);
var x1_text=x+ 0.85*r*Math.cos(j_radian);
if(h<12){ h=h+1; } else { h=1; }
// sombra en números
gctx.shadowColor = 'rgba(0,0,0,0.4)';
gctx.shadowBlur = 6;
gctx.shadowOffsetX = 2;
gctx.shadowOffsetY = 2;
gctx.fillText(h,x1_text,y1_text);
// reset sombra
gctx.shadowColor = 'transparent';
gctx.shadowBlur = 0;
gctx.shadowOffsetX = 0;
gctx.shadowOffsetY = 0;
// rayas largas en todos los números
var y1_out = y + 1.05*r*Math.sin(j_radian);
var x1_out = x + 1.05*r*Math.cos(j_radian);
var y2_out = y + 1.3*r*Math.sin(j_radian);
var x2_out = x + 1.3*r*Math.cos(j_radian);
gctx.moveTo(x1_out,y1_out);
gctx.lineTo(x2_out,y2_out);
gctx.stroke();
} else {
// rayas normales
var y1_out = y + 1.1*r*Math.sin(j_radian);
var x1_out = x + 1.1*r*Math.cos(j_radian);
var y2_out = y + 1.2*r*Math.sin(j_radian);
var x2_out = x + 1.2*r*Math.cos(j_radian);
gctx.moveTo(x1_out,y1_out);
gctx.lineTo(x2_out,y2_out);
gctx.stroke();
}
}
// segundero
gctx.beginPath();
gctx.strokeStyle= '#7CC0F5';
var startAngle=(1/180) * (360-ang_second);
var a_end_ang=(1/180) * (360-(ang_second + 180 -arc_angle));
var a_start_ang=(1/180) *(360-(ang_second + 180 + arc_angle));
var y1=y+ r*Math.sin(startAngle*Math.PI);
var x1=x+ r*Math.cos(startAngle*Math.PI);
gctx.moveTo(x1,y1);
gctx.arc(x,y,0.3*r,a_start_ang*Math.PI,a_end_ang*Math.PI);
gctx.lineTo(x1,y1);
gctx.fillStyle = '#7CC0F5';
gctx.fill();
gctx.stroke();
// minutero
gctx.beginPath();
gctx.strokeStyle= '#181500';
var startAngle=(1/180) * (360-ang_minute);
var a_end_ang=(1/180) * (360-(ang_minute + 180 -arc_angle));
var a_start_ang=(1/180) *(360-(ang_minute + 180 + arc_angle));
var y1=y+ 0.9*r*Math.sin(startAngle*Math.PI);
var x1=x+ 0.9*r*Math.cos(startAngle*Math.PI);
gctx.moveTo(x1,y1);
gctx.arc(x,y,0.3*r,a_start_ang*Math.PI,a_end_ang*Math.PI);
gctx.lineTo(x1,y1);
gctx.fillStyle = '#181500';
gctx.fill();
gctx.stroke();
// horario
gctx.beginPath();
gctx.strokeStyle= '#181500';
var startAngle=(1/180) * (360-ang_hour);
var a_end_ang=(1/180) * (360-(ang_hour + 180 -(arc_angle*2)));
var a_start_ang=(1/180) *(360-(ang_hour + 180 + (arc_angle*2)));
var y1=y+ 0.8*r*Math.sin(startAngle*Math.PI);
var x1=x+ 0.8*r*Math.cos(startAngle*Math.PI);
gctx.moveTo(x1,y1);
gctx.arc(x,y,0.15*r,a_start_ang*Math.PI,a_end_ang*Math.PI);
gctx.lineTo(x1,y1);
gctx.fillStyle = '#181500';
gctx.fill();
gctx.stroke();
// círculo central
gctx.beginPath();
gctx.strokeStyle= '#000000';
gctx.arc(x,y,3,0,2*Math.PI);
gctx.fillStyle = '#282746';
gctx.fill();
gctx.stroke();
my_function2();
}
my_function2=function my_function2(){
if(ang_second > -264){
ang_second=ang_second-angle_jump;
setTimeout('my_function()',speed);
}else{
ang_second=90;
if(ang_minute > -264){
ang_minute=ang_minute - angle_jump;
}else{
ang_minute=90;
ang_hour=ang_hour-angle_jump;
}
setTimeout('my_function()',speed);
}
}
my_function();
</script>
</body>
</html>
3. Guardar y comprobar
Guarda el widget.
Ve a tu sitio y verás el reloj analógico funcionando en la barra lateral.
Resumen de la creación del reloj analógico
Canvas de HTML5
El reloj se dibuja dentro de un elemento <canvas> de HTML.
Este canvas es un área gráfica donde se pueden trazar líneas, círculos y texto con JavaScript.
Contexto gráfico (getContext("2d"))
Se obtiene el contexto 2D del canvas, que permite dibujar formas y aplicar estilos.
Con este contexto (gctx) se trazan los círculos, rayas y números.
Cálculo de ángulos
Cada segundo equivale a 6° (360° / 60).
Cada minuto también equivale a 6°.
Cada hora equivale a 30° (360° / 12).
Se calculan los ángulos de las agujas en función de la hora actual (Date()).
Dibujo de la esfera
Se dibuja un círculo exterior con borde azul oscuro y sombra para dar volumen.
Se añaden las rayas de los minutos y las rayas más largas en las posiciones de las horas.
Los números (1–12) se colocan alrededor del círculo, centrados y con sombra.
Agujas del reloj
Segundero: delgado y de color azul claro.
Minutero: más grueso y oscuro.
Horario: más corto y ancho.
Cada aguja se dibuja como una línea con un pequeño arco en la base para dar efecto.
Centro del reloj
Se dibuja un pequeño círculo en el centro para cubrir las uniones de las agujas.
Animación
Una función (my_function) redibuja el reloj cada segundo.
Se usa setTimeout para actualizar los ángulos y mover las agujas en tiempo real.
Estilos y centrado
El reloj se coloca dentro de un contenedor .reloj-container con CSS flexbox para que quede centrado en ordenador y móvil.
El canvas es responsivo (width:100%) para adaptarse al ancho del widget.
En resumen
El reloj se construye con:
HTML → para definir el canvas.
CSS → para centrarlo y hacerlo responsivo.
JavaScript → para calcular la hora, dibujar la esfera, los números, las rayas y las agujas, y actualizarlo cada segundo.
Esquema visual (imaginado)
Círculo exterior → esfera del reloj.
Rayas cortas → minutos.
Rayas largas + números → horas.
Agujas → hora, minuto y segundo.
Centro → círculo pequeño que une las agujas.
Animación → función que actualiza cada segundo.
En conclusión: el reloj se construye combinando HTML (canvas), CSS (centrado y responsivo) y JavaScript (cálculo de ángulos y animación).
Esquema visual del reloj analógico
1. Esfera del reloj
Un círculo exterior con borde azul oscuro y sombra.
Representa la base del reloj.
Código
●───────────────●
/ \
● ●
\ /
●───────────────●
2. Marcas de minutos y horas
60 rayas alrededor de la esfera.
Las rayas de las horas (1–12) son más largas.
Sirven de guía para colocar los números.
Código
| | | | | | | | | |
3. Números (1–12)
Colocados en posiciones radiales usando trigonometría.
Separados del borde para que no se peguen a las rayas.
Con sombra para dar volumen.
Código
12
11 1
10 2
9 3
6
4. Agujas
Segundero: delgado y azul claro.
Minutero: más largo y oscuro.
Horario: más corto y ancho.
Cada aguja se dibuja según el ángulo calculado con la hora actual.
Código
|
|
----●----
|
5. Centro del reloj
Un pequeño círculo que cubre la unión de las agujas.
Da un acabado limpio y elegante.
6. Animación
Una función en JavaScript (my_function) redibuja el reloj cada segundo.
Se actualizan los ángulos de las agujas con la hora real (Date()).
Se usa setTimeout para que el reloj se mueva en tiempo real.
Este sitio utiliza solo cookies propias necesarias para su funcionamiento y para recordar tus preferencias de consentimiento. No empleamos cookies de publicidad ni de seguimiento, y los anuncios se muestran sin utilizar cookies.