George Soros manipula países con sus fundaciones, según los documentos filtrados por DCLeaks

DCLeaks ha publicado datos (fechan desde 2008 al 2016) de distintas fundaciones ligadas al magnate especulador George Soros.

Entre los documentos filtrados hay algunos muy curiosos, como una lista de usuarios de Twitter españoles con presencia política que son clasificados según sus opiniones hacia Rusia: Ukraine and Europe/spain/twitter list.docx. El documento acaba con una lista de posibles medios afines: El País, El Diario.es, El Periódico, Diari Ara, La Directa y Radio Klara.

Otro documento se centra en llevar el debate sobre la guerra de Ucrania a España. La fundación del magnate defiende a los nazis ucranianos y proporciona una guía sobre cómo llevar sus opiniones antirrusas a los medios españoles.

«To date, there is no publicly available study or report that would map the different voices in the Spanish debate on Ukraine. OSIFE would like to fill in the void by commissioning a short paper to inform its own programming».

Los documentos no se limitan solo a Europa: hay una cantidad enorme de documentos filtrados que afectan a todos los continentes.

El FBI quiere una aplicación oculta para grabar audio y vídeo de «smartphones»

El FBI trata de conseguir mediante una oferta pública una aplicación para teléfonos inteligentes que permita grabar audio y vídeo de forma encubierta, almacenar los datos localmente, mandar automáticamente los datos a la oficina central del FBI, mandar grabaciones en vivo a otros agentes del FBI y mostrar la ubicación GPS del «usuario».

El apéndice del «Audio Recorder Technical Requirements» (así ha llamado el FBI a la aplicación espía) describe dos escenarios en los que el FBI podría usar la aplicación:

«Para el primer escenario, la aplicación estaría precargada en el teléfono y funcionaría de forma oculta. Cuando la aplicación esté activa, la persona que controle el escenario será capaz de permitir la grabación remotamente. La grabación se almacenará en el teléfono, y simultáneamente el audio en directo será enviado (a través de la red móvil) a un servidor del Gobierno ubicado en Quantico, Virginia. El almacenamiento y la transferencia de datos ocurrirá automáticamente sin ninguna acción por parte del usuario».

Al final del informe, el FBI dice que también quiere que la aplicación sea capaz de hacer grabaciones de vídeo ocultas.

El sistema permitirá a los agentes «enviar el audio, vídeo y/o datos GPS sin almacenarlos en el teléfono o en el servidor». Más importante aún, «mientras esté en el modo de grabación de audio en directo, el teléfono que esté siendo usado como una grabadora oculta deberá tener un medio para ocultar su actividad. El fabricante puede implementar esto como una aplicación falsa o una aplicación oculta que requiera una entrada estándar (como un patrón de toques o arrastres) para hacerla visible, o cualquier otro método a su elección».

Convertir un vídeo a formato GIF

Animación de un gato hecha con
Pygame

