miércoles, 17 de junio de 2026

Tema clave en Vuejs

🚀 Parte 1: Temas Clave Vue 3

  • Composition API: La forma moderna de escribir Vue usando <script setup>. Todo el código de una misma función va junto.

  • Lifecycle Hooks: Funciones que se ejecutan en momentos clave. El más usado: onMounted (cuando el componente aparece en pantalla, ideal para cargar datos).

  • Pinia: El almacén central. Guarda los datos que toda la aplicación necesita ver (ej. el usuario logueado).

  • Props: Datos que el padre le manda al hijo (hacia abajo).

  • Emit: Eventos que el hijo le manda al padre para avisarle algo (hacia arriba).

  • v-if: Oculta un elemento borrándolo del mapa.

  • v-show: Oculta un elemento pero solo con CSS (display: none).

  • v-for: Para hacer listas (como un forEach). Siempre lleva :key.

  • v-model: Conecta un input con una variable. Si uno cambia, el otro también.

❓ Parte 2: Preguntas de Entrevista (Respuestas Cortas)

1. ¿Diferencia entre ref y reactive?

  • ref() sirve para cualquier dato (usa .value).

  • reactive() solo para objetos y arrays (no usa .value).

  • Respuesta rápida: Usa siempre ref por seguridad.

2. ¿Cuándo usar computed y watch?

  • computed: Para calcular un dato nuevo basado en otro (tiene memoria/caché).

  • watch: Para ejecutar una acción (como llamar a una API) cuando un dato cambia.

3. ¿Ventaja de Composition API?

  • Permite ordenar el código por funciones y reutilizarlo mucho más fácil que antes.

4. ¿Cómo funciona v-model por detrás?

  • Es la unión automática de una prop (el valor) y un evento (cuando cambia).

5. ¿Cómo compartir datos entre componentes?

  • Cerca: Props (hacia abajo) y Emits (hacia arriba).

  • Lejos / Toda la app: Pinia.

6. ¿Qué es Pinia?

  • Una caja central para guardar datos globales de la app y evitar pasar props de componente en componente.

🚀 Parte 3: Nuevos Temas Clave

  • Vuex: El antecesor de Pinia. Es el sistema antiguo de manejo de estado global para Vue 2. Si te toca mantener un proyecto viejo, usarás Vuex; si el proyecto es moderno, usarás Pinia.

  • Interfaces Modernas (UI): Se refiere a crear componentes visuales que sean limpios, minimalistas, interactivos y adaptables a móviles (responsive), priorizando siempre la experiencia de usuario (UX).

  • Optimizar Rendimiento: Hacer que la app cargue y funcione más rápido. En Vue se logra con Lazy Loading (cargar componentes o rutas solo cuando se necesitan) y usando bien v-if / v-show.

  • Quasar Framework: Es un framework basado en Vue que te permite escribir el código una sola vez y exportarlo como web (SPA/SSR), app móvil (Android/iOS) o app de escritorio, usando un catálogo gigante de componentes visuales ya listos.

❓ Parte 4: Nuevas Preguntas de Entrevista

1. ¿Qué diferencia hay entre Vuex y Pinia?

  • Vuex es más complejo, usa mutaciones y requiere más código (boilerplate).

  • Pinia es más simple, no usa mutaciones (cambias el estado directamente) y tiene soporte nativo para TypeScript.

2. ¿Cómo optimizas el rendimiento de una app en Vue?

  • Cargando las rutas con Lazy Loading (importación dinámica).

  • Usando :key obligatoriamente en todos los v-for.

  • Usando v-show en lugar de v-if si el componente aparece y desaparece constantemente.

3. ¿Qué ventajas tiene usar Quasar?

  • Multiplataforma: Creas web, móvil y escritorio desde el mismo código.

  • Velocidad: Viene con componentes UI modernos listos para usar, lo que ahorra meses de desarrollo.

