Trasponer una matriz en Python

La definción técnica del término matriz traspuesta es “el resultado de reordenar la matriz original mediante el cambio de filas por columnas y las columnas por filas en una nueva matriz”. Imaginemos que tenemos un array en Python tal que así:

x = [[1,2,3],
  [2,3,1],
  [3,1,2]]

Ahora queremos meter esa matriz en otra variable, pero tras trasponerla. Si bien en la mayoría de los lenguajes es posible trasponer la matriz utilizando una serie de bucles anidados, en Python podremos hacerlo de forma muy sencilla sirviéndonos de la función zip() y el operador *. Para almacenar la matriz traspuesta en otra variable bastaría con hacer:

y=zip(*x)

Y solo con esa línea ya habría traspuesto nuestra matriz original.

Televisión en tu PC o tablet: plataformas de streaming gratuitas.

Hace años que no tengo tele, en concreto desde el 2016. No es ningún tipo de alegato pseudointelectual como el que hacía un profesor de filosofía que tuve en el instituto, que decía no tenerla para mantener su cabeza limpia y pura y seguía con una larga reivindicación de la radio (como si las tertulias radiofónicas no fuesen también pozos de desinformación y embrutecimiento, vamos).

En todo caso, aquí ya todos sabéis que como mucha gente veo películas, series, documentales y retransmisiones deportivas, así que no hay nada de reivindicación en decir que no tengo aparato de televisión, simplemente utilizo un ordenador viejo para ello porque me resulta más práctico y porque así tengo en el mismo electrodoméstico televisión, radio, reproductor de música y consola de videojuegos. Si como yo eres de los que no van a invertir en una tele porque le resulta más barato o más cómodo usar un ordenador, pero no quieres dejarte una parte de tu salario en pagar servicios de streaming, aquí van unas cuantas opciones gratis para usar tu ordenador o tablet como tele.

Photo by Tim Mossholder on Pexels.com

Tivify: Tivify es una plataforma de streaming que tiene tres planes de precios, uno de los cuales es gratis (que es lo que nos interesa en este artículo). Básicamente lo que incluye esta plataforma son canales de TDT que emiten en España, tanto los de nivel estatal como los autonómicos y a mayores incluye algún canal internacional de noticias. Si bien muchas de estas cadenas son también accesibles a través de sus webs oficiales en esta plataforma consigues la comodidad de poder tenerlas todas juntas. Tiene además dos planes de pago que aumentan la capacidad para guardar grabaciones, dan acceso a canales temáticos y permiten vincular más dispositivos a la cuenta.

VIX: Se trata de una plataforma de streaming financiada por publicidad, incluye series, cine, concursos, gastronomía o programas de true crime. Hay sobre todo muchas series y telenovelas producidas en América Latina, programas para televisiones locales y su sección de cine se compone principalmente de telefilmes o producciones “directas a vídeo“. Ojo, que si te gusta el cine de bichoños cutres apocalípticos te puedes encontrar una buena cantidad de joyitas para tardes de domingo lluviosas.

iQiyi: ¿Eres fan del K-Pop o de la cultura surcoreana? En los últimos años los productos de entretenimiento provenientes de Corea del Sur han ganado mucha popularidad en occidente. La plataforma iQiyi ofrece series y programas de espectáculos surcoreanos. Además también tiene una enorme oferta de cine de serie B producido en China, películas de acción de Hong Kong, algo de anime, concursos musicales de otros países asiáticos… Ofrecen un plan de pago VIP con acceso a algunos contenidos exclusivos, vídeo en alta definción, descargas para ver sin conexión, etc.

PlutoTV: De PlutoTV ya hablamos aquí en el pasado, cuando todavía no estaba oficialmente en España pero podía ser accedido. Es una plataforma con un montón de canales que emiten programas de televisión de forma lineal, la mayoría de ellos temáticos y dedicados a emitir un solo programa o serie las 24 horas del día. Estos canalaes van cambiando con el paso del tiempo y también se van añadiendo nuevas opciones. Al momento de escribir esto hay más de 70 canales y la promesa de la plataforma es llegar a 100 antes de acabar el año.

RakutenTV Free: RakutenTV es una plataforma principalmente de pago, pero tiene una pequeña sección de su catálogo que puede ser accedida de forma gratuita. Esta oferta gratis incluye principalmente programas de reportajes deportivos o sensacionalistas, programas y series infantiles y una selección de películas que se renueva mes a mes. No esperes estrenos o grandes clásicos, pero siempre hay alguna película decente.

