domingo, 8 de junio de 2025

Cómo manejar en Eclipse PDT errores por dependencias PHP de Composer que son sugeridas pero no instaladas

¿Por qué un proyecto Laravel creado con composer create-project laravel/laravel depende del paquete ably-php pero no se descarga dicho paquete?


Esta pregunta apunta a una característica importante de cómo Composer maneja las dependencias: el concepto de suggest (sugerir) en composer.json.

Cuando creas un proyecto Laravel con composer create-project laravel/laravel, el paquete principal que se instala es laravel/framework, junto con algunas otras dependencias esenciales.

La razón por la que podrías ver que ably-php "depende" (o aparece mencionado) pero no se descarga es la siguiente:

  1. No es una dependencia require directa ni transitiva obligatoria:

    ably-php (el cliente PHP para el servicio de mensajería en tiempo real Ably) no es una dependencia obligatoria para que Laravel funcione. Tu aplicación Laravel no lo necesita para arrancar ni para realizar tareas básicas como routing, ORM, etc.

  2. Es una dependencia suggest (sugerida):

    El paquete laravel/framework (que es el núcleo de tu aplicación Laravel) tiene una sección en su composer.json llamada suggest. En esta sección, lista paquetes opcionales que podrías querer instalar si vas a usar ciertas funcionalidades de Laravel.

    Por ejemplo, Laravel soporta la funcionalidad de Broadcasting (transmisión de eventos en tiempo real). Para usar Broadcasting, Laravel necesita un driver, y Ably es uno de los drivers soportados.

    Entonces, en el composer.json de laravel/framework (o de algún componente relacionado con broadcasting), verás algo parecido a esto en la sección suggest:

    JSON
    {
        "name": "laravel/framework",
        "type": "library",
        // ... otras configuraciones
        "suggest": {
            "ably/ably-php": "Required to use the Ably broadcast driver.",
            "pusher/pusher-php-server": "Required to use the Pusher broadcast driver.",
            "php-amqplib/php-amqplib": "Required to use the RabbitMQ / AMQP queue driver.",
            // ... otras sugerencias
        },
        // ...
    }
    

¿Qué significa suggest en Composer?

  • Cuando un paquete sugiere otro, significa: "Este paquete (ej. laravel/framework) puede funcionar sin el paquete sugerido (ably-php), pero si quieres usar una funcionalidad específica (ej. Broadcasting con Ably), entonces necesitarás instalarlo aparte."
  • Composer no instala automáticamente los paquetes listados en suggest. Simplemente los muestra en la salida cuando ejecutas composer install o composer update (a veces con un mensaje como "Package X is suggested by Y for Z functionality"). Es una pista para el desarrollador.

¿Por qué elegir suggest en lugar de require?

Se usa suggest para:

  1. Mantener el tamaño del paquete base pequeño: No se fuerza a todos los usuarios de Laravel a descargar dependencias que no usarán si no implementan ciertas funcionalidades.
  2. Evitar dependencias innecesarias: Permite a los desarrolladores elegir solo lo que necesitan, reduciendo la "huella" de dependencias del proyecto.
  3. Flexibilidad: Laravel puede sugerir múltiples drivers o implementaciones para una misma funcionalidad (como varios drivers de broadcasting o de colas), sin obligar a instalar todos.

En resumen:

Un proyecto Laravel estándar "sugiere" ably-php porque laravel/framework tiene soporte para usar Ably como driver de broadcasting, pero no lo "requiere" directamente. Por lo tanto, Composer te informa de su existencia pero no lo descarga a menos que tú lo pidas explícitamente.

Si en algún momento decides usar Ably para las funcionalidades de tiempo real en tu aplicación Laravel, deberás instalarlo manualmente ejecutando:

Bash
composer require ably/ably-php

Solo entonces el paquete se descargará y se incluirá en tu vendor/ y en tu composer.lock.

sábado, 25 de septiembre de 2021

Macro en Excel para copiar una tabla filtrando sus comunas

Dejo un link que lleva a un vídeo que trata sobre una macro en Excel para copiar una tabla con posibilidad de filtrar columnas. 

En la descripción del vídeo se encontrará un link para descargar el código fuente de la Macro.

Macro en Excel para copiar una tabla filtrando columnas

martes, 3 de marzo de 2020

Integraciones innovadoras (parte 1: ¿qué son?)

El estilo de desarrollo de software basado en componentes de terceros propone algo así como integrar piezas que están mejor desarrolladas de lo que nosotros mismos podríamos lograr si las hiciéramos desde cero. Si en el inconsciente colectivo de los informáticos, el camino de referencia es codificar todo desde cero, este otro camino nos acerca a trabajos que han realizado otros, adquiriendo conocimiento a medida que indagamos sobre cada componente que consideremos. Es así que para aprender sobre el uso que debemos hacer de algún componente cualquiera, primero transitamos por aprender la finalidad con la cual este fue creado. Ahora, ¿se puede también agarrar un componente que exista, y usarlo de una manera que no estaba pensada? La pregunta anterior toca un concepto que incluso sin ser desarrolladores, los usuarios lo practican de forma inconsciente. Por ejemplo, hoy dia es muy común que las herramientas de edición de texto vengan con funciones de corrección ortográfica incorporada. aun así, se pueden enumerar tantos editores de texto que no cuentan con ayuda ortográfica entre sus funciones. mientras uno considere que lo que está escribiendo no tiene errores, uno se queda en su herramienta elegida aunque esta no tenga corrector ortográfico. apenas aparece una palabra sospechosa, hay que salir a buscar una solución. veamos esta manera de resolver la necesidad: uno copia la palabra en un programa que preste servicios de ortografía (puede ser un procesador de textos en la misma computadora o una aplicación remota accedida vía web), en donde la palabra se marca en rojo si está mal escrita, ante lo que uno ordenaría que se cambie la palabra por la que esté bien escrita, y se volvería a copiar la palabra pisando la otra en su lugar de origen, para continuar escribiendo normalmente. Sigamos viendo lo que ha pasado. Se optó por utilizar un editor con corrección ortográfica, pero sólo con la palabra que necesitaba recibir la corrección. Sobre el modo de empleo que se hizo al ingresar en él una única palabra, y sobre el servicio que se recibió al extraer de él la versión mejorada de la palabra, que estos dos hechos respondan o no al objetivo de su autor, no lo sabemos. Simplemente la herramienta fue integrada de esta manera y listo. Si la manera de usarla fuera nueva porque nunca antes se la había utilizado así, entonces estaremos hablando de una integración innovadora.