4. ¿A qué te refieres con crear una Interfaz Moderna en Vue?

  • A diseñar componentes modulares, con carga visual ligera, animaciones fluidas y un diseño adaptable (responsive) que responda al instante a las acciones del usuario.

miércoles, 22 de abril de 2026

Configurar SMTP gmail en moodle

En config.php:


$CFG->smtphosts = 'smtp.gmail.com:587';

$CFG->smtpuser = 'mai@mail.es';

$CFG->smtppass = ''; // tu app password  https://myaccount.google.com/apppasswords (es necesario tener la cuenta con 2fa https://myaccount.google.com/security )

$CFG->smtpsecure = 'tls';

$CFG->smtpauthtype = 'LOGIN'; 

Configuración Google Meet en Moodle

Para implementar la integración de Google Meet con Moodle mediante OAuth 2, sigue estos pasos:

  1. Creación del proyecto en Google Cloud
    • Se crea un proyecto en Google Cloud Console.
  2. Configuración de credenciales OAuth 2
    • Se genera:
      • Client ID
      • Client Secret
  3. Configuración en Moodle
    • Se accedió a:
      👉 Administración del sitio → Servidor → Servicios OAuth 2
    • Se creó el servicio de Google utilizando:
      • Client ID
      • Client Secret
  4. Configuración de URI de redirección
    • Se configura correctamente en Google Cloud:

      https://tudominio.com/admin/oauth2callback.php
    • Esto resuelve el error redirect_uri_mismatch
  5. Activación de APIs necesarias
    • Se habilita:
      • Google Drive API (necesaria para sincronizar grabaciones)
  6. Validación de conexión
    • Se logra conectar la cuenta de Google con Moodle
    • Se habilita la opción de sincronización de grabaciones

 Resultado

  • Moodle puede:
    • Crear sesiones de Google Meet
    • Conectar con Google Drive
    • Sincronizar grabaciones (tras ejecutar la sincronización)

Subir archivos grandes en Moodle

 Servidor web (NGINX o Apache)

En NGINX

Parámetro clave:

client_max_body_size 512M;
  • Esto define el tamaño máximo de subida
  • Valor típico por defecto: 1M o 2M (muy bajo)
  • Tú puedes subirlo a:
    • 128M (normal)
    • 256M (recomendado)
    • 512M (archivos grandes como videos)

 Se coloca en:

  • /etc/nginx/nginx.conf
  • o en config del sitio

Luego:

sudo systemctl reload nginx

PHP (MUY IMPORTANTE)

En php.ini debes ajustar:

upload_max_filesize = 512M
post_max_size = 512M
max_execution_time = 300
max_input_time = 300
memory_limit = 512M

post_max_size debe ser ≥ upload_max_filesize

Luego reinicia:

sudo systemctl restart php-fpm

(o apache si usas Apache)


Moodle (dentro del sistema)

Ir a:

Administración del sitio → Seguridad → Políticas del sitio

Configurar:

  • Tamaño máximo de archivo → 512MB (o el que quieras)

También en:

  • Curso → Configuración → Tamaño máximo de subida

Resumen rápido

Para subir archivos grandes:

NivelParámetroEjemplo
NGINXclient_max_body_size512M
PHPupload_max_filesize512M
PHPpost_max_size512M
MoodleTamaño máximo archivo512MB

Error típico

Si uno de estos es menor → falla la subida
(Moodle muestra error aunque tengas todo lo demás bien)

Configurar SMTP en Moodle (no gmail)

Si Moodle no envía correos, puedes configurar el SMTP directamente en el archivo config.php. 

1. Editar archivo

Ubica y abre:

/config.php

2. Añadir configuración SMTP

Agrega al final del archivo:

$CFG->directorypermissions = 0777;
$CFG->smtphosts = 'ssl://smtp.serviciodecorreo.es:465';
$CFG->smtpuser = 'tu_correo@tudominio.com';
$CFG->smtppass = 'tu_contraseña';
$CFG->smtpsecure = 'ssl';
$CFG->smtpauthtype = 'LOGIN';


