Skip Navigation
caffeitalia

Caffè Italia

  • J-Ax vs Paolo Meneguzzi

    J-AX: https://piped.video/watch?v=4RlXkF5Z6fY https://youtu.be/4RlXkF5Z6fY

    0
  • Rust, Bot e Lemmy: Un piccolo esempio introduttorio!

    Ciao a tutti! La discussione dell'altro giorno riguardo a Bot per Lemmy mi ha invogliato a perder un po' di tempo libero e buttare giù un semplicissimo script in Rust che crea un nuovo post quando viene invocato, seguendo i dati in un file di configurazione.

    Anche se si tratta, fondamentalmente, di qualcosa d'incredibilmente semplice l'ho creato in modo da dar esempi pratici a molti degli argomenti che spesso, chi inizia Rust, ha difficoltà a trovare in un insieme coerente.

    Per esser chiari questa non è - volutamente - la più efficiente o idiomatica versione del codice per eseguire il compito, ma ho cercato di mantenerla semplice da capire e tendenzialmente idiomatica, evitando tutte quelle forme che potrebbero intimidire o confondere, anche se migliori.

    E, soprattutto, questo non è un tutorial. Vuole solo dare una prospettiva ampia.

    Dentro ci sono esempi di:

    • Option
    • match
    • Del crate reqwest, usato per inviare una richiesta POST.
    • Come leggere un file di configurazione con toml e serde.
    • Il random in Rust, che non è integrato direttamente nella Standard Library ma per cui bisogna usare il crate rand (o similari).
    • Come ottenere e formattare una data con il crate time. Normalmente ho sempre usato chrono, quindi questa è stata un'esperienza nuova anche per me! haha
    • Diversi modi per interpolare le stringhe.
    • Come attivare per un crate delle feature non default nel proprio cargo.toml
    • panic! AKA Come far crashare il proprio programma! ...volutamente!
    • expect non è il male! Ha il suo posto anche all'interno di programmi più solidi e non solo per veloce prototipi.

    Ora non voglio venderlo per più di quello che è, ma credo sia una buona base di partenza per qualcuno che è interessato a Rust ma non lo ha mai visto con esempi reali, semplici e non mono argomento. Ho aggiunto anche diversi commenti che spero possano aiutare a comprenderne il flusso.

    Quindi, per finire, funziona? Sì! È solido e resiliente? Nope. È una buona base per far qualcosa di meglio se volessi imparare e giocare un po' con Rust? Credo di sì.

    Se volete provarlo e fare dei test, il metodo migliore è usare le istanze di test ufficiali di Lemmy:

    Oppure la palestra qui su feddit.it (credo?)

    Una buona alternativa sono anche i servizi come https://httpbun.org/ o https://httpbin.org/ (down al momento dei miei test).

    FAQ

    Perché non su github? > Al momento non ho un account che posso usare per queste cose, mi dispiace!

    Ma basta che copio i file? > Beh, sì, ma sarebbe il caso di creare un nuovo progetto con cargo new --bin simplecofeebot e sovrascrivere/modificare i file.

    Cosa succede se faccio cargo run? > Che invii una richiesta errata a feddit.it, perché non c'è alcun token jwt nel file di configurazione. > Nel caso in cui tu inserisca un token jwt allora - se non modifichi nulla - dovrebbe inviare una nuova discussione nella comunità del Caffé, chiamata "Caffè Italia DD/MM/AAAA" con la data del giorno d'invio, ed un messaggio fra quelli nella body_pool. Quindi meglio non farlo, o si finisce per spammare il caffé. :D

    Perché nel Caffè invece di Informatica?! > Leggendo le regole della comunità !informatica@feddit.it mi sembra di capire sia solo incentrata sulle notizie!

    Puoi compilarlo per me? > Nope. Non consiglio di usarlo seriamente così come è.

    Questo codice è un macello! > Grazie, mi sono impegnato! Se hai notato bug, typo o cose insensate per favore commenta qui sotto!

    Licenza??? > MIT o Apache 2!

    ---

    Cargo.toml

    ```toml [package] name = "simplecofeebot" version = "0.1.0" edition = "2021" publish = false license = "MIT OR Apache-2.0"

    See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

    [dependencies] toml = "0.7.6" reqwest = { version = "0.11.18", features = ["blocking", "json"] } time = { version = "0.3.23", features = ["std", "local-offset", "formatting"] } serde = { version = "1.0.174", features = ["derive"] } serde_json = "1.0.103" rand = "0.8.5" ```

    /simplecofeebot.toml

    ```toml [instance] url = "https://feddit.it"

    curl --get -d "name=caffeitalia" https://feddit.it/api/v3/community

    community_id = 11869

    [authentication]

    curl --header "Content-Type: application/json" --request POST --data '{"username_or_email":"UsernameFigo","password":"PasswordComplicata"}' https://feddit.it/api/v3/user/login

    session_token = ""

    [text] body_pool = [ "Salve!", "Che piacere vederla, commendatore, il solito?", "Un bel caffettino?", ]

    title_pool = ["hmhm", "oh no"]

    ```

    src/main.rs

    ```Rust // In poche parole questi sono gli import. use std::{fs::File, io::Read, path::Path};

    use rand::{rngs::ThreadRng, Rng}; use serde::Deserialize; use serde_json::json; use time::{format_description, OffsetDateTime};

    // Creiamo una serie di Struct per contenere i vari // dati presenti nel file di configurazione. // derive è una macro procedurale che // genererà per noi determinate parti di codice. // Deserialize è fondamentale e proviene dal crate // serde, su cui toml fa affidamento. #[derive(Debug, Deserialize)] struct Config { instance: InstanceConfig, authentication: AuthenticationConfig, text: TextConfig, }

    #[derive(Debug, Deserialize)] struct InstanceConfig { url: String, community_id: i32, }

    #[derive(Debug, Deserialize)] struct AuthenticationConfig { session_token: String, }

    #[derive(Debug, Deserialize)] struct TextConfig { // Perché un Option? Perché la pool di titoli nel file // di configurazione può esserci o non esserci, è, per // l'appunto, opzionale. // Potremo facilmente controllare che il valore sia presente // in base al suo tipo: // Some(Vec<String>) - un vettore contenente stringhe // None - un'Option vuota title_pool: Option<Vec<String>>, body_pool: Option<Vec<String>>, }

    fn main() { // Specifica la posizione ed il nome del file di configurazione. let path = Path::new("./simplecofeebot.toml"); // Apri il file di configurazione e controlla che l'operazione non dia errore. let (config, title, body): (Config, String, String) = match File::open(path) { // Il file è stato aperto con successo, quindi usiamo un pattern // per estrarre il contenuto del nostro tipo Result<File, Error>. Ok(mut file) => { // Creiamo una nuova Stringa che verrà utilizzata come buffer per il contenuto // del nostro file di configurazione. // Deve esser mut perché dobbiamo modificarla. let mut doc = String::new(); // Ed ora tentiamo di trasportare il contenuto del file dentro la stringa di buffer! match file.read_to_string(&mut doc) { // Non siamo interessati a quello che read_to_string ritorna dentro l'Ok() // quindi usiamo _ per indicare che non serve una variabile dove inserirlo. Ok(_) => { // Usiamo il crate Rand per creare un generatore di numeri casuali locale. let mut rng = rand::thread_rng(); // Finalmente usiamo il crate toml per analizzare il file di configurazione. let config: Config = match toml::from_str(doc.as_str()) { // Il match può ritornare un valore al suo completamento, quindi, // nel caso sia andato tutto bene, ritorniamo il valore contenuto // all'interno del nostro Ok. Ok(s) => s, Err(err) => { // Oh no! // Qualcosa è andato storto e non ci è possibile recuperare // da questo errore. Ci tocca chiudere il programma con un bel // e salutare crash. Cerchiamo almeno di spiegare il perché... panic!( "Errore! Impossibile analizzare il file di configurazione!\n{}", err ); } }; // Per rendere il titolo un po' meno monotono aggiungiamo un suffisso // estratto a caso fra le stringhe date nell'apposito spazio nel file di // configurazione. // Useremo una funzione chiamata pick_random, definita poco sotto! let title_suffix = config .text .title_pool .as_ref() .map_or(String::new(), |v| pick_random(&mut rng, v));

    let body_default = "Salve!".to_owned();

    let mut body = config .text .body_pool .as_ref() .map_or(body_default.clone(), |v| pick_random(&mut rng, v));

    // Abbiamo fatto in modo che, in caso il nostro utente non // abbia definito body_pool nella configurazione, allora vi sia // la String "Salve!" come body, ma cosa succede nel caso in cui // il nostro utente abbia passato [""] o []? // Dato che abbiamo preso una decisione esecutiva d'avere come // default "Salve!", allora è il caso d'aggiungere // un altro controllo... if body.is_empty() { body = body_default; }

    // Rimandiamo indietro una bella Tupla d'elementi.. questo // puzza solo a me? // Se si fa affidamento su un dato strutturato, per muoverlo // in giro, forse sarebbe il caso di creare direttamente una // nuova Struct ed esser sicuri di quel che passiamo! (config, generate_title(title_suffix), body) } Err(err) => { // Hmm.. probabilmente il file non era codificato in UTF-8! Oh no! Anche qui... // niente configurazione, niente funzionalità! panic!( "Errore! Sei sicuro che il file di configurazione sia in UTF-8 valido?\n{}", err ); } } } // C'è stato un errore durante l'apertura del file! Err(err) => { // Niente file di configurazione significa che non abbiamo accesso al token JWT.. // Anche se avessimo dei default per gli altri elementi non è possibile andare oltre, // l'unica via è un bel crash! panic!( "Errore! Impossibile aprire il file in \"{}\":\n{}", path.display(), err ) } };

    // Ora che abbiamo il nostro titolo ed il nostro corpo del messaggio // è arrivato il momento di postarli! Ma come fare? // A piccoli passi! // Sarebbe opportuno controllare che l'url dell'istanza sia // almeno formalmente corretto. // Perché non fare tutti i controlli subito appena analizzato // il file di configurazione, così da non sprecare // tempo e computazioni? È un ottima domanda! // E la strategia giusta sarebbe di spostare tutto ciò che // riguarda la configurazione in un suo modulo a parte, // far tutte le validazioni del caso, e solo dopo procedere! // ...ma qui siamo bonari, ci fidiamo del nostro utente! // Saltiamo direttamente ad usare un nuovo crate per // inviare richieste: reqwest! let client = reqwest::blocking::Client::new(); // Cosa succede se, per caso, l'url dell'istanza è malformato, pieno // di spazi bianchi o con un bel / alla fine..? E se non inizia con // il protocollo? let api_endpoint = format!("{}/api/v3/post", config.instance.url); // Questi son un sacco di dati da prendere e di cui fidarsi così, senza // pensarci.. // Però siamo avventurosi! Creiamo direttamente il json sulla fiducia. // Per farlo utilizziamo una macro che proviene da serde_json. // Esistono molte altre vie, ma questa è quella più semplice da // gestire in modo sano, se dovessimo mai decidere d'implementare // altre casistiche. let req = json!({ "auth": config.authentication.session_token, "name": title, "community_id": config.instance.community_id, "body": body, }); // Ed ora proviamo ad inviare la richiesta! match client.post(api_endpoint).json(&req).send() { Ok(response) => { // Sembra esser tutto riuscito! Mettiamo un bel messaggino con // un sacco d'informazioni inutili nella console, giusto per // dar un po' di fastidio al nostro amato utente! // In più con un unwrap messo così c'è sempre la possibilità // d'avere un divertente crash al momento meno opportuno! println!("La discussione con il titolo \"{title}\" è stata inviata correttamente.\nRisposta: {}", response.text().unwrap()) // Ma un momento... Se l'url era sbagliato e abbiam ricevuto // indietro un 404, 503 o qualche altro problema che ha impedito al // post d'esser ricevuto? Al momento il nostro script direbbe // sempre che tutto è andato bene! Ooooops! // Forse potremmo controllare response.status() e fare un bel match... } Err(err) => eprint!( "Errore! Non è stato possibile inviare la discussione!\n{}\n", err ), } }

    fn pick_random(trng: &mut ThreadRng, trg: &Vec<String>) -> String { // hmm.. cosa succede se viene passato un vettore vuoto...? // Meglio controllare! E in Rust anche l'if può direttamente // ritornare un valore. if trg.is_empty() { // È un po' triste e non esattamente il massimo.. Ma una stringa // vuota è pur sempre un'opzione! // Notare come trasformiamo "" da una &'static str in una String usando // to_owned(). "".to_owned() } else { // Invece se c'è almeno un elemento allora procediamo all'estrazione! // Notare come len() ritorni la lunghezza del vettore, quindi // [0, 1, 2] ha una len() di 3, però l'ultimo elemento ha un'id // di 2! // Un'altra ottimizzazione possibile sarebbe nel caso avessimo // un solo elemento... ma.. Ne vale la pena? trg.get(trng.gen_range(0..=(trg.len() - 1))) .unwrap() .to_owned() } }

    fn generate_title(suffix: String) -> String { // Creiamo un descrittore per il formato della data da inserire nel titolo. // Nel caso ci sia qualche errore crashamo direttamente usando expect, // perché siamo bravi mettiamo anche un messaggio che cerca di spiegare il // motivo più probabile per il nostro crash.. Potrebbe esser utile in futuro, se // qualcuno decidesse di render il descrittore configurabile! let date_format = format_description::parse("[day]/[month]/[year]").expect( "La stringa che stai cercando di usare per formattare la data non sembra corretta!", ); // Cerchiamo d'ottenere la datetime della macchina locale... let date = match OffsetDateTime::now_local() { Ok(datetime) => datetime.date(), Err(_) => { // Impossibile ottenere la data locale, con tristezza usiamo quella UTC. // Potrebbe capitare che il giorno sia diverso, per colpa dei fusi orari.. eprintln!("Errore! Impossibile ottenere la data locale: verrà usata quella UTC."); OffsetDateTime::now_utc().date() } } .format(&date_format) .expect("Non siamo riusciti a formattare la data..?");

    format!("Caffè Italia {} {}", date, suffix) .trim() .to_owned() } ```

    --- Alcune possibili migliorie semplici ed interessanti potrebbero esser:

    • Una gestione migliore degli errori, usando l'operatore '?', ed il crate anyhow.
    • Potremmo anche creare degli errori migliori con thiserror!
    • Abbiamo già il crate time.. Perché non aggiungere dei timestamp ai messaggi nella console?
    • Creare diversi moduli per gestire in modo più generale e specifico (Ah! Sembra un ossimoro ma non lo è!) le varie funzioni!
    • Dopo aver creato la discussione, se ha accesso ai poteri da mod, pinnarla!
    • Magari sanitizzare un po' le stringe provenienti dal file config? Anche solo un trim sarebbe un bel passo avanti! Anche quando l'utente è fidato cercare di coprire gli errori più comuni è sempre una buona idea!
    • Cosa succede se il session_token è scaduto..? Magari si potrebbe direttamente fare il login?
    • Magari trasformarlo per, oltre al file di configurazione, accettare anche dei parametri da linea di comando, usando un crate come Clap!
    • Attualmente lo script posta quando è invocato.. Magari potremmo creare un loop e una configurazione per postare a determinate date/orari? Certo, un cron job quando disponibile è sempre la scelta migliore.. Ma se proprio ci si sta annoiando...!
    0
  • Siti internet: chiedono troppo gli altri oppure chiedo troppo poco io?

    È venuto un volontario di un'associazione. Hanno già un sito, ma quest'anno gli hanno imposto un rinnovo a quattro zeri. Leggo il preventivo e vedo un vps dedicato, sito fatto apposta con djangocms, email con tanto di exchange per ogni singolo volontario ecc ecc.

    Mi dice che è disperato, fino all'anno scorso gli chiedevano un rinnovo simbolico, ma quest'anno gli impongono questo redesign che assolutamente non possono permettersi e che comunque da Google analytics vedono che gli accessi si contano sulle dita di una mano, anche se il tizio dell'altra web agency gli giura che no, in realtà ha 100x più accessi, è che nessuno clicca su accetta cookie, però questo tutto sulla fiducia, senza mostrare nulla, fosse vero mostragli una pagina generata dall'analisi dei log server con awstats come si faceva nel 1999.

    Insomma mi dice che vuole semplicemente fare un sito con scritto chi siamo, contatti, indirizzo, seguici sui social. Per email, semplice redirect della casella info perché se no tutti si dimenticano la password e non la guardano mai. Caselle personali sono inutili e non le vogliono

    Gli faccio vedere una pagina demo fatta con mobirise e mi dice perfetto così. Gli spiego che però non è un sistema che prevede modifiche, login o upload. Dice perfetto così non ci dobbiamo preoccupare di password, noi non vogliamo mai fare alcuna modifica tanto scriviamo solo sulla pagina Facebook

    A questo punto quoto un quarto d'ora di lavoro a 200 euro l'ora arrotondato all'ora più vicina e mi dice perfetto cominciamo subito contatta la web agency attuale per il trasferimento

    Li chiamo e mi pare abbastanza stizzito "ah queste richieste me le devono fare per raccomandata entro 30 giorni dalla scadenza al telefono non faccio nulla", come se gli avessi rubato la gallina d'oro

    Allora mi sono chiesto: ma sono io ad aver chiesto troppo poco oppure sono loro ad aver sbagliato ad aver fatto un preventivo da "matrimonio con otto portate in ristorante tre stelle Michelin" quando il cliente si accontenta anche solo di un kebab?

    Se gli va bene una pagina statica fatta in 5 minuti con mobirise e poi lo metto su Tophost a 6 euro l'anno, a me sembra di aver chiesto anche troppi soldi

    0
  • Sanità pubblica italiana

    Domanda per chi si è imbarcato in questa impresa. Quale è stato il periodo piú lungo che avete dovuto attendere? In particolare con priorità bassa. Chiedo perchè sono rimasto di stucco ricevendo nel ultimo mese (con impegnativa) più volte la porta in faccia sentendomi dire che è impossibile prendere una data, che è tutto occupato per i prossimi 90 giorni, che dovrei telefonare tutti i giorni per avere un posto (???). Mi demoralizza molto questo modo di gestire le cose casualmente.

    0
  • Quali sono i corsi che consigliereste per imparare il francese?

    Title, per svariate motivazioni (mercato del lavoro migliore/bilancio stipendio-costo della vita migliore, cosa confermata da vari connazionali che ho conosciuto a Parigi), vorrei trasferirmi in Francia per lavoro, la prima barriera da superare è quella linguistica: siete a conoscenza di corsi validi (possibilmente online, dato che per lavoro sto in un paesello sperduto in cima al niente) che mi permettano di raggiungere almeno il livello B1?

    0
  • Le origini dell'Italia
    peertube.it Le vere origini dell'Italia

    Dall'unione d'Italia, progetto inglese per avere il controllo del Mediterraneo, al referendum sulla monarchia, fino all'attuale governo Meloni. Abbiamo chiesto al Prof. e Avv. Augusto Sinagra di ripercorre insieme la storia d'Italia per comprendere al meglio la situazione attuale del nostro amato p...

    Le vere origini dell'Italia

    Un'interessante video sulle origini della nostra nazione. Guardatelo e fatemi sapere cosa ne pensate!

    0
  • Perché siamo ancora così lontani da reddit?

    Lo so, sono stati fatti enormi passi avanti da parte di feddit da quando c'è stata la faccenda sulle app di terze parti e le chiamate API, la comunità si è allargata tantissimo ma io ancora non riesco a godermi questo posto quanto prima mi godevo reddit su infinity.

    0
  • Avete visto Barbie?

    Mi aspettavo un film divertente con qualche trovata brillante e tanti richiamini nostalgici agli anni 90, e quello era. La storia è anche carina, gli sviluppi "politici" sono molto banali.

    Insomma, a me è piaciuto.

    0
  • Perché nei bar avanzano molti croissant poco richiesti?

    Se passate in un bar nel pomeriggio o verso fine giornata noterete che in genere sono avanzati dei croissant integrali al miele, con marmellata ai frutti di bosco, o di altri tipi ma sepolti dallo zucchero a velo.

    Questo non sorprende perché probabilmente sono i tipi di croissant meno richiesti dai clienti. Quello che sorprende è che ne avanzino così tanti.

    Questa situazione viene notata dai gestori dei bar? Perché non provano a ordinare qualche pezzo in più dei croissant più richiesti, per esempio quelli alla crema o alla marmellata di albicocche, e qualche pezzo in meno di quelli meno richiesti?

    Avete qualche ipotesi o esperienza diretta, specialmente se lavorate in un bar o nella ristorazione?

    0
  • Casual Friday - Sinner Edition - 14 luglio 2023

    Oggi alle 14:30 sul centrale contro Djokovic, sapevatelo.

    0
  • Richiedo community FONDAMENTALE agli admin

    Ho appena assaggiato una cosa ed è immediatamente nuova droga.

    Non vorrei spoilerare, vorrei usarla come post di esordio di

    /c/aldivslidl

    Che ne dite, la creiamo?

    0
  • tagli di capelli maschili?

    Da secoli ho sempre richiesto un taglio "normale", cioè corto ai lati e dietro, e leggermente più lungo sopra. Però è veramente noioso lol, le donne hanno molte più possibilità per farsi belle, da quel punto di vista.

    Io ho i capelli boccolosi che fanno il cespuglio se lasciati crescere (quindi poco estetico e soprattutto molto caldo), e al momento ho una treccina da 25cm stile padawan dietro l'orecchio sinistro.

    Idee? Consigli? Cose strane da provare?

    0
  • Caffè del 13/07/2023

    Blip-Blop I'm not a bot,ecco il suo caffè all'ananas

    0
  • È stata approvata la legge Europea sul ripristino degli ambienti naturali
    www.euronews.com Nature Restoration Law survives knife-edge vote in the EU Parliament

    The Nature Restoration Law has survived a dramatic vote in the European Parliament but only by a razor-thin margin. #EuropeNews

    Nature Restoration Law survives knife-edge vote in the EU Parliament

    La legge è passata nonostante la mozione contraria, sostenuta da destre e popolari europei.

    0
  • Il sondaggio per scegliere come ridisegnare i nuovi euro - Il Post
    www.ilpost.it Il sondaggio per scegliere come ridisegnare i nuovi euro - Il Post

    Si può scegliere fino al 31 agosto tra sette possibili temi, per la prima volta verranno cambiate le immagini sulle banconote

    Il sondaggio per scegliere come ridisegnare i nuovi euro - Il Post

    La Banca Centrale Europea ha annunciato un sondaggio per scegliere il tema con cui saranno ridisegnate le banconote in euro.

    Qui trovate il link al sondaggio. No, non possiamo avere delle banconote con sopra dei peni.

    0
  • Ora puoi comprarti la verifica anche su Meta

    Pochi minuti fa su Instagram mi è arrivata questa notifica in cui si pubblicizza la possibilità di comprare la verifica del profilo. Cosa potrà mai andare male?

    EDIT: per curiosità ho cliccato per vedere il prezzo. 16,99€ al mese. Follia!

    0
  • L’eredità di Berlusconi: come è cambiata la satira negli ultimi trent’anni
    www.fanpage.it L’eredità di Berlusconi: come è cambiata la satira negli ultimi trent’anni

    È vero che non si può più ridere di niente? Ed è vero che la satira è morta? Eppure la stand-up comedy e i social dimostrerebbero il contrario

    L’eredità di Berlusconi: come è cambiata la satira negli ultimi trent’anni

    Trascrivo una bella opinione da parte di Massimiliano Loizzi (sicuramente l'avrete visto come attore in molti video de Il Terzo Segreto di Satira) sullo stato della satira in Italia. È un argomento a cui tengo molto, mi piacerebbe anche creare una comunità /c/satira ma temo non ci sia molto seguito (oltre al quasi inesistente materiale italiano negli ultimi 10-15 anni).

    Comunque non ho trovato una comunità più affine (forse !culture@feddit.it? Ma secondo me non andava troppo bene) quindi lascio qui :)

    Articolo originale su Fanpage

    L’eredità di Berlusconi: come è cambiata la satira negli ultimi trent’anni

    È vero che non si può più ridere di niente? Ed è vero che la satira è morta? Eppure la stand-up comedy e i social dimostrerebbero il contrario. Ma allora Berlusconi come ha fatto a cambiare (anche) tutto questo?

    Non vi è dubbio: ridere ha un importante significato etico. E la satira ne è, forse (qui il dubbio lecitamente si insinua ma solo per il timore di risultare dogmatico), l’espressione più alta se non necessaria. Persino la Corte di Cassazione lo ha affermato, fornendo una definizione giuridica di satira: “È quella manifestazione di pensiero talora di altissimo livello che nei tempi si è addossata il compito di ‘castigare ridendo mores’, ovvero di indicare alla pubblica opinione aspetti criticabili o esecrabili di persone, al fine di ottenere, mediante il riso suscitato, un esito finale di carattere etico, correttivo cioè verso il bene”. E allora come mai la satira in ogni sua forma sembra essere scomparsa dalle varie forme di trasmissione culturale generaliste?

    Forse l’eredità più grande di Berlusconi, è proprio quella di aver modificato letteralmente il paese, di averlo plasmato in quarant’anni di dominio pubblico, politico e privato a sua immagine e somiglianza, perché in definitiva – che lo si voglia o no, che sia vero o meno – siamo tutte e tutti figli di Colpo Grosso e Drive in. La polarizzazione, l’estremizzazione del confronto, la demonizzazione dell’avversario, la versione italiana del self-made man, la televisione come la vediamo oggi, la spettacolarizzazione di qualunque cosa finanche della vita privata, fino ad arrivare a quel che sembra meno ovvio ovvero i social, i Reel, la mini tv di Instagram con il suo zapping-scrolling compulsivo e ossessivo, la fomentazione dell’io, del personalismo, dell’individualismo, della ribellione agli schemi solo per fottere gli altri e non per produrre benessere comune, sono tutte vittorie del Cavaliere. Senza ombra di dubbio. O quantomeno sono parte di un percorso avviato da lui, dalle sue televisioni, dai suoi soci-fratelli-collaboratori-massoni, un percorso simile in ogni suo aspetto al Progetto Rinascita della P2. E di conseguenza è ovvio che abbia cambiato anche la satira o perlomeno l’idea che ne abbiamo.

    Con l’editto Bulgaro Berlusconi ha fatto fuori dalla televisione in toto, ogni anima contrastante, ogni voce dissidente, ogni volto che proponesse una riflessione attraverso la risata, inondando però negli ultimi vent’anni la televisione di comicità, onnipresente e opprimente a tal punto fin quasi poi a sparire del tutto. Un po' perché l’assenza di qualità e di una risata alternativa a quella popolare e populista, ha fatto sì che la qualità si abbassasse notevolmente – probabilmente l’ultima grande trasmissione comico satirica è stata L’Ottavo nano del 2001 con Guzzanti (Corrado e Sabina) in stato di grazia e poi lentamente più nulla – e un po’ perché l’avvento dei social ha decisamente cambiato le carte in tavola.

    Per i nativi digitali e per la generazione zeta la fruizione dei contenuti deve essere necessariamente istantanea, veloce come un click, più immediata e veloce e – attenzione – non vi è giudizio in questo ma è solo una constatazione di come i tempi siano cambiati e quindi anche la comicità e la satira. Per passare da Instagram a Youtube basta un click, e anche qui la situazione è pressoché la stessa: ci sono centinaia di canali comici che propongono più o meno nello stesso modo (chi più, chi meglio) una certa satira di costume che mette in scena i vari stereotipi dell’italiano medio, passando per le centinai di loro epigoni, di content creator che con il trend del giorno propongono tutti la medesima, identica scenetta priva di alcun contenuto, seppure poi ironicamente è proprio la parola contenuto a identificare quello che fanno e postano.

    Ma la satira? Dov’è finita? Quella feroce de “il Male” o di “Cuore” o de “Il caso Scafroglia”, di “Su la testa”? Molte e molti dicono che la cosiddetta dittatura del politicamente corretto, impedirebbe di esprimersi liberamente e che ormai non si può più scherzare, ridere o far satira su niente. Ma non è vero. Certamente un tipo di satira è stata bandita dalle televisioni proprio a causa di quell’editto di ventidue ani fa ma seppure poi i governi siano cambiati, i vertici Rai anche e la parabola di Berlusconi sia stata un lento declino, nessuno si è premurato di creare uno spazio per la satira, anche se avrebbe potuto.

    Eppure essa c’è. E si nasconde subdola tra i meandri dell’internet o della scena della stand-up (astro nascente della nuova comicità) o nel teatro, quantunque nessuno si sia mai veramente preoccupato del teatro, riserva indiana di esseri umani che continuano, nonostante tutto, a coltivare l’ambizione di partecipare a una forma d’arte dal vivo, per persone vive, fra persone vive che interagiscono fra di loro, nel solco di un’antica idea di comunità ormai superata e declassata dalla community. Chi dice che non si può dire più nulla e che siamo tutti schiavi della dittatura del politicamente corretto, evidentemente non ha mai assistito ad uno spettacolo di stand-up in qualche affollatissimo live club o teatro o birreria, dove effettivamente la libertà di pensiero e di espressione è messa alla prova in maniera inequivocabile.

    Nei social, abbiamo assistito ad un ritorno della satira, ma sotto una veste diversa. E attraverso l’internet e la sua paradossale libertà, la satira sembrava essere tornata libera – appunto – di esprimere l’esercizio sacrosanto del sentimento del contrario, senza limiti, senza censure, senza deformazioni. E gli esempi negli ultimi anni sono stati tantissimi sia nella forma della sintesi del tweet, che del meme o delle pochissime esperienze video: il Terzo Segreto di Satira su tutti, un collettivo che ha spopolato sul web negli anni dieci fino ad arrivare in rare occasioni anche in televisione, seppure in terza serata, e ad un film e che cito come unico e solo esempio perché sono uno dei volti che negli anni lo hanno contraddistinto, e quindi lo faccio per poter dire, almeno per una volta nella vita, di essere vittima o carnefice del conflitto d’interesse.

    L'articolo completo lo trovate su Fanpage

    0
  • Caffè giornaliero 11 luglio (sperimentale)

    Visto che in più avete richiesto un thread giornaliero vediamo se funziona, passata la mezzanotte in Italia potete pure aprire quello successivo (domani son impegnato è difficilmente riuscirò a connettermi), se non funziona si torna al settimanale.

    0
  • Il dissing tra Luchè e Salmo mi ricorda quello di Vacca e Fibra

    Salmo inizia con: https://youtu.be/xZQlpCLxXEA https://piped.video/watch?v=xZQlpCLxXEA

    Luchè risponde con: https://youtu.be/fLgs_NSGZE0 https://piped.video/watch?v=fLgs_NSGZE0

    Salmo ribatte con: https://youtu.be/K_wCzcqzhHk https://piped.video/watch?v=K_wCzcqzhHk

    Luchè continua con: https://youtu.be/oRoxyKPKfzw https://piped.video/watch?v=oRoxyKPKfzw

    Salmo controbatte con: https://youtu.be/dDGbqBYSZ1k https://piped.video/watch?v=dDGbqBYSZ1k

    Inoki risponde a Luchè: https://youtu.be/ODWn3gc2s7U https://piped.video/watch?v=ODWn3gc2s7U

    Luchè risponde a Salmo: https://youtu.be/fXP8SMtnN40 https://piped.video/watch?v=fXP8SMtnN40

    Salmo risponde Luchè: https://youtu.be/s87L5XWGiwI https://piped.video/watch?v=s87L5XWGiwI

    Trucebaldazzi: https://youtu.be/g9E3oqfSN5c https://piped.video/watch?v=g9E3oqfSN5c

    La playlist: https://piped.video/playlist?list=91ef4459-7266-44d6-9d16-d148f064acf6

    0
  • Come mangiate la pizza?
    • Che pizza prendete di solito?
    • La tagliate in 4, 6, 8 fette? La piegate a portafoglio? La tagliate con coltello e forchetta o forbici?
    • Vi scofanate il tutto come degli ex carcerati ingiustamente condannati all'ergastolo, oppure avete un metodo certosino?
    0
  • FIAT sta spaccando

    >La nuova Topolino è solo l'inizio del totale rebrand di Fiat: scommettiamo?

    0
  • C'è una vulnerabilità in corso su lemmy, impatta anche feddit?
    sh.itjust.works (URGENT) Lemmy has an XSS vulnerability in the tagline, the sidebar and in the legal information field - sh.itjust.works

    # DO NOT OPEN THE “LEGAL” PAGE — lemmy.world is a victim of an XSS attack right now and the hacker simply injected a JavaScript redirection into the sidebar. It appears the Lemmy backend does not escape HTML in the main sidebar. Not sure if this is also true for community sidebars. [https://sh.itjus...

    0
  • Kit pesi manubri

    Salve, non credo ci sia una community dedicata all’attività fisica in generale e cammini non mi sembrava molto in tema. Veniamo a noi stavo pensando di prendere un kit manubri di quelli componibili e avevo adocchiato il kit Dechatlon da 20kg a 60€, i motivi principali che mi convincono sono materiale dei dischi (ghisa), blocco a vite e compatibilità con tutti i loro dischi quindi facilmente aggiornabile. Ovviamente mi trovo a chiedere online poiché sulle stesse cifre o poco più si trovano decine di kit su Amazon che permettono di creare anche un bilanciere, avete esperienze/consigli a riguardo? Ovviamente li utilizzerei per semplici allenamenti casalinghi senza troppe pretese, attualmente non ho neanche una panca. Ogni consiglio/parere è ben accetto

    0
  • threads darà una bella botta ai server del fediverso

    Al momento, dopo appena 24h son passati a 50M d utenti, e senza contare il mercato europeo; dalle stime di fediverse.observer vedo un picco di 4.5M d'utenti ma attivi mensilmente appena 1.5M. Supponendo continui a crescere la mole di dati diventerà di 10x/20x non appena aprono le porte dell' inferno, e quando apriranno in europa probabilmente si sarà attorno al doppio giornaliero. Posso capire che così com'è la situazione non è facilmente sostenibile...

    0
  • Sovraffollato, troppo caro e mal gestito: perché ho chiuso con l'Italia (caro Brian Johnstone, già lo sapevamo!)
    www.smh.com.au Overcrowded, overpriced and badly managed: Why I’m done with Italy

    I reckon it’s time to put the boot into Italy and give this fabulous but frustrating country a miss.

    Overcrowded, overpriced and badly managed: Why I’m done with Italy

    Il mese scorso a Venezia ho passato tre ore seduto in aereo sull'asfalto. L'aeroporto di una delle città più visitate al mondo non disponeva di personale sufficiente per caricare i bagagli.

    Peggio ancora, i passeggeri avevano trascorso un'ora precedente ammassati in un corridoio in attesa di un autobus che ci portasse all'aereo perché non c'erano nemmeno abbastanza autisti. Ma nessuno ce l'ha detto. Quando un passeggero arrabbiato ha chiesto una spiegazione, un rappresentante della compagnia aerea le ha semplicemente voltato le spalle.

    Naturalmente, nulla di tutto ciò ha impedito a Venezia di accogliere un flusso di aerei carichi di visitatori che tengono a galla la città. E avendoli sollevati dai loro soldi con servizi scadenti e troppo cari, non ha impedito ai veneziani di lamentarsi del turismo eccessivo.

    L'Italia è troppo affollata? No. Nel 2022 l'Italia ha attirato 50 milioni di arrivi turistici, posizionandosi al quinto posto nel mondo. Ma si tratta di meno di un turista per abitante (59 milioni), che non fa nemmeno entrare l'Italia nella top 20.

    Il vero problema è l'Italia stessa. I visitatori attenti possono facilmente individuare ciò che gli studi accademici confermano: l'Italia ha infrastrutture turistiche scadenti, imprese turistiche mal gestite e una politica e una pianificazione del turismo inadeguate. I politici non sono interessati ad affrontare i problemi di un'industria che rappresenta oltre un decimo del PIL.

    Il risultato è che un terzo dei turisti è stipato in luglio e agosto, concentrato nelle destinazioni del nord Italia, mentre il sud è relativamente poco sviluppato. I visitatori vengono incanalati lungo le stesse poche calli veneziane e città toscane, solo per essere sfruttati con scarsi ringraziamenti.

    L'Italia fa notizia per folle e turisti che si comportano male, ma quando le folle sono gestite male e i siti culturali affollati sono praticamente non presidiati, di chi è davvero la colpa? Con i turisti che aggiungono annualmente all'economia più di 200 miliardi di euro (327 miliardi di dollari), l'Italia sembra non potersi permettere di fornire personale, panchine pubbliche, spazi per picnic o servizi igienici gratuiti.

    (continua)

    0
  • Sulle rotte dei contrabbandieri di Napoli quando l'illegalità era uno stile di vita

    >Il contrabbando a Napoli ha sempre rappresentato un modo di vivere per tirare avanti, il rifiuto del monopolio di Stato e la vendita illegale di prodotti che altrimenti sarebbero stati venduti dai tabaccai. Dai film alla vita reale, i vicoli di Napoli sono sempre stati caratterizzati dal contrabbando ma per arrivare al prodotto finale ci sono le rotte marittime dove veniva trasportato, gli scontri con la polizia e le migliaia di persone coinvolte in questo traffico.

    0
  • Dovete ordinare delle pizze, fate voi l'ordine in anticipo per tutti. Come raccogliete i soldi?

    Mi sono trovato in una situazione simile a quella descritta, e alla fine il metodo più semplice è stato (ahimè) usare i contanti.

    Il bonifico è lento e complicato per piccole cifre, e una App usata da tutti tutti (o metodo simile) non l'ho trovato.

    Voi come fate?

    0
  • Multe dal sistema Tutor

    Oggi, diretto al mare, mi sono reso conto di non aver mai sentito di storie di multe prese dal sistema Tutor raccontate da amici. Allora mi sono chiesto se funzionano veramente e se qualcuno nel fediverso ha qualche storia di Tutor da raccontare?

    0
  • Una community dedicata agli ascoltatori di "Morning" potrebbe interessare?

    Ci sono qui dentro ascoltatori del podcast di Costa?

    Dato che una volta che inizi ad ascoltarlo poi tendenzialmente diventa un appuntamento fisso quotidiano, penso che una comm in cui discutere / approfondire un po' i temi della puntata possa essere interessante.

    Se c'è interesse, e se agli admin va bene, potrei provare a metterlo in piedi io. Non conosco nulla degli strumenti che lemmy mette a disposizione di chi gestisce una community, ma magari questo può essere una buona occasione per imparare.

    0
  • Mostra Serial Killer a Milano

    Sono andato con mia figlia a visitare questa mostra e devo dire che ne vale la pena. Molte informazioni (ok, qualcosina non è del tutto corretta) e fruibile da tutti (ok, due-tre cose possono disturbare i più delicati). Mi pare sia su una superficie di circa 1500mq per cui è una visita luuunga, specie se volete seguire il tutto con l'audioguida (noi ci abbiamo messo poco più di 5 ore). Accessibile anche da persone disabili (salvo un 2-3 oggetti disposti un po' troppo in alto). Sito: https://italmostre.it/serial-killer/

    0
0 Active user