La Liga Sports TV: Si lo tuyo son las retransmisiones deportivas este canal financiado por la La Liga (la empresa que organiza la liga de fútbol profesional en España) ofrece deportes varios como fútbol sala, gimnasia, atletismo, balonmano, baloncesto, fútbol. Al día en que escribí esto ofertaban la Liga Nacional de Fútbol Sala española, la liga ASOBAL de balonmano, las ligas LEB oro y LEB plata de baloncesto (segunda y tercera categorías del baloncesto español), la Premier League Rusa de fútbol, la Champions League Asiática de fútbol y varios campeonatos nacionales españoles de distintos deportes, incluso alguna cosa de e-sports.

UEFA TV: Edito para añadir esta plataforma para los futboleros. No tiene gran cosa: resúmenes semanales de las competiciones europeas dependientes de la UEFA (fútbol masculino, femenino y fútbol sala) y algunos reportajes y entrevistas. Lo interesante es que de vez en cuando ponen partidos enteros en directo: no te esperes la Champions o la Europa League porque los derechos se venden caros, pero sí partidos de torneos de categorías inferiores, partidos de selecciones absolutas de la League of Nations o de las fases de clasificación para Eurocopas o Mundiales.

SQL-Server 2008 R2: “El valor de la línea de comandos INSTALLSHAREDWOWDIR no es válido. Compruebe que la ruta de acceso especificada es válida y diferente de la ruta de acceso de INSTALLSHAREDDIR”

Pues llevo unas horas pegándome con este problema. Ayer un compañero se puso a instalar un SQL-Server 2008 y se le ocurrió poner la misma ruta para los recursos compartidos de la versión de x86 y para la de 64 bits. Cuando llegué hoy a restaurar la base de datos que tenía que ir en ese equipo me encontré con que no podía restaurarla.

Decidí que lo mejor sería desinstalar el motor de base de datos y volver a instalarlo, pero me saltó el error del título: “El valor de la línea de comandos INSTALLSHAREDWOWDIR no es válido. Compruebe que la ruta de acceso especificada es válida y diferente de la ruta de acceso de INSTALLSHAREDDIR. Como el tiempo apretaba y no acababa de encontrar en google ninguna solución para cambiar esas rutas pensé que la solución rápida sería instalar otra instancia con otro nombre y usar esa, dejando la primera mal instalada apagada, pero me encontré con que el instalador tampoco me permitía cambiar la ruta duplicada al iniciar una nueva instalación.

Busqué en Google pero no había casi pistas, de hecho el ejemplo que encontraba no solía ser para esto problema sino para otro en el que uno de los directorios está definido y el otro no, que no era el caso. La cosa era que si el programa de instalación estaba abriendo ya con una ruta cargada esa ruta tenía que estar definida en algún sitio. Fiándome de un foro busqué un fichero que se llamase config.ini o ConfigurationFile.ini sin suerte. Al final encontré esta entrada en otro blog donde alguien había tenido ese problema cuando intentó actualizar de un 2008 a un 2014.

La cosa es que la ruta está guardada en el registro del sistema, en concreto en la clave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-518\Components\0D1F366D0FE0E404F8C15EE4F1C15094 para INSTALLSHAREDDIR y en la clave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\ Components\C90BFAC020D87EA46811C836AD3C507F para INSTALLSHAREDWOWDIR. Decidí modificar todos los valores y cambiarlos por la ruta por defecto que suele usar SQL-Server para no tener ya más quebraderos de cabeza. Tras el cambio no tuve ni que reiniciar, volví a abrir el programa de instalación y me permitió desinstalar y volver a instalar correctamente.

Electron.js: obtener el nombre, la versión o la arquitectura de nuestro sistema operativo

Bueno, pues hace unas semanas que en el trabajo estoy currando con el framework Electron.js, que básicamente nos permite transformar aplicaciones web en aplicaciones nativas de escritorio. En mi caso es para actualizar un software de intranet que dependía de ActiveX y de Internet Explorer en exceso. En todo caso vamos a ver algunas cosillas sobre Electron, una de ellas es ¿cómo puedo obtener los datos sobre mi sistema operativo? Pues Electron incluye un módulo para eso:

