Escribir un libro es un deseo que, consciente o inconscientemente, tenemos muchos de nosotros. Al fin y al cabo, es una prueba de que tenemos un cierto conocimiento sobre un tema que nos permite adoptar ese rol de “maestro”. Yo -que llevo unos 25 años dedicándome en mayor o menor medida a la enseñanza- siempre tuve en mente la idea de escribir uno, aunque nunca dejó de ser nada más que una idea, pues me venían a la cabeza demasiadas dudas: ¿habrá alguna editorial interesada? ¿Cuánto tiempo me llevaría? ¿Se cobra una comisión por libro vendido?
Mensaje de error
- Deprecated function: Use of "static" in callables is deprecated in Drupal\user\Entity\Role::postLoad() (line 172 of core/modules/user/src/Entity/Role.php).
Drupal\user\Entity\Role::postLoad(Object, Array) (Line: 423) Drupal\Core\Entity\EntityStorageBase->postLoad(Array) (Line: 353) Drupal\Core\Entity\EntityStorageBase->loadMultiple(Array) (Line: 16) Drupal\user\RoleStorage->isPermissionInRoles('access site in maintenance mode', Array) (Line: 112) Drupal\Core\Session\UserSession->hasPermission('access site in maintenance mode') (Line: 105) Drupal\Core\Session\AccountProxy->hasPermission('access site in maintenance mode') (Line: 83) Drupal\redirect\RedirectChecker->canRedirect(Object) (Line: 120) Drupal\redirect\EventSubscriber\RedirectRequestSubscriber->onKernelRequestCheckRedirect(Object, 'kernel.request', Object) call_user_func(Array, Object, 'kernel.request', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.request') (Line: 145) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('views') (Line: 1316) Drupal\views\Plugin\views\query\Sql->query() (Line: 1454) Drupal\views\Plugin\views\query\Sql->build(Object) (Line: 1326) Drupal\views\ViewExecutable->build() (Line: 392) Drupal\views\Plugin\views\display\PathPluginBase->execute() (Line: 196) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('views_substitutions', Array) (Line: 1418) Drupal\views\Plugin\views\query\Sql->query() (Line: 1454) Drupal\views\Plugin\views\query\Sql->build(Object) (Line: 1326) Drupal\views\ViewExecutable->build() (Line: 392) Drupal\views\Plugin\views\display\PathPluginBase->execute() (Line: 196) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('views') (Line: 1316) Drupal\views\Plugin\views\query\Sql->query(1) (Line: 1455) Drupal\views\Plugin\views\query\Sql->build(Object) (Line: 1326) Drupal\views\ViewExecutable->build() (Line: 392) Drupal\views\Plugin\views\display\PathPluginBase->execute() (Line: 196) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('views_substitutions', Array) (Line: 1418) Drupal\views\Plugin\views\query\Sql->query(1) (Line: 1455) Drupal\views\Plugin\views\query\Sql->build(Object) (Line: 1326) Drupal\views\ViewExecutable->build() (Line: 392) Drupal\views\Plugin\views\display\PathPluginBase->execute() (Line: 196) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115) Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80) Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640) Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63) Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'insert-max_800_px-3d95e0ea-88c8-4722-b5fa-b126f2c647ae') (Line: 95) Drupal\editor\Plugin\Filter\EditorFileReference->process('Escribir un libro es un deseo que, consciente o inconscientemente, tenemos muchos de nosotros. Al fin y al cabo, es una prueba de que tenemos un cierto conocimiento sobre un tema que nos permite adoptar ese rol de “maestro”. Yo -que llevo unos 25 años dedicándome en mayor o menor medida a la enseñanza- siempre tuve en mente la idea de escribir uno, aunque nunca dejó de ser nada más que una idea, pues me venían a la cabeza demasiadas dudas: ¿habrá alguna editorial interesada? ¿Cuánto tiempo me llevaría? ¿Se cobra una comisión por libro vendido? Todas estas dudas quedaron zanjadas de golpe cuando en octubre de 2016 recibí la llamada del director comercial de la <a href="https://www.linkedin.com/company/grupo-editorial-ra-ma/">editorial RA-MA</a>, <a href="https://www.linkedin.com/in/julio-santoro-2392b766/">Julio Santoro</a>. Me explicó que había visto los cursos que yo tenía en cierta plataforma de eLearning y quería proponerme llevar uno de ellos a formato papel. Quedamos para vernos en las oficinas de la editorial, así lo hicimos, me comentó las condiciones y firmamos el contrato. RA-MA había sido una de las editoriales que había acompañado mis estudios universitarios (todavía tengo muchos de aquellos libros en mis estanterías), y mi imagen de esta editorial era la mejor que podía tener, así que, para mí, aquello era de las mejores cosas que podían ocurrirme: Iba a escribir un libro que iba a ser publicado por RA-MA. <a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2021-06/library.jpg"></a> Como la base del libro ya existía (pues la había escrito para crear el curso original en aquella plataforma de eLearning), esperaba que la tarea no fuese especialmente exigente. Sin embargo, entre completar el texto, corrección de errores, diseño de gráficos e infinidad de lecturas buscando dónde hacer retoques, estuve escribiendo el libro unas 4 semanas: prácticamente un mes a tiempo completo. El libro se publicó a finales de diciembre de aquel 2016. Reconozco que, a lo largo de los siguientes meses, siempre que podía me colaba en las librerías por las que pasaba para ver si tenían o no mi libro. Prurito profesional… Según el contrato los pagos de las comisiones se realizarían de marzo a junio. Llegó ese período de 2017 y nadie de la editorial contactó conmigo. Llamé a lo largo de aquellos meses un par de veces al director comercial y en ambas ocasiones coincidió "que estaba en Barcelona” y que, por algún motivo que desconozco, “no podía devolver llamadas”. Tampoco respondió a los dos emails que le envié. Intenté autoconvencerme de que el problema era que: 1) o bien no habían transcurrido suficientes meses como para justificar el pago de las regalías asociadas, o 2) ni Internet ni el servicio telefónico habían llegado a Barcelona, opción que no terminaba de resultarme convincente No podía ser otra cosa. Sin embargo, al año siguiente, 2018, tampoco tuve ningún contacto de la editorial. A finales de esa primavera contacté con el que entonces era director ejecutivo de RA-MA y le expuse el problema. Y, tras innumerables idas y venidas, en febrero de 2019 quedó resuelto el misterio: se había producido un simple “problema de configuración en el sistema” (que parece ser que incluía la imposibilidad de devolver una llamada o un email desde Barcelona). Se habían vendido -en dos años- 341 libros lo que suponía unas regalías de 442€. No te voy a engañar: esperaba un mejor resultado. Sorprendentemente, en 2020 volvió a reproducirse el mismo error de configuración en el sistema (o alguno semejante) pues, una vez más, no contactaron conmigo. Ya no digo para pagarme las comisiones correspondientes, sino al menos para informarme de si se había vendido o no algún libro a lo largo del último año (escenario que hubiese encajado deportivamente). En 2021, más de cuatro años y medio después del comienzo de esta especie de pesadilla -y un año más sin información de la editorial-, he intentado contactar nuevamente por email -sin éxito- con el director comercial, Sr. Santoro, y con la propia editorial, también sin respuesta. Todo esto me hace reflexionar… Por un lado, en la falta de visión de ciertas empresas -o, mejor, de ciertos responsables de empresas-. Con independencia de que un libro tenga más o menos éxito, si se trata correctamente al autor y se crea una relación sana y transparente entre las dos partes, es posible que éste tenga interés en escribir nuevos libros. Como dije al principio, escribir un libro es -al menos según yo lo veo- una forma de comunicar al mundo el hecho de que tienes ciertos conocimientos sobre algo, y el objetivo no tiene por qué ser siempre obtener un rédito. Por el contrario, esta experiencia me hace pensar que el plan era llamar a, no sé, 1000 potenciales autores con la esperanza de convencer a 200 y hacer caja rápidamente. Por otro lado, me resulta curioso el trozo del pastel que va destinado al autor de la obra. El contrato contemplaba el pago del 10% del precio del libro en ventas en España y del 5% en ventas en el extranjero. La verdad es que no me sorprende mucho que el sector esté de capa caída. Por último, me parece bastante decepcionante el grado de “profesionalidad” que hay en ciertas empresas. Aun diría más: de no ser porque me está ocurriendo a mí, me parecería injustificable que esto fuese cierto ¿Cómo puede una editorial que ha firmado un contrato con un autor no informar a éste debidamente de las regalías que le corresponden? ¿Cómo es posible incumplir un contrato consciente y reiteradamente y poder dormir tranquilo? Yo no podría. Así que ¿qué beneficios tiene escribir un libro técnico? Evidentemente no el económico. 442€ por un mes de trabajo no me parece una remuneración suficientemente atractiva (vale, estoy siendo irónico) ¿Aumento de visibilidad? Por supuesto. Siempre supone un cierto orgullo poder decir que has publicado un libro ¿Satisfacción personal? Diría que sí salvo por el hecho de que, en pocas palabras, me siento engañado. Y la gran pregunta: ¿volvería a escribir otro libro? Sin duda alguna: no. Hasta ahora no me ha supuesto más que dolores de cabeza, y creo que no vale la pena volver a pasar por esto. Alguien podría pensar que he tenido mala suerte, que hay empresas mejor organizadas que RA-MA y mejores profesionales que aquellos con los que he tenido la mala suerte de topar. Puede ser. Pero mi consejo sigue siendo el mismo: si quieres ganar dinero, visibilidad u obtener satisfacción de tus creaciones, plantéate otras opciones. Hoy en día hay muchas formas de monetizar tus conocimientos y ganar esa visibilidad: formación presencial, publicación de cursos gratuitos o de pago en plataformas de eLearning, publicación en abierto del material en tu sitio web o blog, publicación de vídeos en plataformas como YouTube… Afortunadamente la tecnología nos ofrece un increíble abanico de posibilidades. Porque, con toda sinceridad, no vale la pena dormir mal por 400 euros… ', 'es') (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 934) Drupal\views\Plugin\views\field\EntityField->render_item(0, Array) (Line: 1171) Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238) template_preprocess_views_view_field(Array, 'views_view_field', Array) call_user_func_array('template_preprocess_views_view_field', Array) (Line: 287) Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 433) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 1748) Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 774) Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 713) Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 579) Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 467) Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2169) Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1538) Drupal\views\ViewExecutable->render() (Line: 199) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147) Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80) Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640) Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63) Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'insert-max_800_px-3d95e0ea-88c8-4722-b5fa-b126f2c647ae') (Line: 95) Drupal\editor\Plugin\Filter\EditorFileReference->process('Escribir un libro es un deseo que, consciente o inconscientemente, tenemos muchos de nosotros. Al fin y al cabo, es una prueba de que tenemos un cierto conocimiento sobre un tema que nos permite adoptar ese rol de “maestro”. Yo -que llevo unos 25 años dedicándome en mayor o menor medida a la enseñanza- siempre tuve en mente la idea de escribir uno, aunque nunca dejó de ser nada más que una idea, pues me venían a la cabeza demasiadas dudas: ¿habrá alguna editorial interesada? ¿Cuánto tiempo me llevaría? ¿Se cobra una comisión por libro vendido? Todas estas dudas quedaron zanjadas de golpe cuando en octubre de 2016 recibí la llamada del director comercial de la <a href="https://www.linkedin.com/company/grupo-editorial-ra-ma/">editorial RA-MA</a>, <a href="https://www.linkedin.com/in/julio-santoro-2392b766/">Julio Santoro</a>. Me explicó que había visto los cursos que yo tenía en cierta plataforma de eLearning y quería proponerme llevar uno de ellos a formato papel. Quedamos para vernos en las oficinas de la editorial, así lo hicimos, me comentó las condiciones y firmamos el contrato. RA-MA había sido una de las editoriales que había acompañado mis estudios universitarios (todavía tengo muchos de aquellos libros en mis estanterías), y mi imagen de esta editorial era la mejor que podía tener, así que, para mí, aquello era de las mejores cosas que podían ocurrirme: Iba a escribir un libro que iba a ser publicado por RA-MA. <a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2021-06/library.jpg"></a> Como la base del libro ya existía (pues la había escrito para crear el curso original en aquella plataforma de eLearning), esperaba que la tarea no fuese especialmente exigente. Sin embargo, entre completar el texto, corrección de errores, diseño de gráficos e infinidad de lecturas buscando dónde hacer retoques, estuve escribiendo el libro unas 4 semanas: prácticamente un mes a tiempo completo. El libro se publicó a finales de diciembre de aquel 2016. Reconozco que, a lo largo de los siguientes meses, siempre que podía me colaba en las librerías por las que pasaba para ver si tenían o no mi libro. Prurito profesional… Según el contrato los pagos de las comisiones se realizarían de marzo a junio. Llegó ese período de 2017 y nadie de la editorial contactó conmigo. Llamé a lo largo de aquellos meses un par de veces al director comercial y en ambas ocasiones coincidió "que estaba en Barcelona” y que, por algún motivo que desconozco, “no podía devolver llamadas”. Tampoco respondió a los dos emails que le envié. Intenté autoconvencerme de que el problema era que: 1) o bien no habían transcurrido suficientes meses como para justificar el pago de las regalías asociadas, o 2) ni Internet ni el servicio telefónico habían llegado a Barcelona, opción que no terminaba de resultarme convincente No podía ser otra cosa. Sin embargo, al año siguiente, 2018, tampoco tuve ningún contacto de la editorial. A finales de esa primavera contacté con el que entonces era director ejecutivo de RA-MA y le expuse el problema. Y, tras innumerables idas y venidas, en febrero de 2019 quedó resuelto el misterio: se había producido un simple “problema de configuración en el sistema” (que parece ser que incluía la imposibilidad de devolver una llamada o un email desde Barcelona). Se habían vendido -en dos años- 341 libros lo que suponía unas regalías de 442€. No te voy a engañar: esperaba un mejor resultado. Sorprendentemente, en 2020 volvió a reproducirse el mismo error de configuración en el sistema (o alguno semejante) pues, una vez más, no contactaron conmigo. Ya no digo para pagarme las comisiones correspondientes, sino al menos para informarme de si se había vendido o no algún libro a lo largo del último año (escenario que hubiese encajado deportivamente). En 2021, más de cuatro años y medio después del comienzo de esta especie de pesadilla -y un año más sin información de la editorial-, he intentado contactar nuevamente por email -sin éxito- con el director comercial, Sr. Santoro, y con la propia editorial, también sin respuesta. Todo esto me hace reflexionar… Por un lado, en la falta de visión de ciertas empresas -o, mejor, de ciertos responsables de empresas-. Con independencia de que un libro tenga más o menos éxito, si se trata correctamente al autor y se crea una relación sana y transparente entre las dos partes, es posible que éste tenga interés en escribir nuevos libros. Como dije al principio, escribir un libro es -al menos según yo lo veo- una forma de comunicar al mundo el hecho de que tienes ciertos conocimientos sobre algo, y el objetivo no tiene por qué ser siempre obtener un rédito. Por el contrario, esta experiencia me hace pensar que el plan era llamar a, no sé, 1000 potenciales autores con la esperanza de convencer a 200 y hacer caja rápidamente. Por otro lado, me resulta curioso el trozo del pastel que va destinado al autor de la obra. El contrato contemplaba el pago del 10% del precio del libro en ventas en España y del 5% en ventas en el extranjero. La verdad es que no me sorprende mucho que el sector esté de capa caída. Por último, me parece bastante decepcionante el grado de “profesionalidad” que hay en ciertas empresas. Aun diría más: de no ser porque me está ocurriendo a mí, me parecería injustificable que esto fuese cierto ¿Cómo puede una editorial que ha firmado un contrato con un autor no informar a éste debidamente de las regalías que le corresponden? ¿Cómo es posible incumplir un contrato consciente y reiteradamente y poder dormir tranquilo? Yo no podría. Así que ¿qué beneficios tiene escribir un libro técnico? Evidentemente no el económico. 442€ por un mes de trabajo no me parece una remuneración suficientemente atractiva (vale, estoy siendo irónico) ¿Aumento de visibilidad? Por supuesto. Siempre supone un cierto orgullo poder decir que has publicado un libro ¿Satisfacción personal? Diría que sí salvo por el hecho de que, en pocas palabras, me siento engañado. Y la gran pregunta: ¿volvería a escribir otro libro? Sin duda alguna: no. Hasta ahora no me ha supuesto más que dolores de cabeza, y creo que no vale la pena volver a pasar por esto. Alguien podría pensar que he tenido mala suerte, que hay empresas mejor organizadas que RA-MA y mejores profesionales que aquellos con los que he tenido la mala suerte de topar. Puede ser. Pero mi consejo sigue siendo el mismo: si quieres ganar dinero, visibilidad u obtener satisfacción de tus creaciones, plantéate otras opciones. Hoy en día hay muchas formas de monetizar tus conocimientos y ganar esa visibilidad: formación presencial, publicación de cursos gratuitos o de pago en plataformas de eLearning, publicación en abierto del material en tu sitio web o blog, publicación de vídeos en plataformas como YouTube… Afortunadamente la tecnología nos ofrece un increíble abanico de posibilidades. Porque, con toda sinceridad, no vale la pena dormir mal por 400 euros… ', 'es') (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 934) Drupal\views\Plugin\views\field\EntityField->render_item(0, Array) (Line: 1171) Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238) template_preprocess_views_view_field(Array, 'views_view_field', Array) call_user_func_array('template_preprocess_views_view_field', Array) (Line: 287) Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 433) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 1748) Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 774) Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 713) Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 579) Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 467) Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2169) Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1538) Drupal\views\ViewExecutable->render() (Line: 199) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115) Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80) Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640) Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63) Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'insert-max_800_px-3d95e0ea-88c8-4722-b5fa-b126f2c647ae') (Line: 124) Drupal\editor\Plugin\Filter\EditorFileReference->process('Escribir un libro es un deseo que, consciente o inconscientemente, tenemos muchos de nosotros. Al fin y al cabo, es una prueba de que tenemos un cierto conocimiento sobre un tema que nos permite adoptar ese rol de “maestro”. Yo -que llevo unos 25 años dedicándome en mayor o menor medida a la enseñanza- siempre tuve en mente la idea de escribir uno, aunque nunca dejó de ser nada más que una idea, pues me venían a la cabeza demasiadas dudas: ¿habrá alguna editorial interesada? ¿Cuánto tiempo me llevaría? ¿Se cobra una comisión por libro vendido? Todas estas dudas quedaron zanjadas de golpe cuando en octubre de 2016 recibí la llamada del director comercial de la <a href="https://www.linkedin.com/company/grupo-editorial-ra-ma/">editorial RA-MA</a>, <a href="https://www.linkedin.com/in/julio-santoro-2392b766/">Julio Santoro</a>. Me explicó que había visto los cursos que yo tenía en cierta plataforma de eLearning y quería proponerme llevar uno de ellos a formato papel. Quedamos para vernos en las oficinas de la editorial, así lo hicimos, me comentó las condiciones y firmamos el contrato. RA-MA había sido una de las editoriales que había acompañado mis estudios universitarios (todavía tengo muchos de aquellos libros en mis estanterías), y mi imagen de esta editorial era la mejor que podía tener, así que, para mí, aquello era de las mejores cosas que podían ocurrirme: Iba a escribir un libro que iba a ser publicado por RA-MA. <a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2021-06/library.jpg"></a> Como la base del libro ya existía (pues la había escrito para crear el curso original en aquella plataforma de eLearning), esperaba que la tarea no fuese especialmente exigente. Sin embargo, entre completar el texto, corrección de errores, diseño de gráficos e infinidad de lecturas buscando dónde hacer retoques, estuve escribiendo el libro unas 4 semanas: prácticamente un mes a tiempo completo. El libro se publicó a finales de diciembre de aquel 2016. Reconozco que, a lo largo de los siguientes meses, siempre que podía me colaba en las librerías por las que pasaba para ver si tenían o no mi libro. Prurito profesional… Según el contrato los pagos de las comisiones se realizarían de marzo a junio. Llegó ese período de 2017 y nadie de la editorial contactó conmigo. Llamé a lo largo de aquellos meses un par de veces al director comercial y en ambas ocasiones coincidió "que estaba en Barcelona” y que, por algún motivo que desconozco, “no podía devolver llamadas”. Tampoco respondió a los dos emails que le envié. Intenté autoconvencerme de que el problema era que: 1) o bien no habían transcurrido suficientes meses como para justificar el pago de las regalías asociadas, o 2) ni Internet ni el servicio telefónico habían llegado a Barcelona, opción que no terminaba de resultarme convincente No podía ser otra cosa. Sin embargo, al año siguiente, 2018, tampoco tuve ningún contacto de la editorial. A finales de esa primavera contacté con el que entonces era director ejecutivo de RA-MA y le expuse el problema. Y, tras innumerables idas y venidas, en febrero de 2019 quedó resuelto el misterio: se había producido un simple “problema de configuración en el sistema” (que parece ser que incluía la imposibilidad de devolver una llamada o un email desde Barcelona). Se habían vendido -en dos años- 341 libros lo que suponía unas regalías de 442€. No te voy a engañar: esperaba un mejor resultado. Sorprendentemente, en 2020 volvió a reproducirse el mismo error de configuración en el sistema (o alguno semejante) pues, una vez más, no contactaron conmigo. Ya no digo para pagarme las comisiones correspondientes, sino al menos para informarme de si se había vendido o no algún libro a lo largo del último año (escenario que hubiese encajado deportivamente). En 2021, más de cuatro años y medio después del comienzo de esta especie de pesadilla -y un año más sin información de la editorial-, he intentado contactar nuevamente por email -sin éxito- con el director comercial, Sr. Santoro, y con la propia editorial, también sin respuesta. Todo esto me hace reflexionar… Por un lado, en la falta de visión de ciertas empresas -o, mejor, de ciertos responsables de empresas-. Con independencia de que un libro tenga más o menos éxito, si se trata correctamente al autor y se crea una relación sana y transparente entre las dos partes, es posible que éste tenga interés en escribir nuevos libros. Como dije al principio, escribir un libro es -al menos según yo lo veo- una forma de comunicar al mundo el hecho de que tienes ciertos conocimientos sobre algo, y el objetivo no tiene por qué ser siempre obtener un rédito. Por el contrario, esta experiencia me hace pensar que el plan era llamar a, no sé, 1000 potenciales autores con la esperanza de convencer a 200 y hacer caja rápidamente. Por otro lado, me resulta curioso el trozo del pastel que va destinado al autor de la obra. El contrato contemplaba el pago del 10% del precio del libro en ventas en España y del 5% en ventas en el extranjero. La verdad es que no me sorprende mucho que el sector esté de capa caída. Por último, me parece bastante decepcionante el grado de “profesionalidad” que hay en ciertas empresas. Aun diría más: de no ser porque me está ocurriendo a mí, me parecería injustificable que esto fuese cierto ¿Cómo puede una editorial que ha firmado un contrato con un autor no informar a éste debidamente de las regalías que le corresponden? ¿Cómo es posible incumplir un contrato consciente y reiteradamente y poder dormir tranquilo? Yo no podría. Así que ¿qué beneficios tiene escribir un libro técnico? Evidentemente no el económico. 442€ por un mes de trabajo no me parece una remuneración suficientemente atractiva (vale, estoy siendo irónico) ¿Aumento de visibilidad? Por supuesto. Siempre supone un cierto orgullo poder decir que has publicado un libro ¿Satisfacción personal? Diría que sí salvo por el hecho de que, en pocas palabras, me siento engañado. Y la gran pregunta: ¿volvería a escribir otro libro? Sin duda alguna: no. Hasta ahora no me ha supuesto más que dolores de cabeza, y creo que no vale la pena volver a pasar por esto. Alguien podría pensar que he tenido mala suerte, que hay empresas mejor organizadas que RA-MA y mejores profesionales que aquellos con los que he tenido la mala suerte de topar. Puede ser. Pero mi consejo sigue siendo el mismo: si quieres ganar dinero, visibilidad u obtener satisfacción de tus creaciones, plantéate otras opciones. Hoy en día hay muchas formas de monetizar tus conocimientos y ganar esa visibilidad: formación presencial, publicación de cursos gratuitos o de pago en plataformas de eLearning, publicación en abierto del material en tu sitio web o blog, publicación de vídeos en plataformas como YouTube… Afortunadamente la tecnología nos ofrece un increíble abanico de posibilidades. Porque, con toda sinceridad, no vale la pena dormir mal por 400 euros… ', 'es') (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 934) Drupal\views\Plugin\views\field\EntityField->render_item(0, Array) (Line: 1171) Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238) template_preprocess_views_view_field(Array, 'views_view_field', Array) call_user_func_array('template_preprocess_views_view_field', Array) (Line: 287) Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 433) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 1748) Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 774) Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 713) Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 579) Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 467) Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2169) Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1538) Drupal\views\ViewExecutable->render() (Line: 199) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147) Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80) Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640) Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63) Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'insert-max_800_px-3d95e0ea-88c8-4722-b5fa-b126f2c647ae') (Line: 124) Drupal\editor\Plugin\Filter\EditorFileReference->process('Escribir un libro es un deseo que, consciente o inconscientemente, tenemos muchos de nosotros. Al fin y al cabo, es una prueba de que tenemos un cierto conocimiento sobre un tema que nos permite adoptar ese rol de “maestro”. Yo -que llevo unos 25 años dedicándome en mayor o menor medida a la enseñanza- siempre tuve en mente la idea de escribir uno, aunque nunca dejó de ser nada más que una idea, pues me venían a la cabeza demasiadas dudas: ¿habrá alguna editorial interesada? ¿Cuánto tiempo me llevaría? ¿Se cobra una comisión por libro vendido? Todas estas dudas quedaron zanjadas de golpe cuando en octubre de 2016 recibí la llamada del director comercial de la <a href="https://www.linkedin.com/company/grupo-editorial-ra-ma/">editorial RA-MA</a>, <a href="https://www.linkedin.com/in/julio-santoro-2392b766/">Julio Santoro</a>. Me explicó que había visto los cursos que yo tenía en cierta plataforma de eLearning y quería proponerme llevar uno de ellos a formato papel. Quedamos para vernos en las oficinas de la editorial, así lo hicimos, me comentó las condiciones y firmamos el contrato. RA-MA había sido una de las editoriales que había acompañado mis estudios universitarios (todavía tengo muchos de aquellos libros en mis estanterías), y mi imagen de esta editorial era la mejor que podía tener, así que, para mí, aquello era de las mejores cosas que podían ocurrirme: Iba a escribir un libro que iba a ser publicado por RA-MA. <a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2021-06/library.jpg"></a> Como la base del libro ya existía (pues la había escrito para crear el curso original en aquella plataforma de eLearning), esperaba que la tarea no fuese especialmente exigente. Sin embargo, entre completar el texto, corrección de errores, diseño de gráficos e infinidad de lecturas buscando dónde hacer retoques, estuve escribiendo el libro unas 4 semanas: prácticamente un mes a tiempo completo. El libro se publicó a finales de diciembre de aquel 2016. Reconozco que, a lo largo de los siguientes meses, siempre que podía me colaba en las librerías por las que pasaba para ver si tenían o no mi libro. Prurito profesional… Según el contrato los pagos de las comisiones se realizarían de marzo a junio. Llegó ese período de 2017 y nadie de la editorial contactó conmigo. Llamé a lo largo de aquellos meses un par de veces al director comercial y en ambas ocasiones coincidió "que estaba en Barcelona” y que, por algún motivo que desconozco, “no podía devolver llamadas”. Tampoco respondió a los dos emails que le envié. Intenté autoconvencerme de que el problema era que: 1) o bien no habían transcurrido suficientes meses como para justificar el pago de las regalías asociadas, o 2) ni Internet ni el servicio telefónico habían llegado a Barcelona, opción que no terminaba de resultarme convincente No podía ser otra cosa. Sin embargo, al año siguiente, 2018, tampoco tuve ningún contacto de la editorial. A finales de esa primavera contacté con el que entonces era director ejecutivo de RA-MA y le expuse el problema. Y, tras innumerables idas y venidas, en febrero de 2019 quedó resuelto el misterio: se había producido un simple “problema de configuración en el sistema” (que parece ser que incluía la imposibilidad de devolver una llamada o un email desde Barcelona). Se habían vendido -en dos años- 341 libros lo que suponía unas regalías de 442€. No te voy a engañar: esperaba un mejor resultado. Sorprendentemente, en 2020 volvió a reproducirse el mismo error de configuración en el sistema (o alguno semejante) pues, una vez más, no contactaron conmigo. Ya no digo para pagarme las comisiones correspondientes, sino al menos para informarme de si se había vendido o no algún libro a lo largo del último año (escenario que hubiese encajado deportivamente). En 2021, más de cuatro años y medio después del comienzo de esta especie de pesadilla -y un año más sin información de la editorial-, he intentado contactar nuevamente por email -sin éxito- con el director comercial, Sr. Santoro, y con la propia editorial, también sin respuesta. Todo esto me hace reflexionar… Por un lado, en la falta de visión de ciertas empresas -o, mejor, de ciertos responsables de empresas-. Con independencia de que un libro tenga más o menos éxito, si se trata correctamente al autor y se crea una relación sana y transparente entre las dos partes, es posible que éste tenga interés en escribir nuevos libros. Como dije al principio, escribir un libro es -al menos según yo lo veo- una forma de comunicar al mundo el hecho de que tienes ciertos conocimientos sobre algo, y el objetivo no tiene por qué ser siempre obtener un rédito. Por el contrario, esta experiencia me hace pensar que el plan era llamar a, no sé, 1000 potenciales autores con la esperanza de convencer a 200 y hacer caja rápidamente. Por otro lado, me resulta curioso el trozo del pastel que va destinado al autor de la obra. El contrato contemplaba el pago del 10% del precio del libro en ventas en España y del 5% en ventas en el extranjero. La verdad es que no me sorprende mucho que el sector esté de capa caída. Por último, me parece bastante decepcionante el grado de “profesionalidad” que hay en ciertas empresas. Aun diría más: de no ser porque me está ocurriendo a mí, me parecería injustificable que esto fuese cierto ¿Cómo puede una editorial que ha firmado un contrato con un autor no informar a éste debidamente de las regalías que le corresponden? ¿Cómo es posible incumplir un contrato consciente y reiteradamente y poder dormir tranquilo? Yo no podría. Así que ¿qué beneficios tiene escribir un libro técnico? Evidentemente no el económico. 442€ por un mes de trabajo no me parece una remuneración suficientemente atractiva (vale, estoy siendo irónico) ¿Aumento de visibilidad? Por supuesto. Siempre supone un cierto orgullo poder decir que has publicado un libro ¿Satisfacción personal? Diría que sí salvo por el hecho de que, en pocas palabras, me siento engañado. Y la gran pregunta: ¿volvería a escribir otro libro? Sin duda alguna: no. Hasta ahora no me ha supuesto más que dolores de cabeza, y creo que no vale la pena volver a pasar por esto. Alguien podría pensar que he tenido mala suerte, que hay empresas mejor organizadas que RA-MA y mejores profesionales que aquellos con los que he tenido la mala suerte de topar. Puede ser. Pero mi consejo sigue siendo el mismo: si quieres ganar dinero, visibilidad u obtener satisfacción de tus creaciones, plantéate otras opciones. Hoy en día hay muchas formas de monetizar tus conocimientos y ganar esa visibilidad: formación presencial, publicación de cursos gratuitos o de pago en plataformas de eLearning, publicación en abierto del material en tu sitio web o blog, publicación de vídeos en plataformas como YouTube… Afortunadamente la tecnología nos ofrece un increíble abanico de posibilidades. Porque, con toda sinceridad, no vale la pena dormir mal por 400 euros… ', 'es') (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 934) Drupal\views\Plugin\views\field\EntityField->render_item(0, Array) (Line: 1171) Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238) template_preprocess_views_view_field(Array, 'views_view_field', Array) call_user_func_array('template_preprocess_views_view_field', Array) (Line: 287) Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 433) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 1748) Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 774) Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 713) Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 579) Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 467) Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2169) Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1538) Drupal\views\ViewExecutable->render() (Line: 199) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115) Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80) Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640) Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63) Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'insert-max_800_px-d24c8460-9e73-43a5-b339-d35bd20d6891') (Line: 95) Drupal\editor\Plugin\Filter\EditorFileReference->process('Aun cuando mi actividad como formador comenzó a principios de los años 90, cuando nos referimos al mundo de la Ciencia de los Datos (algoritmos de Inteligencia Artificial, Business Intelligence...) esta experiencia queda reducida a 4 o 5 años -en algunas áreas concretas es menor-, siendo ésta más intensa desde finales de 2018. En este período he tenido ocasión de conocer a muchas decenas -centenas, probablemente- de profesionales y estudiantes de máster y, en ocasiones, me han preguntado mi opinión al respecto de cómo obtener el máximo provecho profesional de sus estudios. <a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2020-11/art%20gallery.jpg"></a> En mi opinión hay tres factores que condicionan este aprovechamiento: el <strong>conocimiento</strong>, la <strong>actividad</strong> y la <strong>visibilidad</strong>. <ul><li>El <strong>conocimiento</strong> es sencillo de explicar: cuando uno comienza unos estudios -del tipo que sean- resulta crítico obtener el correspondiente conocimiento del tema en cuestión. Si no obtienes dicho conocimiento, podrás engañar a tu empleador o colegas uno o dos días, pero antes o después quedará claro que la tarea que se te ha encomendado te viene grande.</li> <li>La <strong>actividad</strong> es lo que hacemos con el conocimiento adquirido. Y aquí tenemos dos opciones: sentarnos a enviar nuestro CV hasta convencer a alguien de lo buenos que somos, o adoptar un enfoque más proactivo y poner en práctica nuestros recién adquiridos conocimientos en diferentes proyectos aun cuando no sea más que para ganar experiencia y no sea una actividad remunerada. Dentro del campo de la Ciencia de los Datos algunas ideas en este sentido pueden ser competir en Kaggle, desarrollar informes con las herramientas de BI más populares, aplicar algoritmos de Machine Learning a datasets públicos sobre temas de actualidad, desarrollar proyectos de Internet de las Cosas con una placa Arduino o semejante...</li> <li>Por último, la <strong>visibilidad</strong> es la capacidad de hacer llegar a terceros información sobre nuestros conocimientos y nuestra actividad: abrir un canal en YouTube en el que explicar cómo hemos desarrollado diferentes proyectos, crear una página web con el mismo objetivo, ofrecernos para dar conferencias, compartir nuestras opiniones y proyectos en LinkedIn, escribir un libro o artículos en sitios web especializados... son todas ideas que nos ayudan a ganar visibilidad. Pero entendamos que -desde mi punto de vista- debemos ganar esa visibilidad con mensajes de calidad. Reenviar compulsivamente todo lo que nos llega por LinkedIn al respecto de un tema a todos nuestros contactos solo demuestra que sabemos hacer clic con el ratón, no que seamos expertos en ese tema. Y crear periódicamente mensajes en los que mencionemos, por ejemplo, las características que debe tener un líder no nos va a convertir en uno de ellos. Nuestros mensajes -sea cual sea la interfaz que utilicemos para hacerlos llegar a nuestros destinatarios- deben ser propios, creativos, informativos y útiles.</li> </ul>En ocasiones se habla de la necesidad de tener <em>contactos</em> a la hora de explotar adecuadamente nuestra carrera profesional. Si bien es cierto que los contactos resultan sumamente útiles, para mí no son más que una pequeña parte de esa "visibilidad" que he comentado. Un ejemplo: supongamos que soy una persona con dotes artísticas pero no he conseguido conocimientos suficientes en dicha área, no las pongo en práctica y mi única visibilidad se reduce a un buen número de contactos. Probablemente no consiga convencer a ninguno de ellos de la utilidad de mi contratación. Por el contrario, supongamos que realizo cursos de pintura, los aprovecho, adquiero conocimientos, los pongo en práctica pintando cuadros y abro una galería de arte que, gracias a la calidad de mi trabajo, atrae a decenas de personas todos los días. Con contactos previos o sin ellos, estoy exponiendo mi trabajo a gran número de personas a través de las cuales pueden surgir oportunidades profesionales. Si, en este escenario, tengo contactos ya establecidos, mejor que mejor, sin duda. También podríamos argumentar que un contacto puede facilitar un "enchufe" que se plasme en un puesto profesional aun sin que lo merezcamos. Es cierto, estas cosas ocurren a todos los niveles. Otro factor es la existencia o no de esas <em>dotes artísticas</em> que he mencionado: si quiero dedicarme al mundo de la Ciencia de los Datos y tengo una innata mentalidad analítica, esto sin duda irá a facilitar mi carrera en esta área. Si no, me resultará un poco más difícil. Y, por supuesto, hay otras muchas habilidades que pueden influir en mayor o menor medida (las llamadas <em>habilidades blandas</em>): la capacidad de trabajo en equipo, la flexibilidad, la capacidad de comunicación, etc. El hecho es que frecuentemente me encuentro con estudiantes que delegan toda su suerte profesional en ese papel (digital a día de hoy) al que llamamos <em>curriculum vitae</em>. Recuerdo una conversación con un estudiante de máster tras más de un mes asistiendo a mis clases. La conversación fue más o menos la siguiente: <em>- [yo] ¿Y qué tal llevas mi materia, ahora que estamos a punto de terminar el módulo?</em> <em>- Bueno, todavía no me he puesto con ella. Pero me pondré este fin de semana y haré la prueba de evaluación el domingo.</em> <em>- Vaya, pensaba que me habías dicho un mes atrás -cuando comenzamos el módulo- que estabas en el paro y te estabas dedicando a tiempo completo a los estudios</em> <em>- Sí, bueno, pero lo que realmente me importa es obtener el título para poder añadirlo a mi CV</em> Desafortunadamente este enfoque es más frecuente de lo que podríamos esperar. Y creo que es un gran error: estamos desperdiciando la posibilidad de convencer a profesores, al equipo de la escuela de negocios o universidad de que se trate, y a otros estudiantes de lo buenos que somos en esta área, y tal vez alguno de ellos sea -o vaya a ser en el futuro- responsable de contratación, o tal vez les pidan referencias antes o después. Por el contrario, estamos confiando nuestra suerte profesional a un papel en el que hemos añadido una línea que dice algo como "<em>Máster en blablabla</em>", papel que no difiere en exceso del que tienen otros miles o decenas de miles de profesionales como nosotros. Otra versión de este problema de enfoque se da cuando iniciamos un programa de estudios sabiendo que no vamos a disponer de los recursos necesarios (tiempo o ganas), y aspiramos apenas a ese título que llevar al CV con independencia del aprovechamiento real que obtengamos. En definitiva, en cualquiera de estos casos estamos reduciendo nuestra capacidad, conocimientos y actitud a un puñado de palabras escritas en un papel. Cuando me gradué en la EOI tras realizar el <em>Máster en Business Intelligence y Big Data</em>, en la sesión de cierre del programa escuché a uno de los responsables de la escuela comentar en su intervención que, en realidad, todo aquello que habíamos aprendido se podía encontrar en Internet (en YouTube, en la documentación de los desarrolladores de software, en páginas web especializadas...), y que lo único que diferenciaba la formación que habíamos recibido en la EOI de la que podríamos haber obtenido aprendiendo directamente de fuentes abiertas en Internet era que nuestros instructores eran todos profesionales en activo, con gran experiencia y capacidad pedagógica, y que esto les permitía orientar nuestro estudio haciéndolo mucho más eficiente. Y es cierto. No sé en otras áreas, pero en la Ciencia de los Datos uno puede formarse sin necesidad de asistir a una institución educativa. Mucho mejor si lo haces, sin duda alguna, pero deberíamos tener claro que -en mi opinión- sean cuales sean las fuentes de las que nos nutramos, la primera prioridad debe ser -siempre- formarnos. Y que eso normalmente depende de nosotros. Y que una vez formados, también depende normalmente de nosotros el crear o no oportunidades profesionales. Y que, en todo esto, el título que hemos llevado a nuestro CV solo indica que nos hemos dado la oportunidad de aprender, no si la hemos aprovechado o no. ', 'es') (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 934) Drupal\views\Plugin\views\field\EntityField->render_item(0, Array) (Line: 1171) Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238) template_preprocess_views_view_field(Array, 'views_view_field', Array) call_user_func_array('template_preprocess_views_view_field', Array) (Line: 287) Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 433) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 1748) Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 774) Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 713) Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 579) Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 467) Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2169) Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1538) Drupal\views\ViewExecutable->render() (Line: 199) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147) Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80) Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640) Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63) Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'insert-max_800_px-d24c8460-9e73-43a5-b339-d35bd20d6891') (Line: 95) Drupal\editor\Plugin\Filter\EditorFileReference->process('Aun cuando mi actividad como formador comenzó a principios de los años 90, cuando nos referimos al mundo de la Ciencia de los Datos (algoritmos de Inteligencia Artificial, Business Intelligence...) esta experiencia queda reducida a 4 o 5 años -en algunas áreas concretas es menor-, siendo ésta más intensa desde finales de 2018. En este período he tenido ocasión de conocer a muchas decenas -centenas, probablemente- de profesionales y estudiantes de máster y, en ocasiones, me han preguntado mi opinión al respecto de cómo obtener el máximo provecho profesional de sus estudios. <a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2020-11/art%20gallery.jpg"></a> En mi opinión hay tres factores que condicionan este aprovechamiento: el <strong>conocimiento</strong>, la <strong>actividad</strong> y la <strong>visibilidad</strong>. <ul><li>El <strong>conocimiento</strong> es sencillo de explicar: cuando uno comienza unos estudios -del tipo que sean- resulta crítico obtener el correspondiente conocimiento del tema en cuestión. Si no obtienes dicho conocimiento, podrás engañar a tu empleador o colegas uno o dos días, pero antes o después quedará claro que la tarea que se te ha encomendado te viene grande.</li> <li>La <strong>actividad</strong> es lo que hacemos con el conocimiento adquirido. Y aquí tenemos dos opciones: sentarnos a enviar nuestro CV hasta convencer a alguien de lo buenos que somos, o adoptar un enfoque más proactivo y poner en práctica nuestros recién adquiridos conocimientos en diferentes proyectos aun cuando no sea más que para ganar experiencia y no sea una actividad remunerada. Dentro del campo de la Ciencia de los Datos algunas ideas en este sentido pueden ser competir en Kaggle, desarrollar informes con las herramientas de BI más populares, aplicar algoritmos de Machine Learning a datasets públicos sobre temas de actualidad, desarrollar proyectos de Internet de las Cosas con una placa Arduino o semejante...</li> <li>Por último, la <strong>visibilidad</strong> es la capacidad de hacer llegar a terceros información sobre nuestros conocimientos y nuestra actividad: abrir un canal en YouTube en el que explicar cómo hemos desarrollado diferentes proyectos, crear una página web con el mismo objetivo, ofrecernos para dar conferencias, compartir nuestras opiniones y proyectos en LinkedIn, escribir un libro o artículos en sitios web especializados... son todas ideas que nos ayudan a ganar visibilidad. Pero entendamos que -desde mi punto de vista- debemos ganar esa visibilidad con mensajes de calidad. Reenviar compulsivamente todo lo que nos llega por LinkedIn al respecto de un tema a todos nuestros contactos solo demuestra que sabemos hacer clic con el ratón, no que seamos expertos en ese tema. Y crear periódicamente mensajes en los que mencionemos, por ejemplo, las características que debe tener un líder no nos va a convertir en uno de ellos. Nuestros mensajes -sea cual sea la interfaz que utilicemos para hacerlos llegar a nuestros destinatarios- deben ser propios, creativos, informativos y útiles.</li> </ul>En ocasiones se habla de la necesidad de tener <em>contactos</em> a la hora de explotar adecuadamente nuestra carrera profesional. Si bien es cierto que los contactos resultan sumamente útiles, para mí no son más que una pequeña parte de esa "visibilidad" que he comentado. Un ejemplo: supongamos que soy una persona con dotes artísticas pero no he conseguido conocimientos suficientes en dicha área, no las pongo en práctica y mi única visibilidad se reduce a un buen número de contactos. Probablemente no consiga convencer a ninguno de ellos de la utilidad de mi contratación. Por el contrario, supongamos que realizo cursos de pintura, los aprovecho, adquiero conocimientos, los pongo en práctica pintando cuadros y abro una galería de arte que, gracias a la calidad de mi trabajo, atrae a decenas de personas todos los días. Con contactos previos o sin ellos, estoy exponiendo mi trabajo a gran número de personas a través de las cuales pueden surgir oportunidades profesionales. Si, en este escenario, tengo contactos ya establecidos, mejor que mejor, sin duda. También podríamos argumentar que un contacto puede facilitar un "enchufe" que se plasme en un puesto profesional aun sin que lo merezcamos. Es cierto, estas cosas ocurren a todos los niveles. Otro factor es la existencia o no de esas <em>dotes artísticas</em> que he mencionado: si quiero dedicarme al mundo de la Ciencia de los Datos y tengo una innata mentalidad analítica, esto sin duda irá a facilitar mi carrera en esta área. Si no, me resultará un poco más difícil. Y, por supuesto, hay otras muchas habilidades que pueden influir en mayor o menor medida (las llamadas <em>habilidades blandas</em>): la capacidad de trabajo en equipo, la flexibilidad, la capacidad de comunicación, etc. El hecho es que frecuentemente me encuentro con estudiantes que delegan toda su suerte profesional en ese papel (digital a día de hoy) al que llamamos <em>curriculum vitae</em>. Recuerdo una conversación con un estudiante de máster tras más de un mes asistiendo a mis clases. La conversación fue más o menos la siguiente: <em>- [yo] ¿Y qué tal llevas mi materia, ahora que estamos a punto de terminar el módulo?</em> <em>- Bueno, todavía no me he puesto con ella. Pero me pondré este fin de semana y haré la prueba de evaluación el domingo.</em> <em>- Vaya, pensaba que me habías dicho un mes atrás -cuando comenzamos el módulo- que estabas en el paro y te estabas dedicando a tiempo completo a los estudios</em> <em>- Sí, bueno, pero lo que realmente me importa es obtener el título para poder añadirlo a mi CV</em> Desafortunadamente este enfoque es más frecuente de lo que podríamos esperar. Y creo que es un gran error: estamos desperdiciando la posibilidad de convencer a profesores, al equipo de la escuela de negocios o universidad de que se trate, y a otros estudiantes de lo buenos que somos en esta área, y tal vez alguno de ellos sea -o vaya a ser en el futuro- responsable de contratación, o tal vez les pidan referencias antes o después. Por el contrario, estamos confiando nuestra suerte profesional a un papel en el que hemos añadido una línea que dice algo como "<em>Máster en blablabla</em>", papel que no difiere en exceso del que tienen otros miles o decenas de miles de profesionales como nosotros. Otra versión de este problema de enfoque se da cuando iniciamos un programa de estudios sabiendo que no vamos a disponer de los recursos necesarios (tiempo o ganas), y aspiramos apenas a ese título que llevar al CV con independencia del aprovechamiento real que obtengamos. En definitiva, en cualquiera de estos casos estamos reduciendo nuestra capacidad, conocimientos y actitud a un puñado de palabras escritas en un papel. Cuando me gradué en la EOI tras realizar el <em>Máster en Business Intelligence y Big Data</em>, en la sesión de cierre del programa escuché a uno de los responsables de la escuela comentar en su intervención que, en realidad, todo aquello que habíamos aprendido se podía encontrar en Internet (en YouTube, en la documentación de los desarrolladores de software, en páginas web especializadas...), y que lo único que diferenciaba la formación que habíamos recibido en la EOI de la que podríamos haber obtenido aprendiendo directamente de fuentes abiertas en Internet era que nuestros instructores eran todos profesionales en activo, con gran experiencia y capacidad pedagógica, y que esto les permitía orientar nuestro estudio haciéndolo mucho más eficiente. Y es cierto. No sé en otras áreas, pero en la Ciencia de los Datos uno puede formarse sin necesidad de asistir a una institución educativa. Mucho mejor si lo haces, sin duda alguna, pero deberíamos tener claro que -en mi opinión- sean cuales sean las fuentes de las que nos nutramos, la primera prioridad debe ser -siempre- formarnos. Y que eso normalmente depende de nosotros. Y que una vez formados, también depende normalmente de nosotros el crear o no oportunidades profesionales. Y que, en todo esto, el título que hemos llevado a nuestro CV solo indica que nos hemos dado la oportunidad de aprender, no si la hemos aprovechado o no. ', 'es') (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 934) Drupal\views\Plugin\views\field\EntityField->render_item(0, Array) (Line: 1171) Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238) template_preprocess_views_view_field(Array, 'views_view_field', Array) call_user_func_array('template_preprocess_views_view_field', Array) (Line: 287) Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 433) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 1748) Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 774) Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 713) Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 579) Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 467) Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2169) Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1538) Drupal\views\ViewExecutable->render() (Line: 199) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115) Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80) Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640) Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63) Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'insert-max_800_px-d24c8460-9e73-43a5-b339-d35bd20d6891') (Line: 124) Drupal\editor\Plugin\Filter\EditorFileReference->process('Aun cuando mi actividad como formador comenzó a principios de los años 90, cuando nos referimos al mundo de la Ciencia de los Datos (algoritmos de Inteligencia Artificial, Business Intelligence...) esta experiencia queda reducida a 4 o 5 años -en algunas áreas concretas es menor-, siendo ésta más intensa desde finales de 2018. En este período he tenido ocasión de conocer a muchas decenas -centenas, probablemente- de profesionales y estudiantes de máster y, en ocasiones, me han preguntado mi opinión al respecto de cómo obtener el máximo provecho profesional de sus estudios. <a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2020-11/art%20gallery.jpg"></a> En mi opinión hay tres factores que condicionan este aprovechamiento: el <strong>conocimiento</strong>, la <strong>actividad</strong> y la <strong>visibilidad</strong>. <ul><li>El <strong>conocimiento</strong> es sencillo de explicar: cuando uno comienza unos estudios -del tipo que sean- resulta crítico obtener el correspondiente conocimiento del tema en cuestión. Si no obtienes dicho conocimiento, podrás engañar a tu empleador o colegas uno o dos días, pero antes o después quedará claro que la tarea que se te ha encomendado te viene grande.</li> <li>La <strong>actividad</strong> es lo que hacemos con el conocimiento adquirido. Y aquí tenemos dos opciones: sentarnos a enviar nuestro CV hasta convencer a alguien de lo buenos que somos, o adoptar un enfoque más proactivo y poner en práctica nuestros recién adquiridos conocimientos en diferentes proyectos aun cuando no sea más que para ganar experiencia y no sea una actividad remunerada. Dentro del campo de la Ciencia de los Datos algunas ideas en este sentido pueden ser competir en Kaggle, desarrollar informes con las herramientas de BI más populares, aplicar algoritmos de Machine Learning a datasets públicos sobre temas de actualidad, desarrollar proyectos de Internet de las Cosas con una placa Arduino o semejante...</li> <li>Por último, la <strong>visibilidad</strong> es la capacidad de hacer llegar a terceros información sobre nuestros conocimientos y nuestra actividad: abrir un canal en YouTube en el que explicar cómo hemos desarrollado diferentes proyectos, crear una página web con el mismo objetivo, ofrecernos para dar conferencias, compartir nuestras opiniones y proyectos en LinkedIn, escribir un libro o artículos en sitios web especializados... son todas ideas que nos ayudan a ganar visibilidad. Pero entendamos que -desde mi punto de vista- debemos ganar esa visibilidad con mensajes de calidad. Reenviar compulsivamente todo lo que nos llega por LinkedIn al respecto de un tema a todos nuestros contactos solo demuestra que sabemos hacer clic con el ratón, no que seamos expertos en ese tema. Y crear periódicamente mensajes en los que mencionemos, por ejemplo, las características que debe tener un líder no nos va a convertir en uno de ellos. Nuestros mensajes -sea cual sea la interfaz que utilicemos para hacerlos llegar a nuestros destinatarios- deben ser propios, creativos, informativos y útiles.</li> </ul>En ocasiones se habla de la necesidad de tener <em>contactos</em> a la hora de explotar adecuadamente nuestra carrera profesional. Si bien es cierto que los contactos resultan sumamente útiles, para mí no son más que una pequeña parte de esa "visibilidad" que he comentado. Un ejemplo: supongamos que soy una persona con dotes artísticas pero no he conseguido conocimientos suficientes en dicha área, no las pongo en práctica y mi única visibilidad se reduce a un buen número de contactos. Probablemente no consiga convencer a ninguno de ellos de la utilidad de mi contratación. Por el contrario, supongamos que realizo cursos de pintura, los aprovecho, adquiero conocimientos, los pongo en práctica pintando cuadros y abro una galería de arte que, gracias a la calidad de mi trabajo, atrae a decenas de personas todos los días. Con contactos previos o sin ellos, estoy exponiendo mi trabajo a gran número de personas a través de las cuales pueden surgir oportunidades profesionales. Si, en este escenario, tengo contactos ya establecidos, mejor que mejor, sin duda. También podríamos argumentar que un contacto puede facilitar un "enchufe" que se plasme en un puesto profesional aun sin que lo merezcamos. Es cierto, estas cosas ocurren a todos los niveles. Otro factor es la existencia o no de esas <em>dotes artísticas</em> que he mencionado: si quiero dedicarme al mundo de la Ciencia de los Datos y tengo una innata mentalidad analítica, esto sin duda irá a facilitar mi carrera en esta área. Si no, me resultará un poco más difícil. Y, por supuesto, hay otras muchas habilidades que pueden influir en mayor o menor medida (las llamadas <em>habilidades blandas</em>): la capacidad de trabajo en equipo, la flexibilidad, la capacidad de comunicación, etc. El hecho es que frecuentemente me encuentro con estudiantes que delegan toda su suerte profesional en ese papel (digital a día de hoy) al que llamamos <em>curriculum vitae</em>. Recuerdo una conversación con un estudiante de máster tras más de un mes asistiendo a mis clases. La conversación fue más o menos la siguiente: <em>- [yo] ¿Y qué tal llevas mi materia, ahora que estamos a punto de terminar el módulo?</em> <em>- Bueno, todavía no me he puesto con ella. Pero me pondré este fin de semana y haré la prueba de evaluación el domingo.</em> <em>- Vaya, pensaba que me habías dicho un mes atrás -cuando comenzamos el módulo- que estabas en el paro y te estabas dedicando a tiempo completo a los estudios</em> <em>- Sí, bueno, pero lo que realmente me importa es obtener el título para poder añadirlo a mi CV</em> Desafortunadamente este enfoque es más frecuente de lo que podríamos esperar. Y creo que es un gran error: estamos desperdiciando la posibilidad de convencer a profesores, al equipo de la escuela de negocios o universidad de que se trate, y a otros estudiantes de lo buenos que somos en esta área, y tal vez alguno de ellos sea -o vaya a ser en el futuro- responsable de contratación, o tal vez les pidan referencias antes o después. Por el contrario, estamos confiando nuestra suerte profesional a un papel en el que hemos añadido una línea que dice algo como "<em>Máster en blablabla</em>", papel que no difiere en exceso del que tienen otros miles o decenas de miles de profesionales como nosotros. Otra versión de este problema de enfoque se da cuando iniciamos un programa de estudios sabiendo que no vamos a disponer de los recursos necesarios (tiempo o ganas), y aspiramos apenas a ese título que llevar al CV con independencia del aprovechamiento real que obtengamos. En definitiva, en cualquiera de estos casos estamos reduciendo nuestra capacidad, conocimientos y actitud a un puñado de palabras escritas en un papel. Cuando me gradué en la EOI tras realizar el <em>Máster en Business Intelligence y Big Data</em>, en la sesión de cierre del programa escuché a uno de los responsables de la escuela comentar en su intervención que, en realidad, todo aquello que habíamos aprendido se podía encontrar en Internet (en YouTube, en la documentación de los desarrolladores de software, en páginas web especializadas...), y que lo único que diferenciaba la formación que habíamos recibido en la EOI de la que podríamos haber obtenido aprendiendo directamente de fuentes abiertas en Internet era que nuestros instructores eran todos profesionales en activo, con gran experiencia y capacidad pedagógica, y que esto les permitía orientar nuestro estudio haciéndolo mucho más eficiente. Y es cierto. No sé en otras áreas, pero en la Ciencia de los Datos uno puede formarse sin necesidad de asistir a una institución educativa. Mucho mejor si lo haces, sin duda alguna, pero deberíamos tener claro que -en mi opinión- sean cuales sean las fuentes de las que nos nutramos, la primera prioridad debe ser -siempre- formarnos. Y que eso normalmente depende de nosotros. Y que una vez formados, también depende normalmente de nosotros el crear o no oportunidades profesionales. Y que, en todo esto, el título que hemos llevado a nuestro CV solo indica que nos hemos dado la oportunidad de aprender, no si la hemos aprovechado o no. ', 'es') (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 934) Drupal\views\Plugin\views\field\EntityField->render_item(0, Array) (Line: 1171) Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238) template_preprocess_views_view_field(Array, 'views_view_field', Array) call_user_func_array('template_preprocess_views_view_field', Array) (Line: 287) Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 433) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 1748) Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 774) Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 713) Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 579) Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 467) Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2169) Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1538) Drupal\views\ViewExecutable->render() (Line: 199) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147) Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80) Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640) Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63) Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'insert-max_800_px-d24c8460-9e73-43a5-b339-d35bd20d6891') (Line: 124) Drupal\editor\Plugin\Filter\EditorFileReference->process('Aun cuando mi actividad como formador comenzó a principios de los años 90, cuando nos referimos al mundo de la Ciencia de los Datos (algoritmos de Inteligencia Artificial, Business Intelligence...) esta experiencia queda reducida a 4 o 5 años -en algunas áreas concretas es menor-, siendo ésta más intensa desde finales de 2018. En este período he tenido ocasión de conocer a muchas decenas -centenas, probablemente- de profesionales y estudiantes de máster y, en ocasiones, me han preguntado mi opinión al respecto de cómo obtener el máximo provecho profesional de sus estudios. <a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2020-11/art%20gallery.jpg"></a> En mi opinión hay tres factores que condicionan este aprovechamiento: el <strong>conocimiento</strong>, la <strong>actividad</strong> y la <strong>visibilidad</strong>. <ul><li>El <strong>conocimiento</strong> es sencillo de explicar: cuando uno comienza unos estudios -del tipo que sean- resulta crítico obtener el correspondiente conocimiento del tema en cuestión. Si no obtienes dicho conocimiento, podrás engañar a tu empleador o colegas uno o dos días, pero antes o después quedará claro que la tarea que se te ha encomendado te viene grande.</li> <li>La <strong>actividad</strong> es lo que hacemos con el conocimiento adquirido. Y aquí tenemos dos opciones: sentarnos a enviar nuestro CV hasta convencer a alguien de lo buenos que somos, o adoptar un enfoque más proactivo y poner en práctica nuestros recién adquiridos conocimientos en diferentes proyectos aun cuando no sea más que para ganar experiencia y no sea una actividad remunerada. Dentro del campo de la Ciencia de los Datos algunas ideas en este sentido pueden ser competir en Kaggle, desarrollar informes con las herramientas de BI más populares, aplicar algoritmos de Machine Learning a datasets públicos sobre temas de actualidad, desarrollar proyectos de Internet de las Cosas con una placa Arduino o semejante...</li> <li>Por último, la <strong>visibilidad</strong> es la capacidad de hacer llegar a terceros información sobre nuestros conocimientos y nuestra actividad: abrir un canal en YouTube en el que explicar cómo hemos desarrollado diferentes proyectos, crear una página web con el mismo objetivo, ofrecernos para dar conferencias, compartir nuestras opiniones y proyectos en LinkedIn, escribir un libro o artículos en sitios web especializados... son todas ideas que nos ayudan a ganar visibilidad. Pero entendamos que -desde mi punto de vista- debemos ganar esa visibilidad con mensajes de calidad. Reenviar compulsivamente todo lo que nos llega por LinkedIn al respecto de un tema a todos nuestros contactos solo demuestra que sabemos hacer clic con el ratón, no que seamos expertos en ese tema. Y crear periódicamente mensajes en los que mencionemos, por ejemplo, las características que debe tener un líder no nos va a convertir en uno de ellos. Nuestros mensajes -sea cual sea la interfaz que utilicemos para hacerlos llegar a nuestros destinatarios- deben ser propios, creativos, informativos y útiles.</li> </ul>En ocasiones se habla de la necesidad de tener <em>contactos</em> a la hora de explotar adecuadamente nuestra carrera profesional. Si bien es cierto que los contactos resultan sumamente útiles, para mí no son más que una pequeña parte de esa "visibilidad" que he comentado. Un ejemplo: supongamos que soy una persona con dotes artísticas pero no he conseguido conocimientos suficientes en dicha área, no las pongo en práctica y mi única visibilidad se reduce a un buen número de contactos. Probablemente no consiga convencer a ninguno de ellos de la utilidad de mi contratación. Por el contrario, supongamos que realizo cursos de pintura, los aprovecho, adquiero conocimientos, los pongo en práctica pintando cuadros y abro una galería de arte que, gracias a la calidad de mi trabajo, atrae a decenas de personas todos los días. Con contactos previos o sin ellos, estoy exponiendo mi trabajo a gran número de personas a través de las cuales pueden surgir oportunidades profesionales. Si, en este escenario, tengo contactos ya establecidos, mejor que mejor, sin duda. También podríamos argumentar que un contacto puede facilitar un "enchufe" que se plasme en un puesto profesional aun sin que lo merezcamos. Es cierto, estas cosas ocurren a todos los niveles. Otro factor es la existencia o no de esas <em>dotes artísticas</em> que he mencionado: si quiero dedicarme al mundo de la Ciencia de los Datos y tengo una innata mentalidad analítica, esto sin duda irá a facilitar mi carrera en esta área. Si no, me resultará un poco más difícil. Y, por supuesto, hay otras muchas habilidades que pueden influir en mayor o menor medida (las llamadas <em>habilidades blandas</em>): la capacidad de trabajo en equipo, la flexibilidad, la capacidad de comunicación, etc. El hecho es que frecuentemente me encuentro con estudiantes que delegan toda su suerte profesional en ese papel (digital a día de hoy) al que llamamos <em>curriculum vitae</em>. Recuerdo una conversación con un estudiante de máster tras más de un mes asistiendo a mis clases. La conversación fue más o menos la siguiente: <em>- [yo] ¿Y qué tal llevas mi materia, ahora que estamos a punto de terminar el módulo?</em> <em>- Bueno, todavía no me he puesto con ella. Pero me pondré este fin de semana y haré la prueba de evaluación el domingo.</em> <em>- Vaya, pensaba que me habías dicho un mes atrás -cuando comenzamos el módulo- que estabas en el paro y te estabas dedicando a tiempo completo a los estudios</em> <em>- Sí, bueno, pero lo que realmente me importa es obtener el título para poder añadirlo a mi CV</em> Desafortunadamente este enfoque es más frecuente de lo que podríamos esperar. Y creo que es un gran error: estamos desperdiciando la posibilidad de convencer a profesores, al equipo de la escuela de negocios o universidad de que se trate, y a otros estudiantes de lo buenos que somos en esta área, y tal vez alguno de ellos sea -o vaya a ser en el futuro- responsable de contratación, o tal vez les pidan referencias antes o después. Por el contrario, estamos confiando nuestra suerte profesional a un papel en el que hemos añadido una línea que dice algo como "<em>Máster en blablabla</em>", papel que no difiere en exceso del que tienen otros miles o decenas de miles de profesionales como nosotros. Otra versión de este problema de enfoque se da cuando iniciamos un programa de estudios sabiendo que no vamos a disponer de los recursos necesarios (tiempo o ganas), y aspiramos apenas a ese título que llevar al CV con independencia del aprovechamiento real que obtengamos. En definitiva, en cualquiera de estos casos estamos reduciendo nuestra capacidad, conocimientos y actitud a un puñado de palabras escritas en un papel. Cuando me gradué en la EOI tras realizar el <em>Máster en Business Intelligence y Big Data</em>, en la sesión de cierre del programa escuché a uno de los responsables de la escuela comentar en su intervención que, en realidad, todo aquello que habíamos aprendido se podía encontrar en Internet (en YouTube, en la documentación de los desarrolladores de software, en páginas web especializadas...), y que lo único que diferenciaba la formación que habíamos recibido en la EOI de la que podríamos haber obtenido aprendiendo directamente de fuentes abiertas en Internet era que nuestros instructores eran todos profesionales en activo, con gran experiencia y capacidad pedagógica, y que esto les permitía orientar nuestro estudio haciéndolo mucho más eficiente. Y es cierto. No sé en otras áreas, pero en la Ciencia de los Datos uno puede formarse sin necesidad de asistir a una institución educativa. Mucho mejor si lo haces, sin duda alguna, pero deberíamos tener claro que -en mi opinión- sean cuales sean las fuentes de las que nos nutramos, la primera prioridad debe ser -siempre- formarnos. Y que eso normalmente depende de nosotros. Y que una vez formados, también depende normalmente de nosotros el crear o no oportunidades profesionales. Y que, en todo esto, el título que hemos llevado a nuestro CV solo indica que nos hemos dado la oportunidad de aprender, no si la hemos aprovechado o no. ', 'es') (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 934) Drupal\views\Plugin\views\field\EntityField->render_item(0, Array) (Line: 1171) Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238) template_preprocess_views_view_field(Array, 'views_view_field', Array) call_user_func_array('template_preprocess_views_view_field', Array) (Line: 287) Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 433) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 1748) Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 774) Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 713) Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 579) Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 467) Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2169) Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1538) Drupal\views\ViewExecutable->render() (Line: 199) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115) Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80) Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640) Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63) Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'insert-max_800_px-77e9a037-c16c-4d2e-9f99-6bf92ede7720') (Line: 95) Drupal\editor\Plugin\Filter\EditorFileReference->process('Tuve ocasión recientemente de asistir a una ponencia sobre la “<em>justicia</em>” e “<em>injusticia</em>” de los algoritmos. Se planteó el concepto de sesgo en los algoritmos (debido a datos descompensados, insuficientes, etc.) y se planteó cómo los algoritmos deberían ser entrenados para que no planteasen diferencias en variables “<em>sensibles</em>” (la edad, el sexo, la raza…). En cierto momento el ponente comentó algo como “<em>…porque, si estamos hablando de la predicción de solvencia de solicitantes de un préstamo, no debería haber diferencias entre hombres y mujeres ¿cierto?</em>”, esperando la aquiescencia del público. El pensamiento que pasó por mi cabeza fue “<em>Pues no lo sé, necesitaría datos. Porque si estuviésemos hablando de la predicción del riesgo de accidente de un conductor, también podría esperarse que no hubiera diferencias entre hombres y mujeres. O si estuviésemos hablando de la marca de un corredor de fondo, también podría esperarse que no hubiera diferencias entre corredores de la que llamamos ‘raza blanca’ y los de ‘raza negra’. O si estuviésemos hablando de la estimación de vida de una persona, también podría esperarse que no hubiera diferencias entre hombres y mujeres</em>”. Pero la realidad es tozuda, y las mujeres tienen menos accidentes que los hombres, los corredores de raza negra tienen marcas mucho mejores que los de raza blanca, y los hombres viven menos que las mujeres. Llegué rápidamente a la conclusión de que aquella ponencia no estaba dedicada a la justicia e injusticia de los algoritmos, sino a lo que hoy día se interpreta como “<em>políticamente correcto</em>” o “<em>incorrecto</em>”. <a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-10/corredores_de_fondo_0.jpg"></a> El problema de forzar un algoritmo para que su resultado sea “políticamente correcto” es que, sencillamente, podemos estar dando la espalda a la realidad. Sin negar en absoluto que en ciertas condiciones sea conveniente la discriminación positiva, el riesgo que corremos al intentar imponer una ideología a la realidad puede ser elevado. Me imaginé a un médico analizando la posibilidad de que un tumor que afecte de forma diferente a hombres y mujeres sea maligno o benigno, esté en un estado de desarrollo u otro, o sea de un tipo u otro. Una búsqueda rápida en internet nos ofrece infinidad de casos: un ejemplo puede ser el “<a href="https://www.cancer.gov/espanol/noticias/temas-y-relatos-blog/2019/glioblastoma-tratamiento-respuesta-diferencia-por-sexo">Estudio de glioblastoma destaca las diferencias de sexo en el cáncer de cerebro</a>”, del <strong>Instituto Nacional del Cáncer</strong> (primer resultado que me ofreció la búsqueda). En mi opinión, asegurar esa supuesta “justicia” del algoritmo puede suponer el mayor sesgo que podemos cometer y -en casos como el comentado del cáncer de cerebro- podemos incluso estar poniendo en peligro la vida de una persona. De forma que, de vuelta a la cuestión inicial de <em>¿hombres y mujeres ofrecen la misma solvencia?</em> mi respuesta seguía siendo “<em>No lo sé, por justo o injusto que parezca. Quizás ellos o ellas sean más o menos precavidos, más o menos prácticos, o mejores o peores gestores. No lo sé, ni quiero prejuzgarlos</em>”. Y esto sin contar con que nadie se basaría en un análisis univariante para tomar una decisión de este tipo. La realidad es infinitamente más compleja y la forma en la que una variable como el sexo o la raza influye en una predicción es algo mucho más sutil de lo que puede parecer. En un caso como éste tal vez no estemos poniendo la vida de nadie en peligro, pero sí estamos corriendo el riesgo de desvirtuar la realidad en aras de esa “justicia social”. Reconozco que, tras pasar por mi cabeza estos pensamientos, dejé de prestar atención a la ponencia. Imagen: <a href="https://elpais.com/deportes/2019/10/11/actualidad/1570788596_566559.html">Kipchoge, con los atletas que lo acompañaron en el maratón el día 12 de octubre de 2019, Agencia Reuters</a> ', 'es') (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 934) Drupal\views\Plugin\views\field\EntityField->render_item(0, Array) (Line: 1171) Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238) template_preprocess_views_view_field(Array, 'views_view_field', Array) call_user_func_array('template_preprocess_views_view_field', Array) (Line: 287) Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 433) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 1748) Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 774) Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 713) Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 579) Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 467) Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2169) Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1538) Drupal\views\ViewExecutable->render() (Line: 199) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147) Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80) Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640) Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63) Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'insert-max_800_px-77e9a037-c16c-4d2e-9f99-6bf92ede7720') (Line: 95) Drupal\editor\Plugin\Filter\EditorFileReference->process('Tuve ocasión recientemente de asistir a una ponencia sobre la “<em>justicia</em>” e “<em>injusticia</em>” de los algoritmos. Se planteó el concepto de sesgo en los algoritmos (debido a datos descompensados, insuficientes, etc.) y se planteó cómo los algoritmos deberían ser entrenados para que no planteasen diferencias en variables “<em>sensibles</em>” (la edad, el sexo, la raza…). En cierto momento el ponente comentó algo como “<em>…porque, si estamos hablando de la predicción de solvencia de solicitantes de un préstamo, no debería haber diferencias entre hombres y mujeres ¿cierto?</em>”, esperando la aquiescencia del público. El pensamiento que pasó por mi cabeza fue “<em>Pues no lo sé, necesitaría datos. Porque si estuviésemos hablando de la predicción del riesgo de accidente de un conductor, también podría esperarse que no hubiera diferencias entre hombres y mujeres. O si estuviésemos hablando de la marca de un corredor de fondo, también podría esperarse que no hubiera diferencias entre corredores de la que llamamos ‘raza blanca’ y los de ‘raza negra’. O si estuviésemos hablando de la estimación de vida de una persona, también podría esperarse que no hubiera diferencias entre hombres y mujeres</em>”. Pero la realidad es tozuda, y las mujeres tienen menos accidentes que los hombres, los corredores de raza negra tienen marcas mucho mejores que los de raza blanca, y los hombres viven menos que las mujeres. Llegué rápidamente a la conclusión de que aquella ponencia no estaba dedicada a la justicia e injusticia de los algoritmos, sino a lo que hoy día se interpreta como “<em>políticamente correcto</em>” o “<em>incorrecto</em>”. <a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-10/corredores_de_fondo_0.jpg"></a> El problema de forzar un algoritmo para que su resultado sea “políticamente correcto” es que, sencillamente, podemos estar dando la espalda a la realidad. Sin negar en absoluto que en ciertas condiciones sea conveniente la discriminación positiva, el riesgo que corremos al intentar imponer una ideología a la realidad puede ser elevado. Me imaginé a un médico analizando la posibilidad de que un tumor que afecte de forma diferente a hombres y mujeres sea maligno o benigno, esté en un estado de desarrollo u otro, o sea de un tipo u otro. Una búsqueda rápida en internet nos ofrece infinidad de casos: un ejemplo puede ser el “<a href="https://www.cancer.gov/espanol/noticias/temas-y-relatos-blog/2019/glioblastoma-tratamiento-respuesta-diferencia-por-sexo">Estudio de glioblastoma destaca las diferencias de sexo en el cáncer de cerebro</a>”, del <strong>Instituto Nacional del Cáncer</strong> (primer resultado que me ofreció la búsqueda). En mi opinión, asegurar esa supuesta “justicia” del algoritmo puede suponer el mayor sesgo que podemos cometer y -en casos como el comentado del cáncer de cerebro- podemos incluso estar poniendo en peligro la vida de una persona. De forma que, de vuelta a la cuestión inicial de <em>¿hombres y mujeres ofrecen la misma solvencia?</em> mi respuesta seguía siendo “<em>No lo sé, por justo o injusto que parezca. Quizás ellos o ellas sean más o menos precavidos, más o menos prácticos, o mejores o peores gestores. No lo sé, ni quiero prejuzgarlos</em>”. Y esto sin contar con que nadie se basaría en un análisis univariante para tomar una decisión de este tipo. La realidad es infinitamente más compleja y la forma en la que una variable como el sexo o la raza influye en una predicción es algo mucho más sutil de lo que puede parecer. En un caso como éste tal vez no estemos poniendo la vida de nadie en peligro, pero sí estamos corriendo el riesgo de desvirtuar la realidad en aras de esa “justicia social”. Reconozco que, tras pasar por mi cabeza estos pensamientos, dejé de prestar atención a la ponencia. Imagen: <a href="https://elpais.com/deportes/2019/10/11/actualidad/1570788596_566559.html">Kipchoge, con los atletas que lo acompañaron en el maratón el día 12 de octubre de 2019, Agencia Reuters</a> ', 'es') (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 934) Drupal\views\Plugin\views\field\EntityField->render_item(0, Array) (Line: 1171) Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238) template_preprocess_views_view_field(Array, 'views_view_field', Array) call_user_func_array('template_preprocess_views_view_field', Array) (Line: 287) Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 433) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 1748) Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 774) Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 713) Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 579) Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 467) Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2169) Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1538) Drupal\views\ViewExecutable->render() (Line: 199) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115) Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80) Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640) Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63) Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'insert-max_800_px-77e9a037-c16c-4d2e-9f99-6bf92ede7720') (Line: 124) Drupal\editor\Plugin\Filter\EditorFileReference->process('Tuve ocasión recientemente de asistir a una ponencia sobre la “<em>justicia</em>” e “<em>injusticia</em>” de los algoritmos. Se planteó el concepto de sesgo en los algoritmos (debido a datos descompensados, insuficientes, etc.) y se planteó cómo los algoritmos deberían ser entrenados para que no planteasen diferencias en variables “<em>sensibles</em>” (la edad, el sexo, la raza…). En cierto momento el ponente comentó algo como “<em>…porque, si estamos hablando de la predicción de solvencia de solicitantes de un préstamo, no debería haber diferencias entre hombres y mujeres ¿cierto?</em>”, esperando la aquiescencia del público. El pensamiento que pasó por mi cabeza fue “<em>Pues no lo sé, necesitaría datos. Porque si estuviésemos hablando de la predicción del riesgo de accidente de un conductor, también podría esperarse que no hubiera diferencias entre hombres y mujeres. O si estuviésemos hablando de la marca de un corredor de fondo, también podría esperarse que no hubiera diferencias entre corredores de la que llamamos ‘raza blanca’ y los de ‘raza negra’. O si estuviésemos hablando de la estimación de vida de una persona, también podría esperarse que no hubiera diferencias entre hombres y mujeres</em>”. Pero la realidad es tozuda, y las mujeres tienen menos accidentes que los hombres, los corredores de raza negra tienen marcas mucho mejores que los de raza blanca, y los hombres viven menos que las mujeres. Llegué rápidamente a la conclusión de que aquella ponencia no estaba dedicada a la justicia e injusticia de los algoritmos, sino a lo que hoy día se interpreta como “<em>políticamente correcto</em>” o “<em>incorrecto</em>”. <a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-10/corredores_de_fondo_0.jpg"></a> El problema de forzar un algoritmo para que su resultado sea “políticamente correcto” es que, sencillamente, podemos estar dando la espalda a la realidad. Sin negar en absoluto que en ciertas condiciones sea conveniente la discriminación positiva, el riesgo que corremos al intentar imponer una ideología a la realidad puede ser elevado. Me imaginé a un médico analizando la posibilidad de que un tumor que afecte de forma diferente a hombres y mujeres sea maligno o benigno, esté en un estado de desarrollo u otro, o sea de un tipo u otro. Una búsqueda rápida en internet nos ofrece infinidad de casos: un ejemplo puede ser el “<a href="https://www.cancer.gov/espanol/noticias/temas-y-relatos-blog/2019/glioblastoma-tratamiento-respuesta-diferencia-por-sexo">Estudio de glioblastoma destaca las diferencias de sexo en el cáncer de cerebro</a>”, del <strong>Instituto Nacional del Cáncer</strong> (primer resultado que me ofreció la búsqueda). En mi opinión, asegurar esa supuesta “justicia” del algoritmo puede suponer el mayor sesgo que podemos cometer y -en casos como el comentado del cáncer de cerebro- podemos incluso estar poniendo en peligro la vida de una persona. De forma que, de vuelta a la cuestión inicial de <em>¿hombres y mujeres ofrecen la misma solvencia?</em> mi respuesta seguía siendo “<em>No lo sé, por justo o injusto que parezca. Quizás ellos o ellas sean más o menos precavidos, más o menos prácticos, o mejores o peores gestores. No lo sé, ni quiero prejuzgarlos</em>”. Y esto sin contar con que nadie se basaría en un análisis univariante para tomar una decisión de este tipo. La realidad es infinitamente más compleja y la forma en la que una variable como el sexo o la raza influye en una predicción es algo mucho más sutil de lo que puede parecer. En un caso como éste tal vez no estemos poniendo la vida de nadie en peligro, pero sí estamos corriendo el riesgo de desvirtuar la realidad en aras de esa “justicia social”. Reconozco que, tras pasar por mi cabeza estos pensamientos, dejé de prestar atención a la ponencia. Imagen: <a href="https://elpais.com/deportes/2019/10/11/actualidad/1570788596_566559.html">Kipchoge, con los atletas que lo acompañaron en el maratón el día 12 de octubre de 2019, Agencia Reuters</a> ', 'es') (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 934) Drupal\views\Plugin\views\field\EntityField->render_item(0, Array) (Line: 1171) Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238) template_preprocess_views_view_field(Array, 'views_view_field', Array) call_user_func_array('template_preprocess_views_view_field', Array) (Line: 287) Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 433) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 1748) Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 774) Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 713) Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 579) Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 467) Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2169) Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1538) Drupal\views\ViewExecutable->render() (Line: 199) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147) Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80) Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640) Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63) Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'insert-max_800_px-77e9a037-c16c-4d2e-9f99-6bf92ede7720') (Line: 124) Drupal\editor\Plugin\Filter\EditorFileReference->process('Tuve ocasión recientemente de asistir a una ponencia sobre la “<em>justicia</em>” e “<em>injusticia</em>” de los algoritmos. Se planteó el concepto de sesgo en los algoritmos (debido a datos descompensados, insuficientes, etc.) y se planteó cómo los algoritmos deberían ser entrenados para que no planteasen diferencias en variables “<em>sensibles</em>” (la edad, el sexo, la raza…). En cierto momento el ponente comentó algo como “<em>…porque, si estamos hablando de la predicción de solvencia de solicitantes de un préstamo, no debería haber diferencias entre hombres y mujeres ¿cierto?</em>”, esperando la aquiescencia del público. El pensamiento que pasó por mi cabeza fue “<em>Pues no lo sé, necesitaría datos. Porque si estuviésemos hablando de la predicción del riesgo de accidente de un conductor, también podría esperarse que no hubiera diferencias entre hombres y mujeres. O si estuviésemos hablando de la marca de un corredor de fondo, también podría esperarse que no hubiera diferencias entre corredores de la que llamamos ‘raza blanca’ y los de ‘raza negra’. O si estuviésemos hablando de la estimación de vida de una persona, también podría esperarse que no hubiera diferencias entre hombres y mujeres</em>”. Pero la realidad es tozuda, y las mujeres tienen menos accidentes que los hombres, los corredores de raza negra tienen marcas mucho mejores que los de raza blanca, y los hombres viven menos que las mujeres. Llegué rápidamente a la conclusión de que aquella ponencia no estaba dedicada a la justicia e injusticia de los algoritmos, sino a lo que hoy día se interpreta como “<em>políticamente correcto</em>” o “<em>incorrecto</em>”. <a class="colorbox insert-colorbox" data-colorbox-gallery="gallery-node" data-insert-class="" data-insert-type="image" href="/sites/default/files/2019-10/corredores_de_fondo_0.jpg"></a> El problema de forzar un algoritmo para que su resultado sea “políticamente correcto” es que, sencillamente, podemos estar dando la espalda a la realidad. Sin negar en absoluto que en ciertas condiciones sea conveniente la discriminación positiva, el riesgo que corremos al intentar imponer una ideología a la realidad puede ser elevado. Me imaginé a un médico analizando la posibilidad de que un tumor que afecte de forma diferente a hombres y mujeres sea maligno o benigno, esté en un estado de desarrollo u otro, o sea de un tipo u otro. Una búsqueda rápida en internet nos ofrece infinidad de casos: un ejemplo puede ser el “<a href="https://www.cancer.gov/espanol/noticias/temas-y-relatos-blog/2019/glioblastoma-tratamiento-respuesta-diferencia-por-sexo">Estudio de glioblastoma destaca las diferencias de sexo en el cáncer de cerebro</a>”, del <strong>Instituto Nacional del Cáncer</strong> (primer resultado que me ofreció la búsqueda). En mi opinión, asegurar esa supuesta “justicia” del algoritmo puede suponer el mayor sesgo que podemos cometer y -en casos como el comentado del cáncer de cerebro- podemos incluso estar poniendo en peligro la vida de una persona. De forma que, de vuelta a la cuestión inicial de <em>¿hombres y mujeres ofrecen la misma solvencia?</em> mi respuesta seguía siendo “<em>No lo sé, por justo o injusto que parezca. Quizás ellos o ellas sean más o menos precavidos, más o menos prácticos, o mejores o peores gestores. No lo sé, ni quiero prejuzgarlos</em>”. Y esto sin contar con que nadie se basaría en un análisis univariante para tomar una decisión de este tipo. La realidad es infinitamente más compleja y la forma en la que una variable como el sexo o la raza influye en una predicción es algo mucho más sutil de lo que puede parecer. En un caso como éste tal vez no estemos poniendo la vida de nadie en peligro, pero sí estamos corriendo el riesgo de desvirtuar la realidad en aras de esa “justicia social”. Reconozco que, tras pasar por mi cabeza estos pensamientos, dejé de prestar atención a la ponencia. Imagen: <a href="https://elpais.com/deportes/2019/10/11/actualidad/1570788596_566559.html">Kipchoge, con los atletas que lo acompañaron en el maratón el día 12 de octubre de 2019, Agencia Reuters</a> ', 'es') (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 934) Drupal\views\Plugin\views\field\EntityField->render_item(0, Array) (Line: 1171) Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238) template_preprocess_views_view_field(Array, 'views_view_field', Array) call_user_func_array('template_preprocess_views_view_field', Array) (Line: 287) Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 433) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 1748) Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 774) Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 713) Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 579) Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 467) Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2169) Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1538) Drupal\views\ViewExecutable->render() (Line: 199) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115) Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80) Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640) Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63) Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'b9d635e7-9940-4448-a5d8-9b18576eaecb') (Line: 95) Drupal\editor\Plugin\Filter\EditorFileReference->process('Según se ha comentado en un artículo anterior, aun cuando la interpretación del término "Big Data" es variada, al autor de este artículo le gusta hablar de Big Data cuando nos vemos obligados a recurrir a la computación distribuida para analizar un conjunto de datos, pero ¿qué puede llevarnos a esta necesidad? Hay un par de factores principales: <ol><li>El primero es el volumen de datos. Si la cantidad de datos a analizar excede la capacidad de un ordenador, ya podemos decir que nos encontramos en un entorno de Big Data. Esto significa, hoy en día, que cualquier volumen de datos por encima de unos pocos terabytes puede ser ya considerado Big Data.</li> <li>El segundo es la velocidad a la que es necesario analizar los datos. Si el volumen de datos a analizar no es tan alto pero la complejidad de su análisis hace que no sea posible usando un único ordenador, también nos encontraríamos en un escenario de datos masivos. Un ejemplo puede ser el análisis de datos no estructurados como imágenes de vídeo.</li> </ol>Y fijémonos en que cualquiera de estos dos motivos por sí solos puede obligarnos a recurrir a la computación distribuida. Entonces ¿qué es el modelo de las 3 V's? Según Gartner (e IBM posteriormente), un escenario Big Data abarca tres dimensiones: Volumen de datos, Velocidad de análisis y Variedad de fuentes de datos. Sin embargo, acabamos de ver que no es necesario que se den estas tres características: el Volumen o la necesidad de Velocidad por sí solas pueden obligarnos a recurrir a la computación distribuida. De hecho, es cierto que en un entorno Big Data suelen existir varias fuentes de datos, pero ¿qué ocurre si solo hay una fuente? (por ejemplo, los datos procedentes de un sensor que transmite en tiempo real algún tipo de información). Si su análisis impide recurrir a un único ordenador ¿no es ya un escenario de Big Data? Por supuesto que lo es. El modelo de las tres V's no es más que una curiosidad sin mayor valor. De hecho, hay una cuarta V que debemos a IBM: la Veracidad de los datos. ¿Y en qué tipo de análisis no es importante que los datos sean veraces? En todos, tanto en entornos de datos masivos como en entornos tradicionales, resulta crítico que los datos que estamos manejando sean veraces pues, de otra forma, se perdería toda la credibilidad en el resultado y, por lo tanto, en el proyecto en el que el proceso de análisis esté involucrado. Y, en un arranque de originalidad, se ha añadido al conjunto una quinta V: el Valor. Y es que el resultado del análisis debe aportar valor a la empresa (a lo que podemos responder con la misma pregunta que nos hicimos hace poco: ¿en qué tipo de análisis no es importante que se aporte valor?). La única curiosidad de este supuesto modelo es la coincidencia de que las palabras en las que se basa comienzan por V. Pero, en la práctica, lo que debe llevarnos a calificar un escenario de datos masivos o no, no es una curiosidad de este tipo, sino los requerimientos del análisis.', 'es') (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 934) Drupal\views\Plugin\views\field\EntityField->render_item(0, Array) (Line: 1171) Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238) template_preprocess_views_view_field(Array, 'views_view_field', Array) call_user_func_array('template_preprocess_views_view_field', Array) (Line: 287) Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 433) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 1748) Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 774) Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 713) Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 579) Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 467) Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2169) Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1538) Drupal\views\ViewExecutable->render() (Line: 199) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147) Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80) Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640) Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63) Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'b9d635e7-9940-4448-a5d8-9b18576eaecb') (Line: 95) Drupal\editor\Plugin\Filter\EditorFileReference->process('Según se ha comentado en un artículo anterior, aun cuando la interpretación del término "Big Data" es variada, al autor de este artículo le gusta hablar de Big Data cuando nos vemos obligados a recurrir a la computación distribuida para analizar un conjunto de datos, pero ¿qué puede llevarnos a esta necesidad? Hay un par de factores principales: <ol><li>El primero es el volumen de datos. Si la cantidad de datos a analizar excede la capacidad de un ordenador, ya podemos decir que nos encontramos en un entorno de Big Data. Esto significa, hoy en día, que cualquier volumen de datos por encima de unos pocos terabytes puede ser ya considerado Big Data.</li> <li>El segundo es la velocidad a la que es necesario analizar los datos. Si el volumen de datos a analizar no es tan alto pero la complejidad de su análisis hace que no sea posible usando un único ordenador, también nos encontraríamos en un escenario de datos masivos. Un ejemplo puede ser el análisis de datos no estructurados como imágenes de vídeo.</li> </ol>Y fijémonos en que cualquiera de estos dos motivos por sí solos puede obligarnos a recurrir a la computación distribuida. Entonces ¿qué es el modelo de las 3 V's? Según Gartner (e IBM posteriormente), un escenario Big Data abarca tres dimensiones: Volumen de datos, Velocidad de análisis y Variedad de fuentes de datos. Sin embargo, acabamos de ver que no es necesario que se den estas tres características: el Volumen o la necesidad de Velocidad por sí solas pueden obligarnos a recurrir a la computación distribuida. De hecho, es cierto que en un entorno Big Data suelen existir varias fuentes de datos, pero ¿qué ocurre si solo hay una fuente? (por ejemplo, los datos procedentes de un sensor que transmite en tiempo real algún tipo de información). Si su análisis impide recurrir a un único ordenador ¿no es ya un escenario de Big Data? Por supuesto que lo es. El modelo de las tres V's no es más que una curiosidad sin mayor valor. De hecho, hay una cuarta V que debemos a IBM: la Veracidad de los datos. ¿Y en qué tipo de análisis no es importante que los datos sean veraces? En todos, tanto en entornos de datos masivos como en entornos tradicionales, resulta crítico que los datos que estamos manejando sean veraces pues, de otra forma, se perdería toda la credibilidad en el resultado y, por lo tanto, en el proyecto en el que el proceso de análisis esté involucrado. Y, en un arranque de originalidad, se ha añadido al conjunto una quinta V: el Valor. Y es que el resultado del análisis debe aportar valor a la empresa (a lo que podemos responder con la misma pregunta que nos hicimos hace poco: ¿en qué tipo de análisis no es importante que se aporte valor?). La única curiosidad de este supuesto modelo es la coincidencia de que las palabras en las que se basa comienzan por V. Pero, en la práctica, lo que debe llevarnos a calificar un escenario de datos masivos o no, no es una curiosidad de este tipo, sino los requerimientos del análisis.', 'es') (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 934) Drupal\views\Plugin\views\field\EntityField->render_item(0, Array) (Line: 1171) Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238) template_preprocess_views_view_field(Array, 'views_view_field', Array) call_user_func_array('template_preprocess_views_view_field', Array) (Line: 287) Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 433) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 1748) Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 774) Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 713) Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 579) Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 467) Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2169) Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1538) Drupal\views\ViewExecutable->render() (Line: 199) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('file_load_multiple') (Line: 696) Drupal\Core\Entity\Sql\SqlContentEntityStorage->buildQuery(Array) (Line: 422) Drupal\Core\Entity\Sql\SqlContentEntityStorage->getFromStorage(Array) (Line: 393) Drupal\Core\Entity\Sql\SqlContentEntityStorage->doLoadMultiple(Array) (Line: 346) Drupal\Core\Entity\EntityStorageBase->loadMultiple(Array) (Line: 641) Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63) Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'b9d635e7-9940-4448-a5d8-9b18576eaecb') (Line: 95) Drupal\editor\Plugin\Filter\EditorFileReference->process('Según se ha comentado en un artículo anterior, aun cuando la interpretación del término "Big Data" es variada, al autor de este artículo le gusta hablar de Big Data cuando nos vemos obligados a recurrir a la computación distribuida para analizar un conjunto de datos, pero ¿qué puede llevarnos a esta necesidad? Hay un par de factores principales: <ol><li>El primero es el volumen de datos. Si la cantidad de datos a analizar excede la capacidad de un ordenador, ya podemos decir que nos encontramos en un entorno de Big Data. Esto significa, hoy en día, que cualquier volumen de datos por encima de unos pocos terabytes puede ser ya considerado Big Data.</li> <li>El segundo es la velocidad a la que es necesario analizar los datos. Si el volumen de datos a analizar no es tan alto pero la complejidad de su análisis hace que no sea posible usando un único ordenador, también nos encontraríamos en un escenario de datos masivos. Un ejemplo puede ser el análisis de datos no estructurados como imágenes de vídeo.</li> </ol>Y fijémonos en que cualquiera de estos dos motivos por sí solos puede obligarnos a recurrir a la computación distribuida. Entonces ¿qué es el modelo de las 3 V's? Según Gartner (e IBM posteriormente), un escenario Big Data abarca tres dimensiones: Volumen de datos, Velocidad de análisis y Variedad de fuentes de datos. Sin embargo, acabamos de ver que no es necesario que se den estas tres características: el Volumen o la necesidad de Velocidad por sí solas pueden obligarnos a recurrir a la computación distribuida. De hecho, es cierto que en un entorno Big Data suelen existir varias fuentes de datos, pero ¿qué ocurre si solo hay una fuente? (por ejemplo, los datos procedentes de un sensor que transmite en tiempo real algún tipo de información). Si su análisis impide recurrir a un único ordenador ¿no es ya un escenario de Big Data? Por supuesto que lo es. El modelo de las tres V's no es más que una curiosidad sin mayor valor. De hecho, hay una cuarta V que debemos a IBM: la Veracidad de los datos. ¿Y en qué tipo de análisis no es importante que los datos sean veraces? En todos, tanto en entornos de datos masivos como en entornos tradicionales, resulta crítico que los datos que estamos manejando sean veraces pues, de otra forma, se perdería toda la credibilidad en el resultado y, por lo tanto, en el proyecto en el que el proceso de análisis esté involucrado. Y, en un arranque de originalidad, se ha añadido al conjunto una quinta V: el Valor. Y es que el resultado del análisis debe aportar valor a la empresa (a lo que podemos responder con la misma pregunta que nos hicimos hace poco: ¿en qué tipo de análisis no es importante que se aporte valor?). La única curiosidad de este supuesto modelo es la coincidencia de que las palabras en las que se basa comienzan por V. Pero, en la práctica, lo que debe llevarnos a calificar un escenario de datos masivos o no, no es una curiosidad de este tipo, sino los requerimientos del análisis.', 'es') (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 934) Drupal\views\Plugin\views\field\EntityField->render_item(0, Array) (Line: 1171) Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238) template_preprocess_views_view_field(Array, 'views_view_field', Array) call_user_func_array('template_preprocess_views_view_field', Array) (Line: 287) Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 433) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 1748) Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 774) Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 713) Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 579) Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 467) Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2169) Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1538) Drupal\views\ViewExecutable->render() (Line: 199) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115) Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80) Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640) Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63) Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'b9d635e7-9940-4448-a5d8-9b18576eaecb') (Line: 124) Drupal\editor\Plugin\Filter\EditorFileReference->process('Según se ha comentado en un artículo anterior, aun cuando la interpretación del término "Big Data" es variada, al autor de este artículo le gusta hablar de Big Data cuando nos vemos obligados a recurrir a la computación distribuida para analizar un conjunto de datos, pero ¿qué puede llevarnos a esta necesidad? Hay un par de factores principales: <ol><li>El primero es el volumen de datos. Si la cantidad de datos a analizar excede la capacidad de un ordenador, ya podemos decir que nos encontramos en un entorno de Big Data. Esto significa, hoy en día, que cualquier volumen de datos por encima de unos pocos terabytes puede ser ya considerado Big Data.</li> <li>El segundo es la velocidad a la que es necesario analizar los datos. Si el volumen de datos a analizar no es tan alto pero la complejidad de su análisis hace que no sea posible usando un único ordenador, también nos encontraríamos en un escenario de datos masivos. Un ejemplo puede ser el análisis de datos no estructurados como imágenes de vídeo.</li> </ol>Y fijémonos en que cualquiera de estos dos motivos por sí solos puede obligarnos a recurrir a la computación distribuida. Entonces ¿qué es el modelo de las 3 V's? Según Gartner (e IBM posteriormente), un escenario Big Data abarca tres dimensiones: Volumen de datos, Velocidad de análisis y Variedad de fuentes de datos. Sin embargo, acabamos de ver que no es necesario que se den estas tres características: el Volumen o la necesidad de Velocidad por sí solas pueden obligarnos a recurrir a la computación distribuida. De hecho, es cierto que en un entorno Big Data suelen existir varias fuentes de datos, pero ¿qué ocurre si solo hay una fuente? (por ejemplo, los datos procedentes de un sensor que transmite en tiempo real algún tipo de información). Si su análisis impide recurrir a un único ordenador ¿no es ya un escenario de Big Data? Por supuesto que lo es. El modelo de las tres V's no es más que una curiosidad sin mayor valor. De hecho, hay una cuarta V que debemos a IBM: la Veracidad de los datos. ¿Y en qué tipo de análisis no es importante que los datos sean veraces? En todos, tanto en entornos de datos masivos como en entornos tradicionales, resulta crítico que los datos que estamos manejando sean veraces pues, de otra forma, se perdería toda la credibilidad en el resultado y, por lo tanto, en el proyecto en el que el proceso de análisis esté involucrado. Y, en un arranque de originalidad, se ha añadido al conjunto una quinta V: el Valor. Y es que el resultado del análisis debe aportar valor a la empresa (a lo que podemos responder con la misma pregunta que nos hicimos hace poco: ¿en qué tipo de análisis no es importante que se aporte valor?). La única curiosidad de este supuesto modelo es la coincidencia de que las palabras en las que se basa comienzan por V. Pero, en la práctica, lo que debe llevarnos a calificar un escenario de datos masivos o no, no es una curiosidad de este tipo, sino los requerimientos del análisis.', 'es') (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 934) Drupal\views\Plugin\views\field\EntityField->render_item(0, Array) (Line: 1171) Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238) template_preprocess_views_view_field(Array, 'views_view_field', Array) call_user_func_array('template_preprocess_views_view_field', Array) (Line: 287) Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 433) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 1748) Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 774) Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 713) Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 579) Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 467) Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2169) Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1538) Drupal\views\ViewExecutable->render() (Line: 199) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147) Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80) Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640) Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63) Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'b9d635e7-9940-4448-a5d8-9b18576eaecb') (Line: 124) Drupal\editor\Plugin\Filter\EditorFileReference->process('Según se ha comentado en un artículo anterior, aun cuando la interpretación del término "Big Data" es variada, al autor de este artículo le gusta hablar de Big Data cuando nos vemos obligados a recurrir a la computación distribuida para analizar un conjunto de datos, pero ¿qué puede llevarnos a esta necesidad? Hay un par de factores principales: <ol><li>El primero es el volumen de datos. Si la cantidad de datos a analizar excede la capacidad de un ordenador, ya podemos decir que nos encontramos en un entorno de Big Data. Esto significa, hoy en día, que cualquier volumen de datos por encima de unos pocos terabytes puede ser ya considerado Big Data.</li> <li>El segundo es la velocidad a la que es necesario analizar los datos. Si el volumen de datos a analizar no es tan alto pero la complejidad de su análisis hace que no sea posible usando un único ordenador, también nos encontraríamos en un escenario de datos masivos. Un ejemplo puede ser el análisis de datos no estructurados como imágenes de vídeo.</li> </ol>Y fijémonos en que cualquiera de estos dos motivos por sí solos puede obligarnos a recurrir a la computación distribuida. Entonces ¿qué es el modelo de las 3 V's? Según Gartner (e IBM posteriormente), un escenario Big Data abarca tres dimensiones: Volumen de datos, Velocidad de análisis y Variedad de fuentes de datos. Sin embargo, acabamos de ver que no es necesario que se den estas tres características: el Volumen o la necesidad de Velocidad por sí solas pueden obligarnos a recurrir a la computación distribuida. De hecho, es cierto que en un entorno Big Data suelen existir varias fuentes de datos, pero ¿qué ocurre si solo hay una fuente? (por ejemplo, los datos procedentes de un sensor que transmite en tiempo real algún tipo de información). Si su análisis impide recurrir a un único ordenador ¿no es ya un escenario de Big Data? Por supuesto que lo es. El modelo de las tres V's no es más que una curiosidad sin mayor valor. De hecho, hay una cuarta V que debemos a IBM: la Veracidad de los datos. ¿Y en qué tipo de análisis no es importante que los datos sean veraces? En todos, tanto en entornos de datos masivos como en entornos tradicionales, resulta crítico que los datos que estamos manejando sean veraces pues, de otra forma, se perdería toda la credibilidad en el resultado y, por lo tanto, en el proyecto en el que el proceso de análisis esté involucrado. Y, en un arranque de originalidad, se ha añadido al conjunto una quinta V: el Valor. Y es que el resultado del análisis debe aportar valor a la empresa (a lo que podemos responder con la misma pregunta que nos hicimos hace poco: ¿en qué tipo de análisis no es importante que se aporte valor?). La única curiosidad de este supuesto modelo es la coincidencia de que las palabras en las que se basa comienzan por V. Pero, en la práctica, lo que debe llevarnos a calificar un escenario de datos masivos o no, no es una curiosidad de este tipo, sino los requerimientos del análisis.', 'es') (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 934) Drupal\views\Plugin\views\field\EntityField->render_item(0, Array) (Line: 1171) Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238) template_preprocess_views_view_field(Array, 'views_view_field', Array) call_user_func_array('template_preprocess_views_view_field', Array) (Line: 287) Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 433) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 1748) Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 774) Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 713) Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 579) Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 467) Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2169) Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1538) Drupal\views\ViewExecutable->render() (Line: 199) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115) Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80) Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640) Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63) Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'ceb1ee49-0197-4618-a4d2-689d776edba2') (Line: 95) Drupal\editor\Plugin\Filter\EditorFileReference->process('¿Quién no tiene un familiar en Nigeria intentando enviarnos una gran cantidad de dinero? ¿o bellas mujeres Rusia que quieren casarse con nosotros? Todos ellos tienen una cosa en común: tu tarjeta de crédito siempre está involucrada en la transacción, de una forma u otra. Hoy he descubierto lo que parece ser una gran iniciativa basada en algoritmos de Aprendizaje Automático (Machine Learning): Cuando recibimos este tipo de emails, el primero es enviado por una máquina de forma automática pero, en función del tipo de fraude, hay frecuentemente una persona detrás (el "<em>scammer</em>") esperando tu respuesta para intentar engañarte de alguna forma, de forma que intentar hacer perder el tiempo a esa persona parece una interesante opción para conseguir que pierdan dinero y, de esta forma, limitar sus recursos persiguiendo personas reales. <strong>Re:scam</strong>, un email chatbot operado por la firma de ciberseguridad neozelandesa <strong>Netsafe</strong>, responde a cualquier scammer por ti, en una conversación sin final ni propósito alguno que puede tener al scammer ocupado durante algún tiempo. ¿Y qué debemos hacer para aprovechar este servicio gratuito? Simplemente tenemos que reenviar el mensaje que hayamos recibido del scammer a <a href="mailto:me@rescam.org">me@rescam.org</a>, y un proxy de correo electrónico comenzará a responder al scammer por nosotros, aplicando algoritmos de Inteligencia Artificial con el objetivo de mostrar suficiente interés para que el scammer nos responda (no a nosotros, en realidad, sino a la dirección del proxy) tantas veces como sea posible. Considerando el número de emails que envía un scammer, si se ven obligados a desperdiciar tan solo 10 segundos por cada uno de ellos, podemos imaginar el tiempo que necesitarán hasta encontrar una víctima real. De forma que cuanto más utilicemos este servicio, mejor. El sitio web de esta iniciativa es: <a href="https://www.rescam.org" target="_blank">https://www.rescam.org</a> ', 'es') (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 934) Drupal\views\Plugin\views\field\EntityField->render_item(0, Array) (Line: 1171) Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238) template_preprocess_views_view_field(Array, 'views_view_field', Array) call_user_func_array('template_preprocess_views_view_field', Array) (Line: 287) Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 433) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 1748) Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 774) Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 713) Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 579) Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 467) Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2169) Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1538) Drupal\views\ViewExecutable->render() (Line: 199) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147) Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80) Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640) Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63) Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'ceb1ee49-0197-4618-a4d2-689d776edba2') (Line: 95) Drupal\editor\Plugin\Filter\EditorFileReference->process('¿Quién no tiene un familiar en Nigeria intentando enviarnos una gran cantidad de dinero? ¿o bellas mujeres Rusia que quieren casarse con nosotros? Todos ellos tienen una cosa en común: tu tarjeta de crédito siempre está involucrada en la transacción, de una forma u otra. Hoy he descubierto lo que parece ser una gran iniciativa basada en algoritmos de Aprendizaje Automático (Machine Learning): Cuando recibimos este tipo de emails, el primero es enviado por una máquina de forma automática pero, en función del tipo de fraude, hay frecuentemente una persona detrás (el "<em>scammer</em>") esperando tu respuesta para intentar engañarte de alguna forma, de forma que intentar hacer perder el tiempo a esa persona parece una interesante opción para conseguir que pierdan dinero y, de esta forma, limitar sus recursos persiguiendo personas reales. <strong>Re:scam</strong>, un email chatbot operado por la firma de ciberseguridad neozelandesa <strong>Netsafe</strong>, responde a cualquier scammer por ti, en una conversación sin final ni propósito alguno que puede tener al scammer ocupado durante algún tiempo. ¿Y qué debemos hacer para aprovechar este servicio gratuito? Simplemente tenemos que reenviar el mensaje que hayamos recibido del scammer a <a href="mailto:me@rescam.org">me@rescam.org</a>, y un proxy de correo electrónico comenzará a responder al scammer por nosotros, aplicando algoritmos de Inteligencia Artificial con el objetivo de mostrar suficiente interés para que el scammer nos responda (no a nosotros, en realidad, sino a la dirección del proxy) tantas veces como sea posible. Considerando el número de emails que envía un scammer, si se ven obligados a desperdiciar tan solo 10 segundos por cada uno de ellos, podemos imaginar el tiempo que necesitarán hasta encontrar una víctima real. De forma que cuanto más utilicemos este servicio, mejor. El sitio web de esta iniciativa es: <a href="https://www.rescam.org" target="_blank">https://www.rescam.org</a> ', 'es') (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 934) Drupal\views\Plugin\views\field\EntityField->render_item(0, Array) (Line: 1171) Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238) template_preprocess_views_view_field(Array, 'views_view_field', Array) call_user_func_array('template_preprocess_views_view_field', Array) (Line: 287) Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 433) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 1748) Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 774) Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 713) Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 579) Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 467) Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2169) Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1538) Drupal\views\ViewExecutable->render() (Line: 199) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115) Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80) Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640) Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63) Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'ceb1ee49-0197-4618-a4d2-689d776edba2') (Line: 124) Drupal\editor\Plugin\Filter\EditorFileReference->process('¿Quién no tiene un familiar en Nigeria intentando enviarnos una gran cantidad de dinero? ¿o bellas mujeres Rusia que quieren casarse con nosotros? Todos ellos tienen una cosa en común: tu tarjeta de crédito siempre está involucrada en la transacción, de una forma u otra. Hoy he descubierto lo que parece ser una gran iniciativa basada en algoritmos de Aprendizaje Automático (Machine Learning): Cuando recibimos este tipo de emails, el primero es enviado por una máquina de forma automática pero, en función del tipo de fraude, hay frecuentemente una persona detrás (el "<em>scammer</em>") esperando tu respuesta para intentar engañarte de alguna forma, de forma que intentar hacer perder el tiempo a esa persona parece una interesante opción para conseguir que pierdan dinero y, de esta forma, limitar sus recursos persiguiendo personas reales. <strong>Re:scam</strong>, un email chatbot operado por la firma de ciberseguridad neozelandesa <strong>Netsafe</strong>, responde a cualquier scammer por ti, en una conversación sin final ni propósito alguno que puede tener al scammer ocupado durante algún tiempo. ¿Y qué debemos hacer para aprovechar este servicio gratuito? Simplemente tenemos que reenviar el mensaje que hayamos recibido del scammer a <a href="mailto:me@rescam.org">me@rescam.org</a>, y un proxy de correo electrónico comenzará a responder al scammer por nosotros, aplicando algoritmos de Inteligencia Artificial con el objetivo de mostrar suficiente interés para que el scammer nos responda (no a nosotros, en realidad, sino a la dirección del proxy) tantas veces como sea posible. Considerando el número de emails que envía un scammer, si se ven obligados a desperdiciar tan solo 10 segundos por cada uno de ellos, podemos imaginar el tiempo que necesitarán hasta encontrar una víctima real. De forma que cuanto más utilicemos este servicio, mejor. El sitio web de esta iniciativa es: <a href="https://www.rescam.org" target="_blank">https://www.rescam.org</a> ', 'es') (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 934) Drupal\views\Plugin\views\field\EntityField->render_item(0, Array) (Line: 1171) Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238) template_preprocess_views_view_field(Array, 'views_view_field', Array) call_user_func_array('template_preprocess_views_view_field', Array) (Line: 287) Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 433) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 1748) Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 774) Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 713) Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 579) Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 467) Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2169) Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1538) Drupal\views\ViewExecutable->render() (Line: 199) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147) Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80) Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640) Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63) Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'ceb1ee49-0197-4618-a4d2-689d776edba2') (Line: 124) Drupal\editor\Plugin\Filter\EditorFileReference->process('¿Quién no tiene un familiar en Nigeria intentando enviarnos una gran cantidad de dinero? ¿o bellas mujeres Rusia que quieren casarse con nosotros? Todos ellos tienen una cosa en común: tu tarjeta de crédito siempre está involucrada en la transacción, de una forma u otra. Hoy he descubierto lo que parece ser una gran iniciativa basada en algoritmos de Aprendizaje Automático (Machine Learning): Cuando recibimos este tipo de emails, el primero es enviado por una máquina de forma automática pero, en función del tipo de fraude, hay frecuentemente una persona detrás (el "<em>scammer</em>") esperando tu respuesta para intentar engañarte de alguna forma, de forma que intentar hacer perder el tiempo a esa persona parece una interesante opción para conseguir que pierdan dinero y, de esta forma, limitar sus recursos persiguiendo personas reales. <strong>Re:scam</strong>, un email chatbot operado por la firma de ciberseguridad neozelandesa <strong>Netsafe</strong>, responde a cualquier scammer por ti, en una conversación sin final ni propósito alguno que puede tener al scammer ocupado durante algún tiempo. ¿Y qué debemos hacer para aprovechar este servicio gratuito? Simplemente tenemos que reenviar el mensaje que hayamos recibido del scammer a <a href="mailto:me@rescam.org">me@rescam.org</a>, y un proxy de correo electrónico comenzará a responder al scammer por nosotros, aplicando algoritmos de Inteligencia Artificial con el objetivo de mostrar suficiente interés para que el scammer nos responda (no a nosotros, en realidad, sino a la dirección del proxy) tantas veces como sea posible. Considerando el número de emails que envía un scammer, si se ven obligados a desperdiciar tan solo 10 segundos por cada uno de ellos, podemos imaginar el tiempo que necesitarán hasta encontrar una víctima real. De forma que cuanto más utilicemos este servicio, mejor. El sitio web de esta iniciativa es: <a href="https://www.rescam.org" target="_blank">https://www.rescam.org</a> ', 'es') (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 934) Drupal\views\Plugin\views\field\EntityField->render_item(0, Array) (Line: 1171) Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238) template_preprocess_views_view_field(Array, 'views_view_field', Array) call_user_func_array('template_preprocess_views_view_field', Array) (Line: 287) Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 433) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 1748) Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 774) Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 713) Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 579) Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 467) Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2169) Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1538) Drupal\views\ViewExecutable->render() (Line: 199) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115) Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80) Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640) Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63) Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'f204da72-1b96-45a3-93b7-c08a2fd224c2') (Line: 95) Drupal\editor\Plugin\Filter\EditorFileReference->process('En el mundo en el que vivimos, en el que las modas y las burbujas de todo tipo marcan el ritmo de las cosas, resulta difícil no ver cómo los términos tecnológicos son, tal y como decía Rudyard Kipling en su famoso poema, "<em>tergiversados por bribones para hacer una trampa para los necios</em>". Y el término "<strong>Big Data</strong>" es uno de los más usados hoy día, frecuentemente con significados dispares y, a menudo, simplemente erróneos. Es cierto que en el área del análisis de datos resulta difícil encontrar definiciones que sean perdurables en el tiempo y se acomoden a las preferencias de todos los profesionales del área, pero el autor de estas líneas ha llegado a sentarse delante de responsables de tecnología de diversas empresas y escuchado el término "Big Data" como equivalente a "Business Intelligence" o a "Minería de datos". Y no es ni una cosa ni otra. Y de personas más alejadas del mundo de la tecnología es también frecuente oír el término con el significado de "Redes Sociales", "Internet" o "Apps" (aplicaciones normalmente para dispositivos móviles). O incluso con el significado de "Inteligencia Artificial" (aun cuando se le dé otro nombre, como "robótica" o semejante). Cada día se impone más la interpretación según la cual "Big Data" hace referencia a la cantidad ingente de datos que se generan a nivel global, ya sea provenientes de las Apps que utilizamos, de transacciones bancarias, de uso de redes sociales, del uso que hacemos de nuestro teléfono móvil... datos de los que podemos extraer valiosa información al respecto de nuestros hábitos de consumo que deberían permitirnos mejorar nuestro nivel de vida. Aun así, Big Data significa "Datos Masivos" o "Grandes Datos". Es un término sumamente subjetivo que, en sentido estricto, no hace referencia más que al tamaño de los datos involucrados en un proceso, de forma que cuando éstos son "muchos", hablamos de Big Data (en ese caso también podemos decir que nos encontramos en un "escenario de Big Data" o "de Datos Masivos"). ¿Y cuándo podemos decir que estamos trabajando con "muchos" datos?: Cuando su proceso (tanto si estamos hablando de análisis de datos como de cualquier otro) convierta las soluciones tradicionales de análisis en insuficientes. Y por "solución tradicional" aquí estamos refiriéndonos al uso de un ordenador con un procesador (o multiprocesador), una memoria y un disco duro. Es decir, cuando es posible analizar un conjunto de datos usando un único ordenador -y el análisis se realiza en los tiempos adecuados- no deberíamos hablar de datos masivos, por mucho que nos guste decir que "en mi empresa hacemos Big Data". Por el contrario, si esa solución tradicional no es suficiente, nos encontraremos, tal y como se ha comentado, en un escenario de datos masivos y para su análisis será necesario recurrir a lo que se denomina "computación distribuida", lo que implica el uso de varios ordenadores (en ocasiones incluso miles de ellos) entre los que se reparte el proceso. Lógicamente este reparto exige que los ordenadores estén coordinados entre sí, lo que obliga al uso de software especializado (en análisis de datos el más utilizado es <a href="https://es.wikipedia.org/wiki/Hadoop" target="_blank">Apache Hadoop</a>). Por otro lado, la subjetividad del término "Big Data" implica que ciertos datos podrán ser considerados "grandes" o no en función de la tecnología disponible: lo que hoy consideramos Big Data probablemente no lo sea en pocos años. O, dicho con otras palabras, si dispusiéramos de un ordenador con una capacidad de cálculo infinita, no existiría el Big Data y todos los escenarios de análisis serían considerados tradicionales. Aun cuando el uso del término Big Data está, como se ha comentado, muy de moda, es importante destacar que, si damos por buena la definición anterior, trabajar en escenarios Big Data o no, es (casi) independiente del tipo de proceso que estemos ejecutando: la única diferencia sería la tecnología sobre la que nos basamos para ejecutarlos. Sí es cierto que hay algoritmos de aprendizaje automático utilizados en minería de datos que resultan difícilmente distribuibles entre varios ordenadores (en algunos casos es sencillamente imposible), pero son excepciones que no deben desviar la atención de lo realmente importante: la computación distribuida no es más que un recurso al que recurrimos para satisfacer una necesidad de capacidad de computación impuesta por unas exigencias mayores de lo habitual, pero esto es, desde un punto de vista conceptual, irrelevante en el análisis. ', 'es') (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 934) Drupal\views\Plugin\views\field\EntityField->render_item(0, Array) (Line: 1171) Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238) template_preprocess_views_view_field(Array, 'views_view_field', Array) call_user_func_array('template_preprocess_views_view_field', Array) (Line: 287) Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 433) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 1748) Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 774) Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 713) Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 579) Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 467) Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2169) Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1538) Drupal\views\ViewExecutable->render() (Line: 199) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147) Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80) Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640) Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63) Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'f204da72-1b96-45a3-93b7-c08a2fd224c2') (Line: 95) Drupal\editor\Plugin\Filter\EditorFileReference->process('En el mundo en el que vivimos, en el que las modas y las burbujas de todo tipo marcan el ritmo de las cosas, resulta difícil no ver cómo los términos tecnológicos son, tal y como decía Rudyard Kipling en su famoso poema, "<em>tergiversados por bribones para hacer una trampa para los necios</em>". Y el término "<strong>Big Data</strong>" es uno de los más usados hoy día, frecuentemente con significados dispares y, a menudo, simplemente erróneos. Es cierto que en el área del análisis de datos resulta difícil encontrar definiciones que sean perdurables en el tiempo y se acomoden a las preferencias de todos los profesionales del área, pero el autor de estas líneas ha llegado a sentarse delante de responsables de tecnología de diversas empresas y escuchado el término "Big Data" como equivalente a "Business Intelligence" o a "Minería de datos". Y no es ni una cosa ni otra. Y de personas más alejadas del mundo de la tecnología es también frecuente oír el término con el significado de "Redes Sociales", "Internet" o "Apps" (aplicaciones normalmente para dispositivos móviles). O incluso con el significado de "Inteligencia Artificial" (aun cuando se le dé otro nombre, como "robótica" o semejante). Cada día se impone más la interpretación según la cual "Big Data" hace referencia a la cantidad ingente de datos que se generan a nivel global, ya sea provenientes de las Apps que utilizamos, de transacciones bancarias, de uso de redes sociales, del uso que hacemos de nuestro teléfono móvil... datos de los que podemos extraer valiosa información al respecto de nuestros hábitos de consumo que deberían permitirnos mejorar nuestro nivel de vida. Aun así, Big Data significa "Datos Masivos" o "Grandes Datos". Es un término sumamente subjetivo que, en sentido estricto, no hace referencia más que al tamaño de los datos involucrados en un proceso, de forma que cuando éstos son "muchos", hablamos de Big Data (en ese caso también podemos decir que nos encontramos en un "escenario de Big Data" o "de Datos Masivos"). ¿Y cuándo podemos decir que estamos trabajando con "muchos" datos?: Cuando su proceso (tanto si estamos hablando de análisis de datos como de cualquier otro) convierta las soluciones tradicionales de análisis en insuficientes. Y por "solución tradicional" aquí estamos refiriéndonos al uso de un ordenador con un procesador (o multiprocesador), una memoria y un disco duro. Es decir, cuando es posible analizar un conjunto de datos usando un único ordenador -y el análisis se realiza en los tiempos adecuados- no deberíamos hablar de datos masivos, por mucho que nos guste decir que "en mi empresa hacemos Big Data". Por el contrario, si esa solución tradicional no es suficiente, nos encontraremos, tal y como se ha comentado, en un escenario de datos masivos y para su análisis será necesario recurrir a lo que se denomina "computación distribuida", lo que implica el uso de varios ordenadores (en ocasiones incluso miles de ellos) entre los que se reparte el proceso. Lógicamente este reparto exige que los ordenadores estén coordinados entre sí, lo que obliga al uso de software especializado (en análisis de datos el más utilizado es <a href="https://es.wikipedia.org/wiki/Hadoop" target="_blank">Apache Hadoop</a>). Por otro lado, la subjetividad del término "Big Data" implica que ciertos datos podrán ser considerados "grandes" o no en función de la tecnología disponible: lo que hoy consideramos Big Data probablemente no lo sea en pocos años. O, dicho con otras palabras, si dispusiéramos de un ordenador con una capacidad de cálculo infinita, no existiría el Big Data y todos los escenarios de análisis serían considerados tradicionales. Aun cuando el uso del término Big Data está, como se ha comentado, muy de moda, es importante destacar que, si damos por buena la definición anterior, trabajar en escenarios Big Data o no, es (casi) independiente del tipo de proceso que estemos ejecutando: la única diferencia sería la tecnología sobre la que nos basamos para ejecutarlos. Sí es cierto que hay algoritmos de aprendizaje automático utilizados en minería de datos que resultan difícilmente distribuibles entre varios ordenadores (en algunos casos es sencillamente imposible), pero son excepciones que no deben desviar la atención de lo realmente importante: la computación distribuida no es más que un recurso al que recurrimos para satisfacer una necesidad de capacidad de computación impuesta por unas exigencias mayores de lo habitual, pero esto es, desde un punto de vista conceptual, irrelevante en el análisis. ', 'es') (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 934) Drupal\views\Plugin\views\field\EntityField->render_item(0, Array) (Line: 1171) Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238) template_preprocess_views_view_field(Array, 'views_view_field', Array) call_user_func_array('template_preprocess_views_view_field', Array) (Line: 287) Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 433) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 1748) Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 774) Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 713) Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 579) Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 467) Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2169) Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1538) Drupal\views\ViewExecutable->render() (Line: 199) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115) Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80) Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640) Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63) Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'f204da72-1b96-45a3-93b7-c08a2fd224c2') (Line: 124) Drupal\editor\Plugin\Filter\EditorFileReference->process('En el mundo en el que vivimos, en el que las modas y las burbujas de todo tipo marcan el ritmo de las cosas, resulta difícil no ver cómo los términos tecnológicos son, tal y como decía Rudyard Kipling en su famoso poema, "<em>tergiversados por bribones para hacer una trampa para los necios</em>". Y el término "<strong>Big Data</strong>" es uno de los más usados hoy día, frecuentemente con significados dispares y, a menudo, simplemente erróneos. Es cierto que en el área del análisis de datos resulta difícil encontrar definiciones que sean perdurables en el tiempo y se acomoden a las preferencias de todos los profesionales del área, pero el autor de estas líneas ha llegado a sentarse delante de responsables de tecnología de diversas empresas y escuchado el término "Big Data" como equivalente a "Business Intelligence" o a "Minería de datos". Y no es ni una cosa ni otra. Y de personas más alejadas del mundo de la tecnología es también frecuente oír el término con el significado de "Redes Sociales", "Internet" o "Apps" (aplicaciones normalmente para dispositivos móviles). O incluso con el significado de "Inteligencia Artificial" (aun cuando se le dé otro nombre, como "robótica" o semejante). Cada día se impone más la interpretación según la cual "Big Data" hace referencia a la cantidad ingente de datos que se generan a nivel global, ya sea provenientes de las Apps que utilizamos, de transacciones bancarias, de uso de redes sociales, del uso que hacemos de nuestro teléfono móvil... datos de los que podemos extraer valiosa información al respecto de nuestros hábitos de consumo que deberían permitirnos mejorar nuestro nivel de vida. Aun así, Big Data significa "Datos Masivos" o "Grandes Datos". Es un término sumamente subjetivo que, en sentido estricto, no hace referencia más que al tamaño de los datos involucrados en un proceso, de forma que cuando éstos son "muchos", hablamos de Big Data (en ese caso también podemos decir que nos encontramos en un "escenario de Big Data" o "de Datos Masivos"). ¿Y cuándo podemos decir que estamos trabajando con "muchos" datos?: Cuando su proceso (tanto si estamos hablando de análisis de datos como de cualquier otro) convierta las soluciones tradicionales de análisis en insuficientes. Y por "solución tradicional" aquí estamos refiriéndonos al uso de un ordenador con un procesador (o multiprocesador), una memoria y un disco duro. Es decir, cuando es posible analizar un conjunto de datos usando un único ordenador -y el análisis se realiza en los tiempos adecuados- no deberíamos hablar de datos masivos, por mucho que nos guste decir que "en mi empresa hacemos Big Data". Por el contrario, si esa solución tradicional no es suficiente, nos encontraremos, tal y como se ha comentado, en un escenario de datos masivos y para su análisis será necesario recurrir a lo que se denomina "computación distribuida", lo que implica el uso de varios ordenadores (en ocasiones incluso miles de ellos) entre los que se reparte el proceso. Lógicamente este reparto exige que los ordenadores estén coordinados entre sí, lo que obliga al uso de software especializado (en análisis de datos el más utilizado es <a href="https://es.wikipedia.org/wiki/Hadoop" target="_blank">Apache Hadoop</a>). Por otro lado, la subjetividad del término "Big Data" implica que ciertos datos podrán ser considerados "grandes" o no en función de la tecnología disponible: lo que hoy consideramos Big Data probablemente no lo sea en pocos años. O, dicho con otras palabras, si dispusiéramos de un ordenador con una capacidad de cálculo infinita, no existiría el Big Data y todos los escenarios de análisis serían considerados tradicionales. Aun cuando el uso del término Big Data está, como se ha comentado, muy de moda, es importante destacar que, si damos por buena la definición anterior, trabajar en escenarios Big Data o no, es (casi) independiente del tipo de proceso que estemos ejecutando: la única diferencia sería la tecnología sobre la que nos basamos para ejecutarlos. Sí es cierto que hay algoritmos de aprendizaje automático utilizados en minería de datos que resultan difícilmente distribuibles entre varios ordenadores (en algunos casos es sencillamente imposible), pero son excepciones que no deben desviar la atención de lo realmente importante: la computación distribuida no es más que un recurso al que recurrimos para satisfacer una necesidad de capacidad de computación impuesta por unas exigencias mayores de lo habitual, pero esto es, desde un punto de vista conceptual, irrelevante en el análisis. ', 'es') (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 934) Drupal\views\Plugin\views\field\EntityField->render_item(0, Array) (Line: 1171) Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238) template_preprocess_views_view_field(Array, 'views_view_field', Array) call_user_func_array('template_preprocess_views_view_field', Array) (Line: 287) Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 433) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 1748) Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 774) Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 713) Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 579) Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 467) Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2169) Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1538) Drupal\views\ViewExecutable->render() (Line: 199) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147) Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80) Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640) Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63) Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'f204da72-1b96-45a3-93b7-c08a2fd224c2') (Line: 124) Drupal\editor\Plugin\Filter\EditorFileReference->process('En el mundo en el que vivimos, en el que las modas y las burbujas de todo tipo marcan el ritmo de las cosas, resulta difícil no ver cómo los términos tecnológicos son, tal y como decía Rudyard Kipling en su famoso poema, "<em>tergiversados por bribones para hacer una trampa para los necios</em>". Y el término "<strong>Big Data</strong>" es uno de los más usados hoy día, frecuentemente con significados dispares y, a menudo, simplemente erróneos. Es cierto que en el área del análisis de datos resulta difícil encontrar definiciones que sean perdurables en el tiempo y se acomoden a las preferencias de todos los profesionales del área, pero el autor de estas líneas ha llegado a sentarse delante de responsables de tecnología de diversas empresas y escuchado el término "Big Data" como equivalente a "Business Intelligence" o a "Minería de datos". Y no es ni una cosa ni otra. Y de personas más alejadas del mundo de la tecnología es también frecuente oír el término con el significado de "Redes Sociales", "Internet" o "Apps" (aplicaciones normalmente para dispositivos móviles). O incluso con el significado de "Inteligencia Artificial" (aun cuando se le dé otro nombre, como "robótica" o semejante). Cada día se impone más la interpretación según la cual "Big Data" hace referencia a la cantidad ingente de datos que se generan a nivel global, ya sea provenientes de las Apps que utilizamos, de transacciones bancarias, de uso de redes sociales, del uso que hacemos de nuestro teléfono móvil... datos de los que podemos extraer valiosa información al respecto de nuestros hábitos de consumo que deberían permitirnos mejorar nuestro nivel de vida. Aun así, Big Data significa "Datos Masivos" o "Grandes Datos". Es un término sumamente subjetivo que, en sentido estricto, no hace referencia más que al tamaño de los datos involucrados en un proceso, de forma que cuando éstos son "muchos", hablamos de Big Data (en ese caso también podemos decir que nos encontramos en un "escenario de Big Data" o "de Datos Masivos"). ¿Y cuándo podemos decir que estamos trabajando con "muchos" datos?: Cuando su proceso (tanto si estamos hablando de análisis de datos como de cualquier otro) convierta las soluciones tradicionales de análisis en insuficientes. Y por "solución tradicional" aquí estamos refiriéndonos al uso de un ordenador con un procesador (o multiprocesador), una memoria y un disco duro. Es decir, cuando es posible analizar un conjunto de datos usando un único ordenador -y el análisis se realiza en los tiempos adecuados- no deberíamos hablar de datos masivos, por mucho que nos guste decir que "en mi empresa hacemos Big Data". Por el contrario, si esa solución tradicional no es suficiente, nos encontraremos, tal y como se ha comentado, en un escenario de datos masivos y para su análisis será necesario recurrir a lo que se denomina "computación distribuida", lo que implica el uso de varios ordenadores (en ocasiones incluso miles de ellos) entre los que se reparte el proceso. Lógicamente este reparto exige que los ordenadores estén coordinados entre sí, lo que obliga al uso de software especializado (en análisis de datos el más utilizado es <a href="https://es.wikipedia.org/wiki/Hadoop" target="_blank">Apache Hadoop</a>). Por otro lado, la subjetividad del término "Big Data" implica que ciertos datos podrán ser considerados "grandes" o no en función de la tecnología disponible: lo que hoy consideramos Big Data probablemente no lo sea en pocos años. O, dicho con otras palabras, si dispusiéramos de un ordenador con una capacidad de cálculo infinita, no existiría el Big Data y todos los escenarios de análisis serían considerados tradicionales. Aun cuando el uso del término Big Data está, como se ha comentado, muy de moda, es importante destacar que, si damos por buena la definición anterior, trabajar en escenarios Big Data o no, es (casi) independiente del tipo de proceso que estemos ejecutando: la única diferencia sería la tecnología sobre la que nos basamos para ejecutarlos. Sí es cierto que hay algoritmos de aprendizaje automático utilizados en minería de datos que resultan difícilmente distribuibles entre varios ordenadores (en algunos casos es sencillamente imposible), pero son excepciones que no deben desviar la atención de lo realmente importante: la computación distribuida no es más que un recurso al que recurrimos para satisfacer una necesidad de capacidad de computación impuesta por unas exigencias mayores de lo habitual, pero esto es, desde un punto de vista conceptual, irrelevante en el análisis. ', 'es') (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 934) Drupal\views\Plugin\views\field\EntityField->render_item(0, Array) (Line: 1171) Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238) template_preprocess_views_view_field(Array, 'views_view_field', Array) call_user_func_array('template_preprocess_views_view_field', Array) (Line: 287) Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 433) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 1748) Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 774) Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 713) Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 579) Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 467) Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2169) Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1538) Drupal\views\ViewExecutable->render() (Line: 199) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115) Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80) Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640) Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63) Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'a3a5cd8a-094a-4e72-9f39-5498edbf3624') (Line: 95) Drupal\editor\Plugin\Filter\EditorFileReference->process('La denominada "Closed Loop Marketing" (CLM) es una estrategia de Marketing muy usada por responsables de Marketing de diversas industrias, incluyendo la farmacéutica. Brevemente explicada, podemos definirla como el proceso de envío de un mensaje a tu público objetivo, la recopilación de feedback, su análisis y posterior modificación del mensaje con el objetivo de implementar un sistema de mejora continua que afecte tanto a tu relación con tu público objetivo como, no podría ser de otra forma, a la optimización de tus ventas. Alrededor del concepto CLM hay todo un mercado creado para satisfacer las necesidades de, normalmente, el “<em>Product Manager</em>” o “<em>Marketing Manager</em>”: software capaz de almacenar material de marketing en el que toda la actividad resultante de la interacción con tu público objetivo es trazada con detalle, CRMs (o complementos a CRMs) que permitan asociar mensajes con clientes o potenciales clientes y, de esta forma, realizar un estudio personalizado o segmentado del impacto de dichos mensajes, gestores de creación de contenidos optimizados para facilitar el proceso de análisis… Y hay empresas -incluyendo grandes compañías farmacéuticas- cuya actividad comercial depende de forma notable de la correcta completitud de esta cadena de procesos y, con este objetivo, invierten ingentes cantidades de dinero en todos los productos y servicios mencionados, en la preparación de los mensajes, en su adecuada entrega al público objetivo, en la recopilación de ese feedback… Hasta que el ciclo alcanza la fase de análisis. Porque la experiencia dicta que muy pocos profesionales -de Marketing, en este caso- disponen de las herramientas, conocimientos o disposición adecuados para realizar un mínimo análisis de los datos recogidos que permita la mejora continua buscada por esta estrategia de Marketing. Y la cruel realidad es que, para el tipo de resultados buscados, frecuentemente no hace falta software excesivamente complejo ni grandes inversiones en hardware o personal técnico. En muchos casos sería suficiente usar Excel (software instalado en varios cientos de millones de ordenadores en todo el mundo, según las más prudentes estimaciones) para, mediante una sencilla tabla dinámica, ser capaces de extraer la información buscada. Pero incluso esta solución es demasiado compleja para un mercado que, admitámoslo, no está acostumbrado al concepto de “análisis”. Podríamos argumentar que hay grandes compañías, con independencia del sector en el que operen, que tienen departamentos completos dedicados al Business Intelligence así como grandes inversiones realizadas en software y hardware, pero reconozcamos también que estas empresas suponen una fracción mínima del mercado. Aunque la industria farmacéutica no es más que un buen ejemplo, todo esto lleva a una conclusión: el mercado está, en general, y desde este punto de vista, en una fase tan incipiente que, para la práctica mayoría de las empresas, no es la complejidad de la solución ofrecida la que va a suponer la diferencia entre alcanzar y no alcanzar la meta perseguida. Por el contrario, es la sencillez de la solución, la correcta formación de sus profesionales y una consultoría adecuada lo que va a permitir a ese porcentaje de mercado “<em>cerrar el círculo</em>”.', 'es') (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 934) Drupal\views\Plugin\views\field\EntityField->render_item(0, Array) (Line: 1171) Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238) template_preprocess_views_view_field(Array, 'views_view_field', Array) call_user_func_array('template_preprocess_views_view_field', Array) (Line: 287) Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 433) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 1748) Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 774) Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 713) Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 579) Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 467) Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2169) Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1538) Drupal\views\ViewExecutable->render() (Line: 199) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147) Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80) Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640) Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63) Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'a3a5cd8a-094a-4e72-9f39-5498edbf3624') (Line: 95) Drupal\editor\Plugin\Filter\EditorFileReference->process('La denominada "Closed Loop Marketing" (CLM) es una estrategia de Marketing muy usada por responsables de Marketing de diversas industrias, incluyendo la farmacéutica. Brevemente explicada, podemos definirla como el proceso de envío de un mensaje a tu público objetivo, la recopilación de feedback, su análisis y posterior modificación del mensaje con el objetivo de implementar un sistema de mejora continua que afecte tanto a tu relación con tu público objetivo como, no podría ser de otra forma, a la optimización de tus ventas. Alrededor del concepto CLM hay todo un mercado creado para satisfacer las necesidades de, normalmente, el “<em>Product Manager</em>” o “<em>Marketing Manager</em>”: software capaz de almacenar material de marketing en el que toda la actividad resultante de la interacción con tu público objetivo es trazada con detalle, CRMs (o complementos a CRMs) que permitan asociar mensajes con clientes o potenciales clientes y, de esta forma, realizar un estudio personalizado o segmentado del impacto de dichos mensajes, gestores de creación de contenidos optimizados para facilitar el proceso de análisis… Y hay empresas -incluyendo grandes compañías farmacéuticas- cuya actividad comercial depende de forma notable de la correcta completitud de esta cadena de procesos y, con este objetivo, invierten ingentes cantidades de dinero en todos los productos y servicios mencionados, en la preparación de los mensajes, en su adecuada entrega al público objetivo, en la recopilación de ese feedback… Hasta que el ciclo alcanza la fase de análisis. Porque la experiencia dicta que muy pocos profesionales -de Marketing, en este caso- disponen de las herramientas, conocimientos o disposición adecuados para realizar un mínimo análisis de los datos recogidos que permita la mejora continua buscada por esta estrategia de Marketing. Y la cruel realidad es que, para el tipo de resultados buscados, frecuentemente no hace falta software excesivamente complejo ni grandes inversiones en hardware o personal técnico. En muchos casos sería suficiente usar Excel (software instalado en varios cientos de millones de ordenadores en todo el mundo, según las más prudentes estimaciones) para, mediante una sencilla tabla dinámica, ser capaces de extraer la información buscada. Pero incluso esta solución es demasiado compleja para un mercado que, admitámoslo, no está acostumbrado al concepto de “análisis”. Podríamos argumentar que hay grandes compañías, con independencia del sector en el que operen, que tienen departamentos completos dedicados al Business Intelligence así como grandes inversiones realizadas en software y hardware, pero reconozcamos también que estas empresas suponen una fracción mínima del mercado. Aunque la industria farmacéutica no es más que un buen ejemplo, todo esto lleva a una conclusión: el mercado está, en general, y desde este punto de vista, en una fase tan incipiente que, para la práctica mayoría de las empresas, no es la complejidad de la solución ofrecida la que va a suponer la diferencia entre alcanzar y no alcanzar la meta perseguida. Por el contrario, es la sencillez de la solución, la correcta formación de sus profesionales y una consultoría adecuada lo que va a permitir a ese porcentaje de mercado “<em>cerrar el círculo</em>”.', 'es') (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 934) Drupal\views\Plugin\views\field\EntityField->render_item(0, Array) (Line: 1171) Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238) template_preprocess_views_view_field(Array, 'views_view_field', Array) call_user_func_array('template_preprocess_views_view_field', Array) (Line: 287) Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 433) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 1748) Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 774) Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 713) Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 579) Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 467) Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2169) Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1538) Drupal\views\ViewExecutable->render() (Line: 199) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('file_load_multiple') (Line: 696) Drupal\Core\Entity\Sql\SqlContentEntityStorage->buildQuery(Array) (Line: 422) Drupal\Core\Entity\Sql\SqlContentEntityStorage->getFromStorage(Array) (Line: 393) Drupal\Core\Entity\Sql\SqlContentEntityStorage->doLoadMultiple(Array) (Line: 346) Drupal\Core\Entity\EntityStorageBase->loadMultiple(Array) (Line: 641) Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63) Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'a3a5cd8a-094a-4e72-9f39-5498edbf3624') (Line: 95) Drupal\editor\Plugin\Filter\EditorFileReference->process('La denominada "Closed Loop Marketing" (CLM) es una estrategia de Marketing muy usada por responsables de Marketing de diversas industrias, incluyendo la farmacéutica. Brevemente explicada, podemos definirla como el proceso de envío de un mensaje a tu público objetivo, la recopilación de feedback, su análisis y posterior modificación del mensaje con el objetivo de implementar un sistema de mejora continua que afecte tanto a tu relación con tu público objetivo como, no podría ser de otra forma, a la optimización de tus ventas. Alrededor del concepto CLM hay todo un mercado creado para satisfacer las necesidades de, normalmente, el “<em>Product Manager</em>” o “<em>Marketing Manager</em>”: software capaz de almacenar material de marketing en el que toda la actividad resultante de la interacción con tu público objetivo es trazada con detalle, CRMs (o complementos a CRMs) que permitan asociar mensajes con clientes o potenciales clientes y, de esta forma, realizar un estudio personalizado o segmentado del impacto de dichos mensajes, gestores de creación de contenidos optimizados para facilitar el proceso de análisis… Y hay empresas -incluyendo grandes compañías farmacéuticas- cuya actividad comercial depende de forma notable de la correcta completitud de esta cadena de procesos y, con este objetivo, invierten ingentes cantidades de dinero en todos los productos y servicios mencionados, en la preparación de los mensajes, en su adecuada entrega al público objetivo, en la recopilación de ese feedback… Hasta que el ciclo alcanza la fase de análisis. Porque la experiencia dicta que muy pocos profesionales -de Marketing, en este caso- disponen de las herramientas, conocimientos o disposición adecuados para realizar un mínimo análisis de los datos recogidos que permita la mejora continua buscada por esta estrategia de Marketing. Y la cruel realidad es que, para el tipo de resultados buscados, frecuentemente no hace falta software excesivamente complejo ni grandes inversiones en hardware o personal técnico. En muchos casos sería suficiente usar Excel (software instalado en varios cientos de millones de ordenadores en todo el mundo, según las más prudentes estimaciones) para, mediante una sencilla tabla dinámica, ser capaces de extraer la información buscada. Pero incluso esta solución es demasiado compleja para un mercado que, admitámoslo, no está acostumbrado al concepto de “análisis”. Podríamos argumentar que hay grandes compañías, con independencia del sector en el que operen, que tienen departamentos completos dedicados al Business Intelligence así como grandes inversiones realizadas en software y hardware, pero reconozcamos también que estas empresas suponen una fracción mínima del mercado. Aunque la industria farmacéutica no es más que un buen ejemplo, todo esto lleva a una conclusión: el mercado está, en general, y desde este punto de vista, en una fase tan incipiente que, para la práctica mayoría de las empresas, no es la complejidad de la solución ofrecida la que va a suponer la diferencia entre alcanzar y no alcanzar la meta perseguida. Por el contrario, es la sencillez de la solución, la correcta formación de sus profesionales y una consultoría adecuada lo que va a permitir a ese porcentaje de mercado “<em>cerrar el círculo</em>”.', 'es') (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 934) Drupal\views\Plugin\views\field\EntityField->render_item(0, Array) (Line: 1171) Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238) template_preprocess_views_view_field(Array, 'views_view_field', Array) call_user_func_array('template_preprocess_views_view_field', Array) (Line: 287) Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 433) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 1748) Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 774) Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 713) Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 579) Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 467) Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2169) Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1538) Drupal\views\ViewExecutable->render() (Line: 199) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterMetaData is deprecated in Drupal\Core\Database\Query\Select->addMetaData() (line 178 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addMetaData('entity_type', 'file') (Line: 115) Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80) Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640) Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63) Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'a3a5cd8a-094a-4e72-9f39-5498edbf3624') (Line: 124) Drupal\editor\Plugin\Filter\EditorFileReference->process('La denominada "Closed Loop Marketing" (CLM) es una estrategia de Marketing muy usada por responsables de Marketing de diversas industrias, incluyendo la farmacéutica. Brevemente explicada, podemos definirla como el proceso de envío de un mensaje a tu público objetivo, la recopilación de feedback, su análisis y posterior modificación del mensaje con el objetivo de implementar un sistema de mejora continua que afecte tanto a tu relación con tu público objetivo como, no podría ser de otra forma, a la optimización de tus ventas. Alrededor del concepto CLM hay todo un mercado creado para satisfacer las necesidades de, normalmente, el “<em>Product Manager</em>” o “<em>Marketing Manager</em>”: software capaz de almacenar material de marketing en el que toda la actividad resultante de la interacción con tu público objetivo es trazada con detalle, CRMs (o complementos a CRMs) que permitan asociar mensajes con clientes o potenciales clientes y, de esta forma, realizar un estudio personalizado o segmentado del impacto de dichos mensajes, gestores de creación de contenidos optimizados para facilitar el proceso de análisis… Y hay empresas -incluyendo grandes compañías farmacéuticas- cuya actividad comercial depende de forma notable de la correcta completitud de esta cadena de procesos y, con este objetivo, invierten ingentes cantidades de dinero en todos los productos y servicios mencionados, en la preparación de los mensajes, en su adecuada entrega al público objetivo, en la recopilación de ese feedback… Hasta que el ciclo alcanza la fase de análisis. Porque la experiencia dicta que muy pocos profesionales -de Marketing, en este caso- disponen de las herramientas, conocimientos o disposición adecuados para realizar un mínimo análisis de los datos recogidos que permita la mejora continua buscada por esta estrategia de Marketing. Y la cruel realidad es que, para el tipo de resultados buscados, frecuentemente no hace falta software excesivamente complejo ni grandes inversiones en hardware o personal técnico. En muchos casos sería suficiente usar Excel (software instalado en varios cientos de millones de ordenadores en todo el mundo, según las más prudentes estimaciones) para, mediante una sencilla tabla dinámica, ser capaces de extraer la información buscada. Pero incluso esta solución es demasiado compleja para un mercado que, admitámoslo, no está acostumbrado al concepto de “análisis”. Podríamos argumentar que hay grandes compañías, con independencia del sector en el que operen, que tienen departamentos completos dedicados al Business Intelligence así como grandes inversiones realizadas en software y hardware, pero reconozcamos también que estas empresas suponen una fracción mínima del mercado. Aunque la industria farmacéutica no es más que un buen ejemplo, todo esto lleva a una conclusión: el mercado está, en general, y desde este punto de vista, en una fase tan incipiente que, para la práctica mayoría de las empresas, no es la complejidad de la solución ofrecida la que va a suponer la diferencia entre alcanzar y no alcanzar la meta perseguida. Por el contrario, es la sencillez de la solución, la correcta formación de sus profesionales y una consultoría adecuada lo que va a permitir a ese porcentaje de mercado “<em>cerrar el círculo</em>”.', 'es') (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 934) Drupal\views\Plugin\views\field\EntityField->render_item(0, Array) (Line: 1171) Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238) template_preprocess_views_view_field(Array, 'views_view_field', Array) call_user_func_array('template_preprocess_views_view_field', Array) (Line: 287) Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 433) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 1748) Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 774) Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 713) Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 579) Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 467) Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2169) Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1538) Drupal\views\ViewExecutable->render() (Line: 199) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Creation of dynamic property Drupal\mysql\Driver\Database\mysql\Select::$alterTags is deprecated in Drupal\Core\Database\Query\Select->addTag() (line 149 of core/lib/Drupal/Core/Database/Query/Select.php).
Drupal\Core\Database\Query\Select->addTag('entity_query') (Line: 147) Drupal\Core\Entity\Query\Sql\Query->prepare() (Line: 80) Drupal\Core\Entity\Query\Sql\Query->execute() (Line: 640) Drupal\Core\Entity\EntityStorageBase->loadByProperties(Array) (Line: 63) Drupal\Core\Entity\EntityRepository->loadEntityByUuid('file', 'a3a5cd8a-094a-4e72-9f39-5498edbf3624') (Line: 124) Drupal\editor\Plugin\Filter\EditorFileReference->process('La denominada "Closed Loop Marketing" (CLM) es una estrategia de Marketing muy usada por responsables de Marketing de diversas industrias, incluyendo la farmacéutica. Brevemente explicada, podemos definirla como el proceso de envío de un mensaje a tu público objetivo, la recopilación de feedback, su análisis y posterior modificación del mensaje con el objetivo de implementar un sistema de mejora continua que afecte tanto a tu relación con tu público objetivo como, no podría ser de otra forma, a la optimización de tus ventas. Alrededor del concepto CLM hay todo un mercado creado para satisfacer las necesidades de, normalmente, el “<em>Product Manager</em>” o “<em>Marketing Manager</em>”: software capaz de almacenar material de marketing en el que toda la actividad resultante de la interacción con tu público objetivo es trazada con detalle, CRMs (o complementos a CRMs) que permitan asociar mensajes con clientes o potenciales clientes y, de esta forma, realizar un estudio personalizado o segmentado del impacto de dichos mensajes, gestores de creación de contenidos optimizados para facilitar el proceso de análisis… Y hay empresas -incluyendo grandes compañías farmacéuticas- cuya actividad comercial depende de forma notable de la correcta completitud de esta cadena de procesos y, con este objetivo, invierten ingentes cantidades de dinero en todos los productos y servicios mencionados, en la preparación de los mensajes, en su adecuada entrega al público objetivo, en la recopilación de ese feedback… Hasta que el ciclo alcanza la fase de análisis. Porque la experiencia dicta que muy pocos profesionales -de Marketing, en este caso- disponen de las herramientas, conocimientos o disposición adecuados para realizar un mínimo análisis de los datos recogidos que permita la mejora continua buscada por esta estrategia de Marketing. Y la cruel realidad es que, para el tipo de resultados buscados, frecuentemente no hace falta software excesivamente complejo ni grandes inversiones en hardware o personal técnico. En muchos casos sería suficiente usar Excel (software instalado en varios cientos de millones de ordenadores en todo el mundo, según las más prudentes estimaciones) para, mediante una sencilla tabla dinámica, ser capaces de extraer la información buscada. Pero incluso esta solución es demasiado compleja para un mercado que, admitámoslo, no está acostumbrado al concepto de “análisis”. Podríamos argumentar que hay grandes compañías, con independencia del sector en el que operen, que tienen departamentos completos dedicados al Business Intelligence así como grandes inversiones realizadas en software y hardware, pero reconozcamos también que estas empresas suponen una fracción mínima del mercado. Aunque la industria farmacéutica no es más que un buen ejemplo, todo esto lleva a una conclusión: el mercado está, en general, y desde este punto de vista, en una fase tan incipiente que, para la práctica mayoría de las empresas, no es la complejidad de la solución ofrecida la que va a suponer la diferencia entre alcanzar y no alcanzar la meta perseguida. Por el contrario, es la sencillez de la solución, la correcta formación de sus profesionales y una consultoría adecuada lo que va a permitir a ese porcentaje de mercado “<em>cerrar el círculo</em>”.', 'es') (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 934) Drupal\views\Plugin\views\field\EntityField->render_item(0, Array) (Line: 1171) Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238) template_preprocess_views_view_field(Array, 'views_view_field', Array) call_user_func_array('template_preprocess_views_view_field', Array) (Line: 287) Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 433) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 1748) Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 774) Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array) (Line: 713) Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 579) Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 467) Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2169) Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1538) Drupal\views\ViewExecutable->render() (Line: 199) Drupal\views\Plugin\views\display\Page->execute() (Line: 1635) Drupal\views\ViewExecutable->executeDisplay('page_1', Array) (Line: 81) Drupal\views\Element\View::preRenderViewElement(Array) call_user_func_array(Array, Array) (Line: 101) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 374) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 242) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 580) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 235) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Return type of Drupal\google_analytics\Component\Render\GoogleAnalyticsJavaScriptSnippet::jsonSerialize() should either be compatible with JsonSerializable::jsonSerialize(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in include() (line 10 of modules/contrib/google_analytics/src/Component/Render/GoogleAnalyticsJavaScriptSnippet.php).
include('/var/www/vhosts/interactivechaos.ovh/httpdocs/modules/contrib/google_analytics/src/Component/Render/GoogleAnalyticsJavaScriptSnippet.php') (Line: 578) Composer\Autoload\ClassLoader::Composer\Autoload\{closure}('/var/www/vhosts/interactivechaos.ovh/httpdocs/modules/contrib/google_analytics/src/Component/Render/GoogleAnalyticsJavaScriptSnippet.php') (Line: 432) Composer\Autoload\ClassLoader->loadClass('Drupal\google_analytics\Component\Render\GoogleAnalyticsJavaScriptSnippet') (Line: 372) google_analytics_page_attachments(Array) (Line: 313) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}(Object, 'google_analytics') (Line: 405) Drupal\Core\Extension\ModuleHandler->invokeAllWith('page_attachments', Object) (Line: 310) Drupal\Core\Render\MainContent\HtmlRenderer->invokePageAttachmentHooks(Array) (Line: 288) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
- Deprecated function: Use of "static" in callables is deprecated in Drupal\user\Entity\Role::postLoad() (line 172 of core/modules/user/src/Entity/Role.php).
Drupal\user\Entity\Role::postLoad(Object, Array) (Line: 423) Drupal\Core\Entity\EntityStorageBase->postLoad(Array) (Line: 353) Drupal\Core\Entity\EntityStorageBase->loadMultiple() (Line: 126) eu_cookie_compliance_page_attachments(Array) (Line: 313) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}(Object, 'eu_cookie_compliance') (Line: 405) Drupal\Core\Extension\ModuleHandler->invokeAllWith('page_attachments', Object) (Line: 310) Drupal\Core\Render\MainContent\HtmlRenderer->invokePageAttachmentHooks(Array) (Line: 288) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 132) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 142) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 174) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 81) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 713) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
Blog
Aun cuando mi actividad como formador comenzó a principios de los años 90, cuando nos referimos al mundo de la Ciencia de los Datos (algoritmos de Inteligencia Artificial, Business Intelligence...) esta experiencia queda reducida a 4 o 5 años -en algunas áreas concretas es menor-, siendo ésta más intensa desde finales de 2018. En este período he tenido ocasión de conocer a muchas decenas -centenas, probablemente- de profesionales y estudiantes de máster y, en ocasiones, me han preguntado mi opinión al respecto de cómo obtener el máximo provecho profesional de sus estudios.
Tuve ocasión recientemente de asistir a una ponencia sobre la “justicia” e “injusticia” de los algoritmos. Se planteó el concepto de sesgo en los algoritmos (debido a datos descompensados, insuficientes, etc.) y se planteó cómo los algoritmos deberían ser entrenados para que no planteasen diferencias en variables “sensibles” (la edad, el sexo, la raza…).
Según se ha comentado en un artículo anterior, aun cuando la interpretación del término "Big Data" es variada, al autor de este artículo le gusta hablar de Big Data cuando nos vemos obligados a recurrir a la computación distribuida para analizar un conjunto de datos, pero ¿qué puede llevarnos a esta necesidad? Hay un par de factores principales:
¿Quién no tiene un familiar en Nigeria intentando enviarnos una gran cantidad de dinero? ¿o bellas mujeres Rusia que quieren casarse con nosotros? Todos ellos tienen una cosa en común: tu tarjeta de crédito siempre está involucrada en la transacción, de una forma u otra.
En el mundo en el que vivimos, en el que las modas y las burbujas de todo tipo marcan el ritmo de las cosas, resulta difícil no ver cómo los términos tecnológicos son, tal y como decía Rudyard Kipling en su famoso poema, "tergiversados por bribones para hacer una trampa para los necios". Y el término "Big Data" es uno de los más usados hoy día, frecuentemente con significados dispares y, a menudo, simplemente erróneos.
La denominada "Closed Loop Marketing" (CLM) es una estrategia de Marketing muy usada por responsables de Marketing de diversas industrias, incluyendo la farmacéutica. Brevemente explicada, podemos definirla como el proceso de envío de un mensaje a tu público objetivo, la recopilación de feedback, su análisis y posterior modificación del mensaje con el objetivo de implementar un sistema de mejora continua que afecte tanto a tu relación con tu público objetivo como, no podría ser de otra forma, a la optimización de tus ventas.