3. Datos necesarios
  • Servidor SMTP: smtp.serviciodecorreo.es
  • Puerto: 465 (SSL)
  • Usuario: correo completo
  • Contraseña: la del correo

Notas importantes

  • Asegúrate de que el servidor permita conexiones SMTP (puerto 465 o 587)
  • Si no funciona con SSL, prueba:
    • tls con puerto 587
  • Verifica que el correo existe y la contraseña es correcta

Resultado

Con esta configuración, Moodle podrá enviar correos correctamente .

domingo, 12 de abril de 2026

Notas: Framework ACHIEVE para el uso de IA

No todos los problemas deben resolverse con IA. El framework ACHIEVE ayuda a identificar cuándo la Inteligencia Artificial es la herramienta correcta, con el fin de aumentar nuestra propia inteligencia y capacidad crítica, en lugar de solo depender de la tecnología.

Los 5 Pilares de ACHIEVE:

  1. A – Aid Human Coordination (Coordinación Humana): La IA como facilitadora entre personas.

    • Ejemplo: Resúmenes de reuniones, agendas compartidas o alineación de equipos.

  2. C – Cut Out Tedious Tasks (Eliminar lo Tedioso): Automatizar tareas repetitivas que no aportan valor creativo.

    • Ejemplo: Clasificar correos masivos o reformatear grandes bases de datos.

  3. H – Help Provide a Safety Net (Red de Seguridad): Usar la IA para revisar, verificar y detectar riesgos.

    • Ejemplo: Auditoría de contratos, detección de errores en código o análisis de "qué podría salir mal".

  4. I-E-V – Inspire bEtter problem solving and creatiVity (Inspiración y Creatividad): Salir de nuestra zona de confort mental.

    • Uso: Evitar resolver todo de la misma forma (sesgo) usando la IA para brainstorming, analogías y ángulos de resolución que no habíamos considerado.

  5. E – Enable Great Ideas to Scale Faster (Escalabilidad): Llevar una buena idea a un impacto mayor rápidamente.

    • Ejemplo: Traducir contenido a varios idiomas o adaptar un solo concepto a múltiples formatos (blog, redes sociales, video)

    • Conclusión: Antes de lanzar un prompt, haz una pausa y pregunta: ¿Este problema encaja en ACHIEVE? El objetivo real de la IA no es reemplazarnos, sino servir de palanca para elevar nuestro pensamiento crítico y nuestra creatividad.

viernes, 13 de febrero de 2026

Consultas SQL valiosas para moodle

 SELECT 

    table_name,

    ROUND((data_length + index_length) / 1024 / 1024 / 1024, 2) AS size_gb

FROM information_schema.TABLES

WHERE table_schema = 'campus'

ORDER BY size_gb DESC;


SELECT

   ROUND(SUM(data_length + index_length) / 1024 / 1024 / 1024, 2) AS total_gb

FROM information_schema.TABLES

WHERE table_schema = 'campus';


SELECT table_name,

       ROUND((data_length + index_length) / 1024 / 1024, 2) AS size_mb

FROM information_schema.TABLES

WHERE table_schema = 'mdlsimb'

ORDER BY size_mb DESC


Borrar logs de antes del 2025

SELECT COUNT(*) AS registros_a_borrar

FROM mdl_logstore_standard_log

WHERE timecreated < UNIX_TIMESTAMP('2025-01-01');


DELETE FROM mdl_logstore_standard_log

WHERE timecreated < UNIX_TIMESTAMP('2025-01-01')

LIMIT 50000;



OPTIMIZE TABLE mdl_logstore_standard_log;

SHOW VARIABLES LIKE 'innodb_file_per_table';

ANALYZE TABLE mdl_logstore_standard_log;


Blogs Colombia