Lo primero será importar el módulo “os“, para que la aplicación pueda trabajar con el sistema operativo anfitrión. Para el ejemplo crearemos una variable llamada también os (por recordarlo bien) para almacenar dicho objeto:

var os = require("os");

Ahora veamos ¿cómo haríamos para ver la arquitectura de nuestro sistema operativo? Pues llamando al método arch().

var arquitectura = os.arch();

¿Y para ver el nombre del sistema operativo? Pues tenemos dos opciones: el método type() nos devolverá el tipo genérico (Linux, Darwin o Windows) y el método platform() nos devolverá un resultado más concreto (darwin,freebsd,sunos,win32…). Finalmente el método version() nos devolverá la versión del sistema operativo:

var tipo = os.type();
var plataforma = os.platform();
var version = os.version();

OpenSSL: verificando claves, mensajes, autoridades…

OpenSSL es uno de los proyectos de software libre más exitosos entre profesionales TIC pues nos ofrece un conjunto importante y completo de herramientas criptográficas. Aunque el nombre haga referencia directamente a SSL, se creó en 1998 como implementación open-source de este protocolo, también implementa desde hace años soporte para el protocolo TLS.

Veamos ahora algunos comandos de verificación con OpenSSL:

Para verificar una clave privada:

openssl rsa -in clavedeprueba.key –check

Para verificar un archivo certificado:

openssl x509 -in archivodeprueba.pem -text –noout

Para verificar la autoridad firmante:

openssl x509 -in archivodeprueba.pem -noout -issuer -issuer_hash

Para verificar un hash:

openssl x509 -noout -hash -in archivodeprueba.pem

Para verificar la fecha de vencimiento de un certificado:

openssl x509 -noout -in archivodeprueba.pem -dates

Diferencia entre TLS y SSL

Me pregunta un cliente, que estaba configurando un cliente de correo, la diferencia entre TLS y SSL. Supongo que más gente tendará interés así que lo cuento por aquí:

Tanto TLS como SSL son protocolos de cifrado de datos que se aplican en la capa de transporte en internet (protocolos TCP/IP).

Photo by Markus Spiske on Pexels.com

SSL son las siglas de Secure Socket Layer, apareció originalmente en 1995 y tuvo varias revisiones (2.0 y 3.0) que corregían diversos problemas de seguridad. La versión 2.0 fue considerada obsoleta en 2011, mientras que la versión 3.0 fue marcada como tal en junio de 2015 tras encontrarse vulnerabilidades graves que facilitaban ataques man-in-the-middle.

TLS, abreviatura de Transport Layer Security, fue publicado originalmente en 1999 y también ha tenido varias revisiones, siendo la última de agosto de 2018, que nos trajo la versión 1.3 del protocolo. Las versiones 1.0 y 1.1 se consideran obsoletas, mientras que la versión 1.2 del protocolo (de 2008) todavía se permite bajo ciertas condiciones.

Entonces ¿Qué debo usar? Pues hoy por hoy lo recomendable es TLS 1.3, es la versión más actualizada y más segura. En algunos casos todavía encontraremos algunos servidores que utilizan TLS 1.2 por cuestiones de compatibilidad con alguna aplicación antigua. Cualquier versión anterior a la 1.2 debería ser considerada insegura y obsoleta.

Exodus Privacy: Controla quién te rastrea desde las apps de tu móvil Android

Hay un dicho: en internet si algo es gratis tú no eres el cliente sino el producto. Aunque no es así el 100% de las veces sí que es habitual que las empresas que nos proveen un servicio “gratis” realmente se estén lucrando comerciando con nuestros datos, ya sea a un nivel individualizado o usándolos de forma anonimizada en la elaboración de estadísticas y estudios. ¿Podemos saber quién está rastreándonos desde un app que tengamos instalada en nuestro teléfono? Podemos. Hablemos de Exodus Privacy.

Exodus Privacy es una ONG francesa cuyo objetivo es hacer a los usuarios conscientes del rastreo al que pueden ser sometidos a través de las apps de sus teléfonos móviles. Para ello se sirven tanto de canales de comunicación en redes sociales a través de los cuales hacer didáctica como de una herramienta de análisis, una herramienta que nos informa sobre que rastreadores trae incorporada una aplicación.

Captura ejemplo del app de Exodus Privacy

