Canada 2011: la gara più pazza nella storia della F1

Il Gran Premio del Canada del 2011 merita una pagina nei libri di storia del motorsport, per essere stata la gara più pazza ed imprevedibile mai vista in Formula 1: il racconto.

FWM - Formula1.it

Ieri, cercando della roba riguardo #TiddlyWiki (che non ho trovato e ho dovuto fare io quindi, comunque), ho per sbaglio trovato quest’altra cosina… (con questo #software è praticamente sempre così, onestamente, le cose più ganze si trovano sempre per caso, la #community è #pazza). 😏

…”Search your nodejs wiki in Google“, “TiddlyWiki5: Combine TW5 and search engine results“… nella pratica, è un #userscript che aggiunge sulla pagina di ricerca di diversi motori #web dei link che riportano a quei tiddler che combaciano con la ricerca. Il senso è che, se hai (come me) diversi link in #wiki (salvati dopo che in passato si sono rivelati almeno una volta utili), questo #strumento evita di farti finire troppo spesso nella #situazione in cui impazzisci a trovare una #pagina #online per una determinata cosa che non ricordavi di avere già salvato. Non ci avevo mai pensato, ma questo #strumentopolo è effettivamente #utile, infatti l’ho installato ora. 💯

Qui avevo provato una query di ricerca mediamente complessa, per vedere come funzionasse… e #funziona! 😻

L’ho impostato su #Ecosia (che alla fine è banalmente DuckDuckGo con qualcosa in meno e qualcosa in più), per un semplice motivo:

  • Su #Google pare funzionare correttamente, ma io #GoogleSearch non lo preferisco. 🤮
  • Su #DuckDuckGo è #rotto, e provando a sistemare il #codice in pochi minuti non ho risolto il problema. 😔
  • Su Ecosia non ha funzionato da subito, ma disattivando #JS sul suo dominio e sistemando una piccola parte dello #script, subito ha iniziato a fungere. La versione no-JS di Ecococosia è sorprendentemente ben fatta, quindi ad usare quella non si perde granché. 😺
  • Il resto sono #motori minori (di cui nessuno è un meta-motore, tra l’altro), a parte #Bing… che non c’è motivo di usare, in quanto è banalmente DDG/Ecosia ma con la certezza di datamining, poco simpatico. 🦧

