Günther Anders

Per soffocare in anticipo ogni rivolta, non bisogna essere violenti. I metodi del genere di Hitler sono superati. Basta creare un condizionamento collettivo così potente che l’idea stessa di rivolta non verrà nemmeno più alla mente degli uomini. L’ ideale sarebbe quello di formattare gli individui fin dalla nascita limitando le loro abilità biologiche innate. In secondo luogo, si continuerebbe il condizionamento riducendo drasticamente l’istruzione, per riportarla ad una forma di inserimento professionale. Un individuo ignorante ha solo un orizzonte di pensiero limitato e più il suo pensiero è limitato a preoccupazioni mediocri, meno può rivoltarsi. Bisogna fare in modo che l’accesso al sapere diventi sempre più difficile e elitario. Il divario tra il popolo e la scienza, che l’informazione destinata al grande pubblico sia anestetizzata da qualsiasi contenuto sovversivo. Niente filosofia. Anche in questo caso bisogna usare la persuasione e non la violenza diretta: si diffonderanno massicciamente, attraverso la televisione, divertimenti che adulano sempre l’emotività o l’istintivo. Affronteremo gli spiriti con ciò che è futile e giocoso. E’ buono, in chiacchiere e musica incessante, impedire allo spirito di pensare. Metteremo la sessualità al primo posto degli interessi umani. Come tranquillante sociale, non c’è niente di meglio. In generale si farà in modo di bandire la serietà dell’esistenza, di ridicolizzare tutto ciò che ha un valore elevato, di mantenere una costante apologia della leggerezza; in modo che l’euforia della pubblicità diventi lo standard della felicità umana. E il modello della libertà. Il condizionamento produrrà così da sé tale integrazione, che l’unica paura, che dovrà essere mantenuta, sarà quella di essere esclusi dal sistema e quindi di non poter più accedere alle condizioni necessarie alla felicità. L’ uomo di massa, così prodotto, deve essere trattato come quello che è: un vitello, e deve essere monitorato come deve essere un gregge. Tutto cio’ che permette di far addormentare la sua lucidità e’ un bene sociale, il che metterebbe a repentaglio il suo risveglio deve essere ridicolizzato, soffocato, Ogni dottrina che mette in discussione il sistema deve prima essere designata come sovversiva e terrorista e coloro che la sostengono dovranno poi essere trattati come tali.

Günther Anders, “L’uomo è antiquato”, 1956

Ezra Pound

Discutere dei governi delle così dette democrazie: Inghilterra, Francia, Stati Uniti, è una semplice perdita di tempo, sino a che non si distingue tra teoria e fatto. Questi tre paesi sono controllati dagli usurai, sono usurocrazie o daneistocrazie, ed è perfettamente inutile di parlarne come se fossero controllati e governati dai loro popoli o dai delegati che rappresentano i loro popoli, o nell’interesse dei loro popoli.

Ezra Pound

Un popolo che non s’indebita fa rabbia agli usurai.

Ezra Pound

Le guerre si fanno per creare debiti. La guerra è il sabotaggio più atroce.

Ezra Pound

I disordini non avranno mai fine, non avremo mai una sana amministrazione della cosa pubblica, se non acquisteremo una nozione precisa e netta della natura e della funzione del denaro.

Ezra Pound

Modifica PDF in BASH

Per modificare parole:

qpdf --stream-data=uncompress $1 uncompressed.pdf
sed -i "s/("$2")/("$3")/g" uncompressed.pdf
qpdf --stream-data=compress uncompressed.pdf $1

http://qpdf.sourceforge.net/files/qpdf-manual.html#ref.page-selection

Starting with qpdf 3.0, it is possible to split and merge PDF files by selecting pages from one or more input files. Whatever file is given as the primary input file is used as the starting point, but its pages are replaced with pages as specified.

--pages input-file [ --password=password ] [ page-range ] [ ... ] --

Multiple input files may be specified. Each one is given as the name of the input file, an optional password (if required to open the file), and the range of pages. Note that “--” terminates parsing of page selection flags.

Starting with qpf 8.4, the special input file name “.” can be used shortcut for the primary input filename

ffmpeg

concat script

#! /bin/bash

STRINGA="concat:"

for file in $@
do
[[ -e $file ]] || { echo >&2 "File non trovato: ${file}"; exit;}
done

for file in $@
do
echo "Processo ${file}"
ffmpeg -i $file -c copy -bsf:v h264_mp4toannexb -f mpegts $file.ts
STRINGA+="${file}.ts|"
done

# RIMUOVO ULTIMO CARATTERE BARRA VERTICALE
STRINGA=$(echo -n $STRINGA | sed 's/|$//')