Disponemos de dicha herramienta en dos formatos: app y web. A la versión web podemos acceder a través de este enlace, en ella veremos un cuadro de texto donde podemos buscar apps por el nombre, o incluso pegar la url de un app del Google Play Store si queremos algo muy concreto, para obtener un informe sobre qué permisos solicita y qué rastreadores incorpora. La otra opción pasa por instalar la propia app de Exodus en nuestro teléfono, ya sea a través de la propia Play Store o de F.Droid. En su web además disponemos de otras cosas como un blog corporativo, informes sobre los distintos rastreadores que han detectado o explicaciones de los conceptos sobre los que hablan.

Fake news: desinformación, intoxicación y propaganda

La proliferación de noticias falsas era uno de los temas de debate candentes antes de que comenzase la crisis de la COVID19 que con razón ha fagocitado toda la atención informativa en el último año y medio, lo que no quiere decir que la aparición del virus haya significado la desaparición de este fenómeno que, muy al contrario, parece incluso haberse desbocado con una cantidad inusual de teorías conspiracionistas presentes en ámbitos donde jamás habían llegado antes. En 1986 Alan Moore planteaba en su tebeo Watchmen que una catástrofe mundial uniría a la humanidad más allá de credos y fronteras, hoy podemos decir que Moore pecó o de ingenuo o de optimista y que el New Frontiersman, el panfleto que aparecía en el tebeo como parodia de los tabloides criptofascistas conspiranoicos, probablemente sería un digital del que te llegarían enlaces a través de un grupo de WhatsApp familiar o del trabajo.

Photo by Blue Bird on Pexels.com

No es que el uso de la desinformación con objetivos políticos o militares sea algo nuevo, algo nativo de la era digital y el siglo XXI pues ya Tsun Tzu en su tratado El Arte de la Guerra reconoce el engaño con objetivo de desmoralizar a la tropa enemiga como una de las más poderosas armas de las que servirse, arma que fue perfeccionándose durante años, que cobró gran importancia durante la I Guerra Mundial y que alcanzó su estilo moderno en los años previos a la II Guerra Mundial, sirviendo la Guerra Civil Española como gran banco de pruebas de sus posibilidades. Posteriormente los años de la Guerra Fría nos dejarían cientos de ejemplos de cómo las dos grandes superpotencias utilizaban de manera habitual bulos y noticias falsas para desacreditar a su rival en lugar de lanzarse a un conflicto armado. Aunque estemos viendo en principio la propaganda como un arma entre dos naciones enfrentadas tenemos que tener presente que de su uso también se benefician partidos políticos y organizaciones empresariales, la concepción de la política como “guerra” del autor afín al nazismo Carl Schmitt fue clave para la popularización de ese tipo de estrategias.

Photo by asim alnamat on Pexels.com

Las tecnologías disruptivas  que facilitan la comunicación masivas han sido claves también para incrementar la eficiencia de esta propaganda: el abaratamiento de los medios de imprenta a finales del siglo XIX o la irrupción de la radio en el periodo de entreguerras fueron grandes hitos para la democratización del acceso a la cultura pero también fueron grandes amplificadores de propaganda sin los cuales, por ejemplo, sería imposible explicar el ascenso de los fascismos en el Periodo de Entreguerras. A finales del siglo XX y comienzos del XXI internet tendría un papel fundamental al convertirse en el nuevo gran medio de comunicación masivo, si bien en un primer momento las noticias falsas más aberrantes y las teorías conspirativas más marcianas no acostumbraban a salir de círculos extremistas reducidos, distribuyendose a través de listas de correos primero y de foros después donde su impacto era relativamente pequeño. La aparición de las más importantes redes sociales (Facebook, Twitter y Youtube principalmente)  y de los sistemas de mensajería instantáneos (el omnipresente WhatsApp en Europa, Facebook Messenger, Telegram y Line en otras latitudes) en la década de 2010 ha dado un impulso definitivo a estas estrategias desinformativas. El general Valery Gerasimov, jefe del Estado Mayor ruso, destacaba la importancia de estas estrategias cuando estudiaba el surgimiento de las llamadas “Primaveras Árabes” y acuñaba el término “guerra híbrida” afirmando que la desinformación y la propaganda eran tan o más importantes que las armas, que las guerras del futuro se nutrirían cada vez más de estos elementos. Estos movimientos surgidos en el norte de África tuvieron en común la importancia de las redes sociales y los sistemas de mensajería como vertebradores de las acciones antigubernamentales, junto a herramientas para la navegación segura como proxys, VPN’s o la red TOR que eran mencionadas a diario en la prensa.

