Act18-25Ag - CKEditor Django - Gemini CLI vs Agent - Lo peor de Flutter -10 Mejores Prompts +
Índice de contenido
Bienvenidos a otra semana. Paso a comentar sobre todas las actualizaciones ocurridas en la semana del 25 al 1 de septiembre.
Como siempre, comenzamos recordando las versiones comunitarias de los libros, que son totalmente gratuitas. Esta semana le toca el turno a Electron.
- https://academy.desarrollolibre.net/libro/laravel
- https://academy.desarrollolibre.net/libro/primeros-pasos-con-django-5
- https://academy.desarrollolibre.net/libro/primeros-pasos-laravel-livewire
- https://academy.desarrollolibre.net/libro/primeros-pasos-con-bootstrap
- https://academy.desarrollolibre.net/libro/primeros-pasos-con-electronjs
Además, recordemos que ya están disponibles los demás libros comunitarios lanzados semanas atrás.
Por otro lado, ya está disponible la versión Early Access (acceso anticipado) del curso y el libro. De momento, solo el libro se puede consumir mediante el visor de la aplicación, todavía no he generado los PDF. El acceso, como siempre, desde academia.desarrollado.net, en la sección de cursos o libros (lo recomendado es hacerlo directamente desde la app):

De momento, está en un precio especial, ya que cuando lo termine pasará al precio completo, igual que ocurrió con el de LW (aunque este será un poco más económico).
YouTube y Blog
Pasamos ahora a las actualizaciones en YouTube y el blog.
1. CKEditor con Django
Vemos cómo puedes integrar CKEditor en Django. Hay varias formas:

Incorporar CKEditor 5 en Django 3 FORMAS - https://youtu.be/JOL3JVLvawk
La tradicional, instalando el JavaScript.
Usando la versión disponible vía PIP, que resulta más sencilla.
Una vez instalado, configuras las rutas necesarias y defines en tus modelos el campo correspondiente para que en lugar de TextField sea de tipo CKEditor.
2. Gemini CLI vs Gemini Agent
Comparación entre Gemini CLI y Gemini Agent:
Gemini CLI: se instala a nivel de sistema operativo y se usa desde la terminal. Sirve, por ejemplo, para generar código directamente en el proyecto.
Gemini Agent: una interfaz gráfica con diálogos para interactuar también mediante código.

Gemini Agent VS Gemini CLI: ¿Cuál es mejor para programar? 2 - https://youtu.be/9jRnCXKy8tY
No es que una sea mejor que la otra, simplemente tienen propósitos distintos.
3. Opinión: lo que menos me gusta de Flutter
Comento un aspecto personal: lo que menos me gusta de Flutter son sus actualizaciones.
El problema es que, al ser una tecnología tan abierta y dependiente de Android, nos obliga a preocuparnos por:
- Actualizaciones de Android.
- Flutter.
- Dart.
- Dependencias.
Cuando algo falla, todo el proyecto puede verse afectado, a diferencia de otras tecnologías como Laravel, donde básicamente solo nos preocupamos del proyecto en sí y no de tantas dependencias externas.

Lo que MENOS me gusta de Flutter son "Las Actualizaciones" + Concejos Curiosidades - https://youtu.be/txisiBEbE1M
4. Diez trucos para mejores prompts
- Lista rápida de recomendaciones:
- Sé concreto.
- Haz cambios parciales.
- Define el formato de salida.
- Usa ejemplos.
- Establece un rol.
- Controla la extensión.
- Reformula cuando sea necesario.

5. Seguridad: inyección de JavaScript en Livewire en los eventos
Explico por qué no podemos inyectar JavaScript en eventos (por ejemplo, en un onClick).
Esto se debe a medidas de seguridad de los navegadores para evitar ataques. Por lo tanto, tampoco en Livewire podremos hacerlo.

6. Problema de colisión de cámara
En el canal secundario explico cómo resolver el problema de colisión en cámaras de juegos, que genera descolocamiento o parpadeo visual cuando dos objetos se acercan demasiado.

¿Por qué SALTA la CÁMARA (Camera Jump) en Unreal? Do Collision Test - https://youtu.be/f9NIO-Rzhck
7. Duolingo en bolsa
Analizamos la caída de Duolingo en la bolsa, donde se evidencia que la aplicación en sí no es tan valiosa: lo realmente importante es su comunidad de usuarios.
GPT 5 pone en jaque a Duolingo con una app de idiomas creada en tiempo récord - https://youtu.be/Tv9oCbGzWFg
Curso y Libro: Django Shopping
- Pasamos a las actualizaciones del proyecto Django Shopping, disponible en acceso anticipado.
- Estamos trabajando la sección de tienda en línea:
- Mejoramos la integración de pasarelas de pago como Stripe.
- Añadimos lógica para manejar estados como “cancelado” o “loading”.
- Creamos modelos genéricos para productos, reutilizando lo aprendido con la entidad “libro”.
- Esto nos permite mayor modularidad: ahora puedes definir un producto genérico y especificar si es un libro, un escritorio, un ratón o una computadora. Así, el sistema es más flexible y reutilizable.
Django - Tienda en línea
Tienda: Libros
- Manejo de errores: Página de error
- Vamos a mostrar las páginas de errores
- Diseño del template de pago
- Aplicamos un sencillo CSS en base a flex para la pasarela de pago.
- Corrección de errores en pasarela de pago de PayPal
- Hablaremos sobre unos problemas en el template _paypal y llamados de constructores
- Payment: Problemas con los tipos de retornos
- Hablamos sobre que, cada retorno en la vista de pago, tiene que tener la verificación sobre el tipo que tiene que retornar.
- Payment: Método auxiliar para las respuestas json/templates
- Vamos a implementar un método de ayuda que usamos al momento del retorno de la respuesta del pago en la vista, dependiendo de si la respuesta tiene queser un json o una redirección.
- Stripe: Url de cancelado
- Vamos a implementar la URL de cancelado en Stripe
- Módulo de usuario para ver los pagos realizados
- Vamos a mostrar la implementación de un módulo para pagos realizados.
- Extra: Loading al dar click en la pasarela de pago
- Definimos un loading al darle click al botón de PayPal.
- Aplicar estilo al loading
- Damos un rediseño al efecto de loading.
- Resumen
Tienda: Producto
- Modelo: Tipo producto
- Entidad para especificar el tipo de producto.
- Modelo: Producto
- Entidad de tipo genérica para los productos.
- Ejecutar migraciones
- Generamos y ejecutamos la migración para los productos.
- Dashboard: CRUD
- Presentamos el CRUD para el producto y el tipo.
- Store: Listado y detalle
- Vamos a mostrar la página de listado y detalle para la tienda del producto.
- Extra: Modelo Abstracto tipo producto
- Creamos una clase modelo tipo producto que podamos heredar para crear un nuevo producto.
- Store: Pasarelas: Vista
- Vamos a mostrar la implementación de la pasarela de pago en la vista.
Acepto recibir anuncios de interes sobre este Blog.
Versiones comunitarias, Electron y ya disponible Django Shopping Blog/Youtube CkEditor Django - Gemini CLI vs Agent - Lo peor de Flutter - 10 Mejores Prompts Curso/Libro Django Shopping