#Ahimé, dopo aver risolto questo primo #intoppo, altro #problema, che esiste praticamente solo perché questi 2 fattori sono allo stesso tempo veri:

  • L’userscript ha bisogno di un server TiddlyWiki NodeJS per fare le sue richieste (non può leggere l’HTML della versione statica classica, deve usare le #API) ma, a quanto pare, permettere qualsiasi filter query (cosa praticamente necessaria per questo uso) su un #server aperto su Internet ti espone ad attacchi DoS (e posso immaginare come mai, conoscendo come funziona il Tiddlino)… quindi, andrebbe tenuto tutto in LAN. 🚧
  • Da non si sa quando, #Firefox (e, mi è parso di capire, anche gli altri browser) bloccano la navigazione da una pagina residente in Internet verso posizioni locali (file://, 127.xxx.xxx.xxx, 192.168.xxx.xxx), sia con metodi #JavaScript (comprensibile, lato sicurezza)… che con metodi manuali come il semplice click su un #link <a> (il che è assolutamente incomprensibile, invece). Ho cercato e cercato, e ho trovato (non senza confusione), qualche #soluzione, che però (e te pareva) non ne vuole sapere di #funzionare… o risolvo questo problema, o devo ogni volta aprire il collegamento in una nuova scheda facendo un passaggio extra (o copia e incolla, o Ctrl+click e poi refresh), che è una merda. 🤧

#Mannaggia!!! Vedi tu se non escono sempre problemi perché qualcuno decide che non c’è abbastanza #sicurezza, e partendo con buone intenzioni va puntualmente oltre. La cosa peggiore di tutte, inoltre, è che la cancellazione della #navigazione avviene in maniera #criptica, senza alcun avviso, errore, o spiegazione: semplicemente non accade nulla. Ma, lasciando da parte per un attimo le mie opinioni su chi dovrebbe essere licenziato in tronco, nel quel dove in cui si sviluppano i #browser, vediamo come ho perso il mio #tempo dopo: 🌚

  • Ho provato a bypassare questa #schifezza del #navigatore creando dei domini personali in /etc/hosts, che puntassero al PC come #localhost o in #LAN… e non ha funzionato; evidentemente, il blocco della navigazione avviene in base alla risoluzione dell’indirizzo, non necessariamente in base alla parte letterale dell’URL (cosa che spiegherebbe come mai all’inizio la pagina pare caricare, ma è dopo giusto qualche istante che si ferma). 🚨
  • Mi è venuto in mente di tenere un #webserver locale che semplicemente fa da proxy per il motore di ricerca, permettendomi di accedervi nel browser dallo stesso indirizzo del server wiki… e ho provato a settare il mio nginx, nello stesso identico modo in cui ho sempre fatto per tanti altri #siti, ma per Ecosia non ne voleva proprio sapere di andare. 🛑

…e ho così finito le #idee per qualche minuto. Turns out però, e mi chiedo come ho fatto a non pensarci prima, che il #metodo meno tendente a #rogne sarebbe stato #modificare lo script per visualizzare i link alla versione online della mia #KnowledgeBase, anche se i dati li continua a ricavare dal server locale. …E, infatti, ci ho messo 3 minuti e ho risolto il mio casino. Vorrei tanto avere una mini-me virtuale, magari come widget sul desktop, che mi suggerisce i modi giusti di fare le cose quando nota che io reale sto #cringiando. 😫

Ora, a parte mettere questo sistema in funzione anche sul telefono (cosa immediata) ci sarebbero almeno 3 cose da fare:

  • Necessaria: mettere sul mio homeserver (dove tengo il robo con le API) un servizio che scarica di continuo aggiornamenti della #OcttKB da #Git, e riavvia il server Node quando necessario. Nulla di difficile, ma è palloso. ⚽
  • Preferibile: mandare una pull request per lo userscript con le #modifiche che ho fatto, incluse quelle di compatibilità, o almeno caricare su qualche mio robo pubblico la mia versione. Nulla di complesso, ma è scocciante. 🧻
  • Idealissima: Portare al livello estremo la #UX di questa estensione, integrando sicuramente dei risultati di #ricerca che facciano quantomeno vedere il contenuto che ha causato il match, e magari addirittura che supportino un formato custom definito in-wiki per la #visualizzazione di diversi tipi di #dati in modo specifico per ogni situazione (ad esempio, una differenza tra corrispondenze in #pagine di #note, pagine che sono solo ammassi di link, e così via…). E questo è proprio la #lamegafine, invece, non ci sono mezzi termini. Però quanto sarebbe top. ☠️
  • https://octospacc.altervista.org/2024/01/29/quando-la-mia-wiki-non-e-al-primo-posto-sui-motori-di-ricerca-la-mettiamo-a-forza/

    #API #Bing #browser #codice #community #cringiando #criptica #dati #DuckDuckGo #Ecosia #Firefox #funziona #funzionare #Git #Google #GoogleSearch #GSearch #idee #intoppo #JavaScript #JS #KnowledgeBase #lamegafine #LAN #link #localhost #Mannaggia #metodo #modificare #modifiche #motori #navigatore #navigazione #note #OcttKB #online #pagina #pagine #pazza #problema #ricerca #rogne #rotto #schifezza #script #server #sicurezza #siti #situazione #software #soluzione #strumento #strumentopolo #tempo #TiddlyWiki #userscript #utile #UX #visualizzazione #web #webserver #wiki

    Search your nodejs wiki in Google

    https://openuserjs.org/scripts/linonetwo/TiddlyWiki5_Combine_TW5_and_search_engine_results Source is at GitHub - linonetwo/tiddlywiki-search-tw5-and-search-engine-at-once-user-script: Userscript: Combine TiddlyWiki5 (TidGi) and search engine (Google) results This is a fork from GitHub - bimlas/userscript-combine-tw5-and-search-engine-results: Userscript: Combine TiddlyWiki5 and search engine (Google) results which have some bug when I try to use it. Open config when clicking this button: ...

    Talk TW

    [⤴️ https://octospacc.altervista.org/2024/01/16/spaghetti-a-breve-termine/]

    Non sono passati nemmeno 10 giorni da quando avevo detto “aaa è improbabile che aggiornerò ancora #MBViewer, dovrei provare a far iniziare a funzionare il progetto definitivo #alternativo migliore…” 🥴️

    Però poi mi sono resa conto che: magari del #progetto alternativo non è semplice progettare tutta l’interfaccia e il suo funzionamento (cosa che va fatta, essendo una cosa da #costruire da zero), ma certamente non si posso comunque granché se prima non preparo dei #componenti logici che so già che mi dovranno servire… e allora, tanto vale iniziare a lavorare per quelli, integrandoli nella #app che (per quanto #spaghetti) è già esistente e funzionante, e acchiappare un bel 2 in 1 (espandere quel #programmino, e nel mentre accumulare codice che mi servirà per quel molto altro più tardi). 📦️

    La prima cosa un po’ intricata che serve è il supporto all’ingestione di dati da #piattaforme diverse, con #schemi diversi. L’idea è di avere un solo #schema di dati che la app usa per lavorare internamente, per evitare di avere spaghetti, ma questo vuol dire che bisogna fare qualche tipo di conversione. Ci sarebbero diversi approcci: 🔪️

    • Il più classico sarebbe quello di scrivere (come degli schiavi indiani) delle #procedure di codice per tradurre ogni tipo di entità #API dai #formati esterni a quello interno, e viceversa… il che non solo è una pazzia, e richiede un botto di #lavoro (va scritto un numero di #funzioni complesse pari alle piattaforme da supportare, moltiplicato per 2), ma finisce per dare #rogne: appena decidiamo che lo schema di API interno va modificato o allargato, ecco che bisogna modificare in ognuna di quelle parti, ed ecco che magari escono nuovi errori e problemi. Ehhh, no, non ci sto dentro. 😩️
    • La mia idea, invece, è di usare un #documento di #trasformazione, almeno per quando le task sono semplicemente selezione e riassegnazione di chiavi di #dati (per operazioni più complesse, il codice è più appropriato del #markup). Era questo che avevo già provato a fare mesi fa (e funzionava eh!), ma, riguardandolo ora, mi stavo rendendo conto che lo strano #formato JSON da me inventato ha dei #limiti abbastanza forti, tra cui penso sia un casino tremendo usare 1 solo documento di #traduzione per fare sia avanti che indietro. Quindi, ho iniziato a ripensarlo da capo, ma ho pensato abbastanza in fretta che, beh… #JSON non va bene per sta roba, lo si vede anche dal come devo mettermi a scrivere chiavi tipo “__robo__“; JSON abuse, doing I am. Però l’idea credo sia bona… 😋️

    E allora, fortunatamente sono tornata sana giusto in tempo, prima di #impazzire ancora una volta dopo mesi con Jason; almeno, abbastanza sana per capire che è meglio impazzire con #XML, se proprio proprio, in questo caso. E, boh, ci ho perso 1 giornata e qualcosa (soprattutto l’altra sera in cui, mezza drogata di sonno, mezza cringiata per colpa della situazione, ho iniziato ad andare un pochino mentale), ma bene o male l’ho fatto funzionare un minimo. C’è stato di tutto in mezzo ovviamente; tra cui, il #godere per aver sistemato un #bug, eccetto scoprire poco dopo che, no, nulla era sistemato… e averci dovuto perdere un’altra mezza giornata. 📆️

    In #screenshot, i documenti di trasformazione: a sinistra, quello XML nuovissimo, credo definitivo; al centro, quello JSON vecchio: a destra, quello JSON nuovo che ho sperimentato per pochi quarti d’ora. 💎️

    Questa è una di quelle cose capaci di stupirmi anche se fatte da me: la sola #idea di poter raggiungere il 90% di quello scopo intricato semplicemente #componendo un documento XML in maniera adeguata, e avere vita facile per ogni #modifica, la trovo #pazza in concetto. Comunque, ho dovuto (iniziare a) scrivere una mega-funzione totalmente #originale per questa cosa perché, come già avevo constatato mesi fa, ma riconfermato appunto ieri, tutte le #librerie in giro per fare trasformazioni di dati così sono troppo generiche, a quel punto usare quelle sarebbe anche peggio che fare tutto in #codice. E credo di aver cercato fin troppo in giro. E, ahimè, prima o poi soffrirò di nuovo, perché dovrò scrivere pure la #funzione di traduzione inversa! 😵‍💫️

    Che centra con la #applicazione mezza kangata? In pratica, avendo integrato questo #sistema già da ora, MBViewer può visualizzare (alcuni) #feed #RSS, e (con qualche problema, per ora) #profili #Mastodon, il che non è male. È male, invece, il mio aver scoperto solo ora che su Firefox avviene un problema con il parsing dei feed RSS, che dovrò sistemare… ma su #Chromium funziona tutto. Oh well. Ohhh, it’s so well. I #glitch non finiscono mai, la tortura della #programmazione è eterna!!! 😭️

    Provate idk, https://hub.octt.eu.org/MBViewer/#/SiteUrl=https://mastodon.uno/@octo.rss|platform=rss. (Da Cromio per ora, come ho detto, 😴️)

    https://octospacc.altervista.org/2024/01/25/mbviewer-per-distrarci/

    #alternativo #API #app #applicazione #bug #Chromium #codice #componendo #componenti #costruire #dati #documento #feed #formati #formato #funzione #funzioni #glitch #godere #idea #impazzire #JSON #lavoro #librerie #limiti #markup #Mastodon #MBViewer #modifica #originale #pazza #piattaforme #procedure #profili #progetto #programmazione #programmino #rogne #RSS #schema #schemi #screenshot #sistema #spaghetti #traduzione #trasformazione #XML

    Spaghetti a breve termine - fritto misto di octospacc

    Dunque, quel bellissimo #MBViewer, che ho iniziato a realizzare appena 3 giorni fa… è già #SpaghettiCode. Ehh, si, quel codice di #Telegram lì non è proprio fatto per gestire un caricamento di dati troppo avanzato e tutto #ClientSide: nel suo normale caso d’uso riceve #HTML già preparato dal server, ed usa #JavaScript non #moderno, quindi […]

    fritto misto di octospacc