Hay muchas formas y programas útiles para hacer esto. Aquí os cuento mi método:

  1. Si no tienes ffmpeg, instálalo (en distribuciones de GNU/Linux basadas en Debian con sudo apt-get install ffmpeg).
  2. Separa el vídeo en fotogramas: mkdir fotogramas && ffmpeg -i tuvideo fotogramas/fotograma%04d.png (los fotogramas se guardarán en la carpeta fotogramas).
  3. Borra los fotogramas que no necesites (paso opcional).
  4. Une los fotogramas extraídos creando un gif con el programa adecuado. Puedes usar animate (animate fotograma*.png anim.gif) para hacerlo rápido, pero si buscas controlar mejor el espacio de tiempo entre fotogramas utiliza convert (convert -delay 0 -loop 0 fotograma*.png anim.gif). -delay num indica el tiempo entre los fotogramas y -loop 0 quiere decir que cuando acabe de reproducir las imagenes empezará de nuevo. Estas herramientas suelen estar ya instaladas en muchas distribuciones de GNU/Linux, forman parte de ImageMagick (http://imagemagick.org/script/index.php).

Resumen de atajos de teclado para la Terminal (Bash)

Este resumen lo he elaborado a partir del manual de referencia de Bash.

C-b
Se mueve atrás un carácter.
C-f
Se mueve adelante un carácter.
SUPR o Retroceso
Borra el carácter a la izquierda del cursor.
C-d
Borra el carácter debajo del cursor.
Caracteres imprimibles
Inserta un carácter en la posición del cursor.
C-_ o C-u
Deshace la última instrucción de edición. Puedes desahacer hasta dejar la línea vacía.
C-a
Se mueve al principio de la línea.
C-e
Se mueve al final de la línea.
M-f
Se mueve una palabra adelante, donde la palabra está compuesta de letras y números.
M-b
Se mueve atrás una palabra
C-l
Limpia la pantalla, volviendo a imprimir la línea actual arriba.
C-k
Mata (matar texto significa borrar texto de la línea, pero guardándolo para su uso posterior) el texto desde la posición actual del cursor hasta el final de la línea.
M-d
Mata desde la posición actual del cursor hasta el final de la línea
M-d
Mata hasta el final de una palabra.
M-SUPR
Mata desde el cursor hasta el final de la palabra actual, o, si entre palabras, hasta el principio de la palabra anterior. Los límites de las palabras son los mismos que usa M-f
M-DEL
Mata desde la posición del cursor hasta el inicio de la palabra actual, o, si entre palabras, hasta el principio de la palabra anterior. Los límites de las palabras son los mismos que los usados por M-b
C-w
Mata desde el cursor hasta el espacio en blanco anterior. Esto es diferente que M-SUPR porque los límites de las palabras difieren.
C-y
Pega el texto recientemente matado de nuevo al buffer del donde se encuentra el cursor.
M-y
Rota el kill-ring, y pega lo que está al tope. Solo puedes hacer esto si la instrucción anterior es C-y o M-y

Subprocesos en Python

Los subprocesos o hilos de ejecución nos permiten realizar tareas concurrentemente (https://es.wikipedia.org/wiki/Hilo_de_ejecuci%C3%B3n). En Python podemos utilizar el módulo threading, aunque hay muchos otros.

Vamos a crear varios subprocesos (threads) sencillos.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import threading
import time
import random

def sleeper(name, s_time):
    print('{} iniciado a las {}.'.format(
        name, time.strftime('%H:%M:%S', time.gmtime())))

    time.sleep(s_time)

    print('{} finalizado a las {}.'.format(
        name, time.strftime('%H:%M:%S', time.gmtime())))


for i in range(5):
    thread = threading.Thread(target=sleeper, args=(
        'Proceso ' + str(i + 1), random.randint(1, 9)))

    thread.start()

print('Yo he terminado, pero los otros subprocesos no.')

Primero, hemos importado los modulos necesarios: time, random y threading. Para crear threads solo necesitamos el último. time lo hemos utilizado para simular una tarea y obtener su tiempo de inicio y fin; random, para hacer que nuestro proceso tenga una duración aleatoria.

La función sleeper «duerme» (no hace nada) durante el tiempo que le especifiquemos, nos dice cuándo a empezado a «dormir» y cuando ha terminado de «dormir». Como parámetros le pasamos el nombre que le queremos dar al subproceso y el tiempo que va a «dormir» la función.

Luego, creamos un bucle for que crea 5 subprocesos que ejecutan la función sleeper. En el constructor (threading.Thread), debemos indicar la función a ejecutar (target=sleeper) y los parámetros que queremos pasarle (args=('Proceso ' + str(i + 1), random.randint(1, 9)).

Proceso 1 iniciado a las 21:19:23.
Proceso 2 iniciado a las 21:19:23.
Proceso 3 iniciado a las 21:19:23.
Proceso 4 iniciado a las 21:19:23.
Proceso 5 iniciado a las 21:19:23.
Yo he terminado, pero los otros subprocesos no.
Proceso 1 finalizado a las 21:19:25.
Proceso 5 finalizado a las 21:19:26.
Proceso 4 finalizado a las 21:19:27.
Proceso 2 finalizado a las 21:19:32.
Proceso 3 finalizado a las 21:19:32.

El resultado de la ejecución es aleatorio: no sabemos cuál proceso finalizará primero.