Photo by Negative Space on Pexels.com


¿Por qué son tan efectivas estas estrategias de propaganda basadas en bulos y noticias falsas? Principalmente por cuatro factores:

  • Explotan vulnerabilidades sociales ya existentes y previamente muy bien estudiadas. Se busca con ellas la polarización en debates públicos que ya estaban resultando polémicos y se aprovechen de las agendas mediáticas de partidos políticos y empresas tanto para reforzar su posición como para generar recelo hacia las posiciones opuestas. 
  • Son económicamente eficientes ya que los costes de generar y distribuir información de forma masiva cada vez son más bajos. Alcanzar audiencias de cientos de miles de personas pasó con la irrupción de las redes sociales a ser posible con unos pocos miles de euros en lugar de requerir inversiones millonarias. Tanto por el menor coste de la publicidad para lograrlo como por el abaratamiento de los medios técnicos: lo que antaño necesitaba de un fotógrafo profesional, un periódico y una cadena de televisión ahora se puede sustituir por aplicaciones de fotomanipulación, perfiles de redes sociales y un teléfono con capacidad de emitir vídeo en directo. Además la facilidad para compartir contenidos permite que las audiencias crezcan rápidamente.
  • Es complicado detectar una de estas campañas hasta que se vuelve masiva pues siempre se busca la apariencia de que los bulos son distribuidos por individuos. De hecho cuando la campaña ya ha cogido impulso eso acaba ocurriendo, una campaña exitosa acaba siendo distribuida por “tontos útiles” que desconocen estar sirviendo a los intereses de alguien. Esta forma de distribución además dificulta el poder establecer una relación directa para denunciar al promotor de la campaña, al ser altamente complejo demostrar que tras ella está una empresa, partido político o incluso un país.
  • Para las democracias liberales legislar contra este tipo de ataques es muy complejo dado que el control de la información puede chocar frontalmente con los derechos a la libertad de expresión y de opinión. Si bien para nosotros puede parecer fácil distinguir una opinión de una mentira descarada en el lenguaje jurídico, donde los veredictos además se basan en hechos y no en opiniones o sensaciones, esto se torna mucho más complejo. Cosas como manejar múltiples perfiles en redes sociales o crear canales de Telegram donde se difunden bulos no son delitos y muy probablemente no pueda legislarse de ninguna forma contra ello.

La metodología seguida en estas campañas siempre comienzan con el primer punto antes citado: detectar y analizar las vulnerabilidades sociales y políticas de un estado. Actualmente la cantidad de información pública disponible es mayor que en cualquier momento anterior de la historia, lo que antes se decía en la barra de un bar y “se lo llevaba el viento” ahora queda escrito en redes sociales y asociado a un perfil con muchos otros datos. Esta proliferación de información en medios públicos ha llevado también a que existan más herramientas que nunca para analizarla, esa información tiene valor no solo a nivel de marketing, también como arma estratégica y política: pueden crearse todo tipo de perfiles, desde segmentados por edades, género, ingresos, nivel de formación… hasta estudios individualizados, todo dependiendo de la capacidad técnica y, sobre todo, económica de quien realice dicho estudio

Una vez realizado este tipo de estudios quien quiera lanzar una campaña de desinformación poseerá un conocimiento muy valioso: saber qué le preocupa a la gente, saber qué atemoriza a la gente, saber qué enfada a la gente y conocer sus sesgos y prejuicios (todos los tenemos) para explotarlos de forma eficiente. Todo ese conocimiento nos lleva al siguiente punto: la creación de una narrativa, literalmente “escribir un guión”, un guión que resulte “creíble” en base a los sesgos y vulnerabilidades que ya han detectado y pensado para ser emitido a través de diversos medios y plataformas.

