slide1

Alt1040. Noticias acerca de Internet, diseño, música, cine, opiniones, weblogs y medios

Es uno de los weblogs de tecnología más seguidos de la blogosfera hispana.

slide2

Bitelia. Blog de software, internet y servicios web

Software y aplicaciones para mejorar tu vida, guías de uso, trucos, listas, noticias y todo sobre tecnología.

slide3

Xataka. Publicación de noticias sobre gadgets y tecnología.

Últimas tecnologías en electrónica de consumo y novedades tecnológicas en móviles, tablets, informática, etc.

slide4

Wwwhatsnew. Aplicaciones, marketing y noticias en la web.

Servicios que os pueden ser útiles para dibujar, gestionar tareas, hacer amigos, encontrar restaurantes...

slide5

Fayerwayer. Discusiones y opiniones de lo ultimo en tecnología y gadgets

Con secciones dedicadas a Internet, Software o Redes Sociales es un referente a nivel de tecnología en español.

31 de enero de 2022

Los papeles de Pandora, Python y el aprendizaje automático

Python Icon
A finales del año 2021 vieron la luz los papeles de Pandora, estos son un conjunto de aproximadamente 12 millones de documentos filtrados (unos 3 TeraBytes), que formaban parte de una investigación periodística. Provienen de una filtración de documentos confidenciales de 14 despachos de abogados especializados en la creación de sociedades en varios paraísos fiscales, entre ellos, Panamá, Islas Vírgenes Británicas o Bahamas.


A través de esta información se han puesto al descubierto las fortunas secretas de líderes mundiales, grandes empresarios, funcionarios públicos, y en general, multitud de evasores que se mantenían al margen de la ley.

Entre algunos personajes populares, destacan el presidente de Chile, el ex-director del FMI, el rey de Jordania, el primer ministro checo, o Tony Blair, o incluso estrellas del mundo del espectáculo como Julio Iglesias, Shakira, Claudia Schiffer o Pep Guardiola.

Todos estos datos vienen a exponer diversos sistemas que se usaban para evitar los controles fiscales sobre dichas fortunas, siendo la base para multitud de acusaciones de corrupción, lavado de dinero o evasión fiscal.

Los documentos incluyen datos de más de 5 décadas, aunque la mayoría se refieren a los últimos 20 años, e incluyen información sobre 30.000 beneficiarios.

Además de su gran volumen, eran de diversa procedencia, idioma y formato, documentos escritos a mano, hojas de cálculo, correos electrónicos, imágenes, ficheros PDF de más de 10.000 páginas, pasaportes, extractos bancarios, declaraciones de impuestos, contratos, ... Lo cual le añade complejidad a la hora de analizarlos y poder extraer conclusiones de los mismos.

El reto estaba en poder obtener resultados y sacar a la luz los secretos en un tiempo razonable. Y en eso Python y las últimas técnicas de aprendizaje automático tuvieron un papel crucial.


Machine Learning


Tan solo una pequeña fracción de dichos documentos, el 4%, estaban estructurados, es decir, contenían los datos organizados en tablas. Esos fueron los más simples de analizar, se organizaron por empresa, se eliminaron duplicados y se combinaron en un documento maestro, de esta manera todos los datos estaban juntos y su interpretación fue mucho más directa.

En otros archivos, como documentos escritos, archivos en formato PDF, ... se usó Python para automatizar la extracción y su posterior estructuración dentro de lo posible.

Pero para el resto de documentos, los casos más complejos, se usaron técnicas de Machine Learning o aprendizaje automático, a través de la librería Scikit-Learn de Python.

De esta manera, se identificaron, separaron y clasificaron formularios concretos de documentos mayores. Incluso muchos de estos formularios estaban escritos a mano, y se tuvieron que emplear técnicas de reconocimiento de escritura manual.

Cuando todos esos datos finalmente se pudieron estructurar, se generaron unas listas que vinculaban a los beneficiarios con las empresas, y posteriormente se usaron librerías de visualización de datos para crear modelos visuales e incluso poder realizar búsquedas sobre dichos datos.
De esta manera, los investigadores obtuvieron una herramienta que les permitía rastrear las conexiones entre personas y empresas a través de la maraña de documentos, y descubrir a los evasores.

En la Universidad Internacional de Valencia y de manera específica en el Curso Experto de Programación Python se estudia dicho lenguaje y las técnicas más populares de inteligencia artificial, como el aprendizaje automático, redes neuronales, ciencia de datos, automatización, ... Todas ellas disciplinas clave en la resolución del caso de los papeles de Pandora.


* Artículo de Iván Fuertes Torrecilla *


Iván Fuertes Torrecilla


Senior Render Engine & SDK Programmer for Augmented Reality at Wikitude




22 de enero de 2022

Introducción al uso de la API de Blogger v3

API Blogger
Una API o Interfaz de Programación de Aplicaciones (Application Programming Interface) es un protocolo que define cómo los dispositivos y las aplicaciones se comunican entre sí. Describe cómo los clientes que consumen las APIs pueden acceder a los recursos y qué métodos funcionan con su arquitectura.


A la hora de crear una API para la integración de software, el diseño REST (REpresentational State Transfer) destaca como el enfoque de arquitectura para el diseño de servicios web y se refiere al conjunto de reglas específicas que establecen como estos servicios se comunican a través de internet.

El estilo arquitectónico REST está compuesto por varios principios:

  • sin estado: las aplicaciones REST deben comunicarse con los recursos sin estado, es decir, no deben almacenar ningún contexto ni información de sesión.
  • separación cliente-servidor: la API se expone en un servidor y es consumida por clientes (apps, servicios).
  • sistema en capas: los componentes de los sistemas REST no deben poder ver más allá de su capa. Cada componente no debe influir en otro componente de la arquitectura.
  • cacheable: los datos del servidor REST deben marcarse como almacenables o no en caché. En caso afirmativo, el cliente puede reutilizar datos de la respuesta para solicitudes equivalentes posteriores.
  • interfaz uniforme: se hace hincapié en una interfaz uniforme entre los componentes (identificación y manipulación de recursos, hipermedia y mensajes autodescriptivos).

