Author: jaime

  • Cómo desplegar un MCP Server público con FastMCP, Docker y Traefik

    Cómo desplegar un MCP Server público con FastMCP, Docker y Traefik

    En este tutorial aprenderás a crear y desplegar un MCP Server usando FastMCP, contenerizarlo con Docker, y exponerlo de manera segura en Internet utilizando Traefik como reverse proxy con certificados SSL automáticos de Let’s Encrypt. Al finalizar, podrás acceder a tu servidor en la URL:

    https://mcp-server-demo.yourdomain.com

    con SSL habilitado gracias a Traefik y Let’s Encrypt.

    (more…)
  • Cómo Implementar Bearer Token en FastMCP Server con transporte streamable-http usando Python

    Cómo Implementar Bearer Token en FastMCP Server con transporte streamable-http usando Python

    En este tutorial, te mostraré cómo implementar un sistema de autenticación basado en Bearer Token en un servidor FastMCP utilizando el transporte streamable-http. Estaremos trabajando con FastMCP v2, un framework potente para construir servidores MCP (Model Context Protocol).

    Requisitos previos

    Antes de comenzar, asegúrate de tener instalado:

    • FastMCP v2

    Vamos a crear un archivo main.py con el siguiente contenido:

    (more…)
  • Cómo agregar un keybinding en VS Code para comentar múltiples líneas

    Cómo agregar un keybinding en VS Code para comentar múltiples líneas

    Si eres desarrollador y usas Visual Studio Code como tu editor principal, sabes lo importante que son los atajos de teclado para agilizar tu flujo de trabajo. Uno de los más útiles es la capacidad de comentar y descomentar bloques de código rápidamente. En este post te mostraré cómo configurar un keybinding personalizado para esta función.

    Paso 1: Abrir los keybindings personalizados

    1. Abre Visual Studio Code
    2. Ve al menú File > Preferences > Keyboard Shortcuts
    3. En la esquina superior derecha del panel que aparece, haz clic en el icono que dice Open Keyboard Shortcuts (JSON)

    Esto abrirá el archivo keybindings.json donde puedes agregar tus atajos personalizados.

    (more…)
  • Google reCAPTCHA v2 en Laravel 12 con Livewire 3

    Google reCAPTCHA v2 en Laravel 12 con Livewire 3

    En este tutorial detallado, aprenderás a integrar Google reCAPTCHA v2 en tu aplicación Laravel 12 utilizando Livewire 3. Esta implementación ayudará a proteger tus formularios contra bots y spam, mejorando la seguridad de tu aplicación.

    (more…)
  • Habilitar wifi en mac mini después de instalar Kubuntu 24.04

    Habilitar wifi en mac mini después de instalar Kubuntu 24.04

    ¿Acabas de instalar Kubuntu 24.04 en tu Mac Mini y te das cuenta de que el WiFi no funciona? No te preocupes, es un problema común debido a los controladores de hardware específicos de Apple. 

    sudo apt-get update
    sudo apt-get --reinstall install bcmwl-kernel-source
    sudo modprobe -r b43 ssb wl brcmfmac brcmsmac bcma
    sudo modprobe wl

    Fuente: Ubuntu Community Help – WifiDocs/Driver/bcm43xx

    ¡No dejes que la falta de WiFi te detenga! Disfruta de tu Kubuntu 24.04 al máximo. 😊




















  • Solución: Unable to create PsySH runtime directory. Make sure PHP is able to write to /run/user/1003 in order to continue.

    Solución: Unable to create PsySH runtime directory. Make sure PHP is able to write to /run/user/1003 in order to continue.

    Cuando trabajamos con Laravel, php artisan tinker es una herramienta fundamental para interactuar rápidamente con nuestras aplicaciones desde la línea de comandos. Sin embargo, a veces al ejecutar este comando podemos encontrarnos con errores inesperados. Uno de ellos es el siguiente:

       Psy\Exception\RuntimeException
    
      Unable to create PsySH runtime directory. Make sure PHP is able to write to /run/user/1003 in order to continue.
    
      at vendor/psy/psysh/src/Configuration.php:632
        628▕         $runtimeDir = $this->configPaths->runtimeDir();
        629▕
        630▕         if (!\is_dir($runtimeDir)) {
        631▕             if (!@\mkdir($runtimeDir, 0700, true)) {
      ➜ 632▕                 throw new RuntimeException(\sprintf('Unable to create PsySH runtime directory. Make sure PHP is able to write to %s in order to continue.', \dirname($runtimeDir)));
        633▕             }
        634▕         }
        635▕
        636▕         return $runtimeDir;
    
          +18 vendor frames
    
      19  artisan:35
          Illuminate\Foundation\Console\Kernel::handle()
    
    (more…)
  • Cómo mostrar alertas en Laravel con SweetAlert2 y validaciones personalizadas

    Cómo mostrar alertas en Laravel con SweetAlert2 y validaciones personalizadas

    En esta entrada te mostraré cómo integrar SweetAlert2 en Laravel para mostrar alertas interactivas al eliminar registros. Además, implementaremos validaciones que verifican si hay dependencias antes de eliminar, asegurando que el proceso sea seguro y controlado. Con un ejemplo práctico, veremos cómo SweetAlert2 mejora la experiencia de usuario al mostrar mensajes personalizados según el resultado de la operación.

    (more…)
  • Crear, editar y eliminar con Eloquent

    Crear, editar y eliminar con Eloquent

    Explorar la documentación de Laravel para realizar operaciones básicas como crear, editar o eliminar registros con Eloquent puede resultar un poco confuso. Por eso, en este artículo te ofrezco un resumen claro de los métodos que debes usar según el tipo de relación en tu modelo.

    1. Relación Uno a Uno (One to One)

    Un usuario tiene un perfil, y un perfil pertenece a un usuario.

    class User extends Model
    {
        public function profile()
        {
            return $this->hasOne(Profile::class);
        }
    }
    
    class Profile extends Model
    {
        public function user()
        {
            return $this->belongsTo(User::class);
        }
    }
    

    Insertar con el método save

    $profile = new Profile(['bio' => 'Mi biografía', 'twitter' => '@usuario']);
    $user = User::find(1);
    
    $user->profile()->save($profile);
    
    

    Insertar con el método create

    (more…)
  • Solución: Error en Bitbucket Pipelines al ejecutar pruebas de Laravel con PHPUnit y Paratest

    Solución: Error en Bitbucket Pipelines al ejecutar pruebas de Laravel con PHPUnit y Paratest

    Al ejecutar en el pipeline los tests unitarios aparece un error de memoria

    In WorkerCrashedException.php line 41:
                                                                                   
      The test "PARATEST='1' TEST_TOKEN='7' UNIQUE_TEST_TOKEN='7_66f1d266ad6eb' t  
      ests/Feature/PruebasTest.php" failed.                               
                                                                                   
      Exit Code: 255(Unknown error)                                                
                                                                                   
      Working directory: /opt/atlassian/pipelines/agent/build                      
                                                                                   
      Output:                                                                      
      ================                                                             
                                                                                   
      Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to all  
      ocate 16777248 bytes) in /opt/atlassian/pipelines/agent/build/vendor/maennc  
      hen/zipstream-php/src/File.php on line 332         

    La solución es agregar un elemento <ini> al archivo de configuración de PHPUnit phpunit.xml con el valor memory_limit para aumentar la asignación de memoria, en mi caso lo aumenté a 512M

    (more…)
  • Instalar multiples versiones de PHP en diferentes carpetas

    Instalar multiples versiones de PHP en diferentes carpetas

    Para evitar conflictos primero desinstalar php

    sudo apt-get remove 'php*'
    sudo apt-get purge 'php*'

    Agregar el repositorio de ondrej/php

    sudo apt install software-properties-common -y
    sudo add-apt-repository ppa:ondrej/php -y
    sudo apt update && sudo apt upgrade -y

    Instalar el módulo fcgid de apache

    sudo apt install libapache2-mod-fcgid -y
    

    Instalar PHP 8.1 y 8.2

    (more…)