Con ese guión, con esa narrativa ya definida el punto final sería la comunicación/distribución de su discurso. Como ya comenté al principio, la aparición de nuevos medios de comunicación masivos ha facilitado mucho este paso. A nivel de marketing los medios de comunicación suelen categorizarse en tres grupos: medios propios, medios pagados y medios ganados. Los primeros serían los medios creados por una asociación/empresa/marca para comunicarse directamente con sus potenciales consumidores, ciñéndonos al tema de guerra informativa/propaganda política que tratamos pues podríamos pensar en un diario digital diseñado para hacer propaganda del ideario de un partido y esparcir rumores maliciosos contra los partidos contrarios, esto con un doble objetivo: movilizar a sus partidarios y desmovilizar a sus contrarios. Los medios pagados serían aquellos que difunden el mensaje de una asociación/empresa/marca a cambio de una compensación económica, ya sea directamente a través de anuncios publicitarios, ya sea de formas más soterradas publicando artículos supuestamente “libres” pero que están alineados con los intereses del pagador. Finalmente los medios ganados son los comentarios que hacen terceras personas influyentes sobre una asociación/empresa/marca sin que esta haya pagado por ello, por ejemplo cuando el que lanzó la campaña de desinformación logra hacer suficiente ruido y mete los temas que le interesan en debates y tertulias sin necesidad de tener que pagar a nadie. Normalmente las estrategias de información informativa avanzan en ese orden: empiezan en sus medios propios, si ven que logran captar interés invierten en medios pagados para amplificar ese mensaje y cuando ya han logrado que mucha gente hable de ello aparecen otros medios a reproducirlo porque creen que ganarán audiencia.

Photo by Sora Shimazaki on Pexels.com

Además de la facilidad para crear medios propios y canales de distribución que nos ha dado internet y la proliferación de dispositivos personales, hay otro factor a tener en cuenta a la hora de propagar esta información: la automatización. Existen múltiples herramientas, a veces bastante asequibles, para enviar y difundir su propaganda: a través de bots que repiten un mensaje en redes sociales o a través de canales previa suscripción se bombardea con titulares a sus potenciales partidarios.

Pero ¿por qué resultan tan creíbles y atractivas las noticias falsas? Como decía antes, primero se recopilan la mayor cantidad de datos públicos posible, luego se analizan y finalmente se crea un guión. Dicho guión está basado en los sesgos y prejuicios que se han detectado en el público objetivo de la noticia falsa, que estará diseñada para ser “confortable” para su consumidor, es decir, le dará la razón, le hará creerse más listo, perspicaz e informado porque está “confirmando” lo que ese lector “creía”. Para que la noticia sea eficaz tiene que tener algunos elementos de realidad, hablar de personajes reales famosos y de situaciones previamente conocidas para que el receptor se sitúe. Suelen estar redactadas con un lenguaje sencillo, directo y a veces incluso vulgar, con un estilo generalmente agresivo, apelando a los sentimientos por encima de la lógica o la razón y relatando hechos escandalosos y exagerados, un relato que explota los sesgos conocidos de su consumidor y que para alguien que no encaje en ellos seguramente resulten totalmente increíbles. También encontramos casos en los que la información no es realmente falsa, pero que es presentada de forma que lleve al consumidor a hacerse una idea alejada de la realidad, ya sea por la omisión de detalles claves para entenderla o por la descontextualización de la misma.

Otro elemento a tener en cuenta es que en muchos casos estas intoxicaciones informativas forman parte de estrategias a largo plazo. Si nos paramos a analizar estas estrategias y sus ecosistemas de fake-news nos encontraremos que en muchos casos las noticias falsas más antiguas no citan fuentes, pero si miramos noticias falsas recientes veremos que en ellas se reutilizan aquellas noticias falsas antiguas como fuente para las nuevas, dándoles un cierto aspecto de legitimidad y utilizando el recurso de la reiteración para hacer su discurso más sólido.

Photo by JESHOOTS.com on Pexels.com

Es realmente complicado no caer en las noticias falsas, por más que lo intentemos siempre se nos colará alguna, no hay que sentirse mal por ello porque están diseñadas para eso, para engañarnos, para ser mentiras confortables que encajan en nuestra cosmovisión y nos hacen sentir validados y “más listos que el vecino”. El bombardeo es constante, no hay tiempo para comprobar toda la información que nos llega, la profesión periodística está tan devaluada que incluso medios “serios” y “profesionales” publican noticias que por su descontextualización o marcado sesgo pueden ser calificadas de falsas y a veces estas noticias nos llegan a través de gente de confianza como amistades o familiares. 