REST es independiente de cualquier protocolo subyacente y no está necesariamente unido a HTTP pero en las implementaciones más comunes de API REST, se usa HTTP como protocolo de aplicación.

De forma muy resumida, REST es un estilo arquitectónico y las API REST son servicios web que lo implementan.
Para complicar más las cosas, los desarrolladores llaman a una API HTTP que usa un estilo CRUD (Create, Read, Update, Delete) un servicio RESTful.

La API de Blogger v3 permite que las aplicaciones cliente vean y actualicen el contenido de Blogger. Tu aplicación cliente puede usar Blogger API v3 para crear nuevas publicaciones en tu blog, editar o eliminar publicaciones existentes y consultar publicaciones que coincidan con criterios concretos.

Cada solicitud que se envía a las APIs de Blogger debe identificar tu aplicación ante Google. Hay dos formas de identificar una aplicación: usando un token OAuth 2.0 (que también autoriza la solicitud) y/o usando la clave API de la aplicación.

  • si la solicitud requiere autorización (como una solicitud de datos privados de una persona), la aplicación debe proporcionar un token de OAuth 2.0 con la solicitud.
  • si la solicitud no requiere autorización (como una solicitud de datos públicos), la aplicación debe proporcionar una clave API o un token de OAuth 2.0, o ambos, la opción que consideres más conveniente.

Una vez que tengas una clave API, tu aplicación puede añadir el parámetro de consulta a todas las URL de solicitud con key=yourAPIKey

El formato específico para las URI de la API de Blogger es:
https://www.googleapis.com/blogger/v3/users/userId
https://www.googleapis.com/blogger/v3/users/self
https://www.googleapis.com/blogger/v3/users/userId/blogs
https://www.googleapis.com/blogger/v3/users/self/blogs
https://www.googleapis.com/blogger/v3/blogs/blogId
https://www.googleapis.com/blogger/v3/blogs/byurl
https://www.googleapis.com/blogger/v3/blogs/blogId/posts
https://www.googleapis.com/blogger/v3/blogs/blogId/posts/bypath
https://www.googleapis.com/blogger/v3/blogs/blogId/posts/search
https://www.googleapis.com/blogger/v3/blogs/blogId/posts/postId
https://www.googleapis.com/blogger/v3/blogs/blogId/posts/postId/comments
https://www.googleapis.com/blogger/v3/blogs/blogId/posts/postId/comments/commentId
https://www.googleapis.com/blogger/v3/blogs/blogId/pages
https://www.googleapis.com/blogger/v3/blogs/blogId/pages/pageId

Pongamos en práctica algunos métodos de la API de Blogger.

1- vamos a mostrar información del Blog usando la siguiente url:
https://www.googleapis.com/blogger/v3/blogs/byurl?url=https://www.tecnoblog.guru&key=yourAPIKey
<div id="api-blogger-v3" class="api-blogger-v3"></div>
<script>
function handleResponse1(response){
	document.getElementById("api-blogger-v3").innerHTML += "<div><a href='" + response.url + "' title='" + response.title + " target='_blank'>" + response.name + "</a></div><div>" + response.description + "</div><div>" + (response.published).substring(0,10) + "</div>";
}
</script>
<script async="true" defer="true" src="https://www.googleapis.com/blogger/v3/blogs/byurl?url=https://www.tecnoblog.guru&callback=handleResponse&key=yourAPIKey"></script>


2- ahora vamos a mostrar una lista con los cinco últimos post publicados en TecnoBlog invocando a la url:
https://www.googleapis.com/blogger/v3/blogs/blogId/posts
<div id="api-blogger-v3-2" class="api-blogger-v3"></div>
<script>
function handleResponse2(response){
  for(var i=0; i<5; i++){
	document.getElementById("api-blogger-v3-2").innerHTML += "<div><a href='" + response.items[i].url + "' title='" + response.items[i].title + " target='_blank'>" + response.items[i].title + "</a></div>" + (response.items[i].published).substring(0,10) + "<br/>" + "<div class='article'><em>" + response.items[i].content.substr(0,840) + "...</em></div><hr/>";
  }
}
</script>
<script async="async" defer="defer" src="https://www.googleapis.com/blogger/v3/blogs/5415513870832441455/posts?callback=handleResponse2&key=yourAPIKey"></script>


3- por último, vamos a mostrar cinco artículos publicados en la categoría "ciberseguridad" llamando a la siguiente url con el parámetro 'q' como etiqueta a buscar:
https://www.googleapis.com/blogger/v3/blogs/5415513870832441455/posts/search?q=ciberseguridad&callback=handleResponse&key=yourAPIKey
<div id="api-blogger-v3-3" class="api-blogger-v3"></div>
<script>
function handleResponse3(response) {
  for(var i=0; i<5; i++) {
	document.getElementById("api-blogger-v3-3").innerHTML += "<div><a href='" + response.items[i].url + "' title='" + response.items[i].title + " target='_blank'>" + response.items[i].title + "</a></div>" + (response.items[i].published).substring(0,10) + "<br/>" + "<div class='article'><em>" + response.items[i].content.substr(0,840) + "...</em></div><hr/>";
  }
}
</script>
<script async="async" defer="defer" src="https://www.googleapis.com/blogger/v3/blogs/5415513870832441455/posts/search?q=ciberseguridad&callback=handleResponse3&key=yourAPIKey"></script>