ffmpeg -i $STRINGA -c copy -bsf:a aac_adtstoasc output.mp4

for file in $@
do
rm "${file}.ts"
done

estrazione fotogrammi

ffmpeg -ss 01:23:45 -i input -vframes 1 -q:v 2 output.jpg
  • -ss cerca la posizione indicata nel file di input
  • -i indica il file di input
  • -vframes imposta il numero di frames da scrivere in output. è obsoleto, è preferibile usare -frames:v
  • -q:v imposta la qualità da 1 (ottima) a 31 (scarsa)

IPTables: DROP e LOG

Per bloccare un singolo indirizzo IP o una subnet, si usa DROP, ed eventualmente LOG:

-A INPUT -s 216.218.206.0/24 -j LOG --log-prefix "IP DROP SPOOF A:"
-A INPUT -s 216.218.206.0/24 -j DROP
-A INPUT -s 146.88.240.0/24 -j LOG --log-prefix "IP DROP SPOOF A:"
-A INPUT -s 146.88.240.4/24 -j DROP
-A INPUT -s 45.56.91.0/24 -j LOG --log-prefix "IP DROP SPOOF A:"
-A INPUT -s 45.56.91.0/24 -j DROP

Il male della nostra civiltà

In questo periodo di pandemia per il Covid-19 stiamo combattendo contro un virus mortale.

Ma c’è un virus non meno terribile che sta corrodendo la nostra civiltà: la stupidità.

Tra la fine del XIX secolo e i primi decenni del secolo XX, nella nostra civiltà si insinuato un gene malato, che al pari di un cancro o di un prione impazzito, la sta corrodendo dal suo interno.

Continua a leggere “Il male della nostra civiltà”

Svelte: componenti

Componenti e props

Con Svelte è possibile creare “componenti” in un file .svelte che possono essere inseriti un qualunque altro file .svelte, come se fossero normali elementi HTML, ed inoltre è possibile passare loro qualunque dato: https://svelte.dev/tutorial/declaring-props

Ad esempio: creo un banale componente Prova.svelte: esporto una variabile, e scrivo il valore della variabile in un div.

<script>
export let unaVariabile;
</script>

<div>{unaVariabile}</div>

Ora, inserisco questo componente in App.svelte, e con un bottone vado a modificare il valore all’interno del div: per farlo, mi basta modificare l’attributo “unaVariabile” del componente Prova

<script>
import Prova from './Prova.svelte';
let valore = 1;
</script>

<main>
<h1>Hello {name}!</h1>
<p>Visit the <a href="https://svelte.dev/tutorial">Svelte tutorial</a> to learn how to build Svelte apps.</p>
<Prova unaVariabile={valore}/>
<Prova unaVariabile={valore*2}/>
<button on:click={()=>{valore+=1}}>
Incrementa il valore
</button>
</main>

Store

In alcune situazioni si ha la necessita di memorizzare dati non in un componente, ma in una posizione che può essere raggiunta da qualunque parte della applicazione: a questo scopo si usano gli stores https://svelte.dev/tutorial/writable-stores

Uno store può essere writable o readable.

readable

Creo uno store readable in store.js:

import { readable } from 'svelte/store';

export const unaVariabile = readable(valoreIniziale, function start(set) {
    // viene chiamata quando arriva il primo subscriber
    // e usa il callback set()

    return function stop() {
        // funzione chiamata quando non c'è più nessun subscriber
    };
});

Un componente può accedere allo store importandolo:

<script>
import { unaVariabile } from './stores.js';

//
</script>

<h1>Fa qualcosa con {$unaVariabile}</h1>

Il nome della variabile importata deve essere uguale al nome della variabile esportata dallo store.
Questa variabile sarà un oggetto “readable”.
Per accedere al valore memorizzato si usa il simbolo $.
Il callback “set” si usa per aggiornare il valore di unaVariabile all’interno dello store.

writable

Uno store writable è simile al precedente, ma ha due metodi “set” e “update”, oltre a “subscribe”.
Con set si imposta un valore.
Con update si ha un callback con cui elaborare il valore da assegnare alla variabile dello store.
Con subscribe un componente si “iscrive” allo store e riceve gli aggiornamenti del valore.

Ad esempio, in un qualunque componente, anche non “subscriber”:

<script>
import { count } from './stores.js';

function reset() {
    count.set(0);
}

function increment() {
    count.update(n => n + 1);
}
</script>

Invece un componente subscriber riceve i dati in questo modo:

<script>
import { count } from './stores.js';

let count_value;

const unsubscribe = count.subscribe(value => {
    count_value = value;
});
</script>