Esto último es una opinión personal ya, yo tengo la teoría de que existen tres tipos de difusores de noticias falsas: el que cree que la información es real y no lo comparte de forma malintencionada, el que sabe que la noticia es falsa pero la comparte igual y el que hace un acto de fé para creerse la noticia. Con el primer tipo de difusor se puede razonar, se le pueden presentar pruebas de que lo que afirma es falso y debatir sobre la noticia, con los otros dos tipos de difusores no. El que comparte algo a sabiendas de que es falso lo hace solo por objetivo propagandístico, lo hace porque cree que tiene una utilidad política para su causa política/social/económica. Finalmente quien actúa “por fé”, quien elige creer algo simplemente porque aunque sea increíble encaja en su visión del mundo y eso hace que tenga una sensación de seguridad tampoco es alguien que vaya a razonar, alguien con quien se pueda debatir. En el caso de estos dos últimos personajes yo opto por no darles repercusión, no malgastar energías intentando cambiar un punto de vistas que no tienen interés en modificar y centrarse en limitar su capacidad para reproducir su propaganda, lo que viene siendo un “block” de toda la vida en foros y redes.

Libre Office Writer: crear un PDF híbrido, editable por cualquiera.

Un fichero PDF híbrido de Libre Office consiste en un fichero que por un lado puede ser abierto por cualquier lector de PDF y por otro lleva incrustado el documento ODF para que pueda ser editado con Libre Office por el receptor.

¿Cómo hacemos esto? Pues nos vamos a Archivo->Exportar a… y elegimos en el selector Exportar a PDF. Eso nos abre un diálogo de exportación, en la sección General de dicho diálogo tenemos que marcar la opción PDF Híbrido (Incrustar archivo ODF) como en la imagen de ejemplo. Con esto obtendríamos nuestro PDF híbrido.

Common Table Expression (CTE): la sentencia WITH en PostgreSQL.

Hace tiempo escribí una entrada sobre el uso de CTE en SQL-Server de Microsoft y no hace mucho en dicha entrada me preguntaron si podría usarse también una CTE en PostgreSQL. La respuesta es que sí, existe este recurso también en ese sistema gestor de bases de datos.

Sintaxis básica de una CTE

Recuerda, una CTE es un artefacto que nos permite mantener en memoria el resultado de una consulta para poder utilizarlo como si se tratase de una tabla o vista más.

En PostgreSQL usaría la misma sintaxis que en SQL-Server: tras la instrucción WITH definimos el nombre de la CTE y podemos opcionalmente agregar también los nombres que queramos dar a las columnas de la tabla que devolverá como resultado (si no lo hacemos entonces se usarán por defecto los nombres de las columnas que traigamos en la consulta). Dentro del cuerpo de la instrucción WITH definimos la consulta que queramos usar en la CTE. Finalmente ya podremos usar nuestra CTE dentro de una consulta. En fin, que lo básico sería tal que así:

WITH cte_name (column_list) AS (
    Select * from TablaQueNecesitemos
)

El mismo ejemplo que usé en la entrada sobre SQL-Server nos vale para aquí, una CTE sobre dos tablas (vendedores y ventas) para ver el total de ventas de cada uno ese año:

WITH Ventas_CTE (IdVendedor, NombreVendedor, TotalVendido)  
AS  
(  
    SELECT 
      v.Id as IdVendedor, 
      v.Nombre as NombreVendedor, 
      SUM(vt.Importe) AS TotalVentas 
    FROM Vendedores v inner join ventas vt on v.Id = vt.IdVendedor
    WHERE YEAR(vt.Fecha)=2018
)  

Después podríamos usar esa CTE como una tabla más en cualquier consulta de SELECT, INSERT,UPDATE o DELETE. Recordad que como en SQL-Server no podremos usar cláusulas coo ORDER BY o FOR BROWSE, algo que tampoco tendría mucho sentido por otra parte.

¿Por qué usar una CTE?

La misma pregunta que nos hacíamos en el primer artículo. Hay motivos varios para usar una CTE con PostrgreSQL:

  • Hacer más legible y más entendible una consulta compleja, permitiéndonos prescindir de variables de tabla y subconsultas, consiguiendo un código más ordenado y limpio sin penalizar el rendimiento.
  • La posibilidad de crear consultas recursivas (un tema del que prometí escribir hace dos años y se me pasó)
  • La posibilidad de usar funciones de agregado o funciones ventana y poder operar con ellas después.