minioctt, (edited ) to python Italian

Questa voce fa parte 1 di 4 nella serie Troppo Cloud Gaming

Sono sicuramente un po’ paxxerella per iniziare nuovi progettini mezzi complicati ancora prima di finire i precedenti, ma che ci voglio fare? Quantomeno, a ‘sto giro ho effettivamente portato , il programma iniziato ieri, ad uno stato di completezza, tant’è che da ora penso non avrò alcun intoppo ad usarlo… e quindi l’ho anche rilasciato già stasera pubblicamente con tanto di README quasi logorroico (il link di stamattina era privato): https://octt.itch.io/framenx 🪟

https://octospacc.altervista.org/wp-content/uploads/2024/05/screenshot_2024-05-05-02-14-47-843_io2733305805360369156-960x987.jpgLa UI è ancora grezza, ma ho migliorato i messaggi a schermo, aggiungendo avvisi a scomparsa quando si verifica un errore o viene fatta un’azione (qualcuno l’ho dimenticato però oooops, dovrò metterlo, ma poca roba). Funziona in ogni caso solo con la tastiera, perché il mouse è dannoso e le hitbox sarebbe uno sbattimento in più per nessun buon motivo, dato che comunque questa per ora è una solo PC. (Ormai si sta costruendo una lore dietro questa interfaccia, ops.) ☠️In realtà sotto la scocca quella UI è comunque più complicata di quanto sembra, anche se è relativamente semplice, perché in primis già solo per le notifiche ho dovuto implementare tutto un sistema di coda… poi ho dovuto mettere il rendering video su un thread separato, perché l’accesso alla camera rallentava tutto il loop e quindi avrebbe inficiato sulla lettura degli input… ma spostarmi su un thread di sfondo ha introdotto non pochi casi limite strani che ho dovuto sistemare con ancora più codice… Comunque relativamente poco , perché il è simpatico e non è stato creato da gente che vuole vedere gli altri programmatori impiccarsi. 🦍

Btw, ho continuato a trovare altri problemi in … Innanzitutto, un bug strano con lo stack dei joystick (cioè controller da gioco in generale, direi che il nome è scelto malino) che fa si che questi non mandino più eventi dopo essere stati inizializzati se non se ne tiene qualche reference nel codice (come una variabile assegnata che non muore), come se fossero levati dal garbage collector altrimenti… stranissimo. E poi, il fatto che per riprodurre il suono di dispositivi di input audio, tra metodi non wrappati e quindi richiamabili solo con la API grezza di SDL2, stack audio buggato in generale e comandi che letteralmente non sortiscono effetto, altri comandi che invece causano segfault alla chiusura del … mi pare di stare programmando con una tempesta di raggi cosmici addosso. Ciò non lo gradisco. 😾

https://octospacc.altervista.org/2024/05/05/framenx/

minioctt, to web Italian

Sembra che sto di nuovo perdendo l’abitudine di riuscire a scrivere abbastanza qui negli ultimi giorni, e la cosa non mi piace granché, ma questi nuovi progetti un po’ mi stanno rapendo quindi non ho per la testa nemmeno la necessaria entropia per scrivere scemenze. Comunque, stasera con la scusa del mio compleanno (il tempo scorre…) ho visto degli amici, quindi non ho potuto fare tantissimo sul mio #pseudoOS, solo robine tra stamattina e oggi pomeriggio (e tra poco vado a mimir, sembra che io stia riuscendo a prendere abitudini migliori):

  • Ho fatto un nuovo componente Shell con una grossa API contentRunner, praticamente ciò che dovrebbe occuparsi di far partire nuovi processi applicativi, di qualunque tipo, ma che hanno requisiti diversi dietro le quinte. Btw, a causa di questo devo riprogettare il componente Proc, che prima avevo fatto solo per prototipare e ora non va affatto bene (per il momento questa API lo bypassa completamente, ma a lungo termine non andrà bene). 🙄️

  • Devo fare un po’ i salti mortali per far fungere programmi negli iframe che si integrino con il #sistema al massimo, considerando che è un requisito per me fondamentale quello che il sistema funzioni anche senza alcun tipo di server di backend… già far comunicare i programmi nel frame con quelli nella normale finestra è un bel disastro, ma poi ho dovuto inventarmi anche qualche #hack per far caricare ai frame risorse presenti nel file system virtuale, cosa che a quanto pare nessun altro #OS #web implementa correttamente. E non ho nemmeno finito… 😊️

  • Ho già provato a fare dei test riguardo il theming dell’interfaccia utente, precisamente con 7.css, ma… è un altro disastro. Questa libreria usa nomi di classi talmente generici e altri attributi talmente specifici che so già che prima o poi usciranno problemi se volessi usarla così stock… ho anche quasi provato ad implementare qualche hack per sistemare uno dei problemi, però no, gli altri rimarrebbero. E con altri possibili temi sarà la stessa questione! Dato che non posso forkare e mantenere infiniti temi per colpa di minuzie, piuttosto credo che mi inventerò qualcosa per patchare i fogli di stile come serve a me… o aggiungendo un processo di build apposito, o implementando processi di patching al volo (con caching) direttamente nel sistema. ☠️

https://octospacc.altervista.org/wp-content/uploads/2024/04/image-7-960x484.pngHo tra l’altro deciso almeno di crearla una repo Git per il progetto, almeno per ora, perché andare avanti senza conservare la minima history può essere problematico considerando che sto pesantemente prototipando. Man mano che farò aggiornamenti potrete testare #HakujOS su https://hakujos-octtspacc-[…].gitlab.io/… ma ora non c’è proprio nulla da provare lì, al massimo vi può incuriosire leggere il #codice, boh. 💣️https://octospacc.altervista.org/2024/04/23/cant-write-only-write/

#codice #hack #HakujOS #OS #pseudoOS #sistema #web

minioctt, to blogging Italian

[⤴️ https://octospacc.altervista.org/2024/04/14/momento-vera-lista-di-liste/]

Dovevo finire di scriverlo ieri questo, ma, puntualmente, finito un progettino bisogna subito iniziarne un altro (no spoiler), e non c’è tempo per il . La pagina rilasciata ieri, nonostante comunque non mi abbia rubato così tanto tempo perché è pur sempre una paginetta, mi ha presa un po’ alla sprovvista considerando che l’avevo iniziata addirittura questo lunedì. (6 giorni son passati…) 😳

Il motivo è buffo e per nulla legato alla difficoltà di in sé (ho fatto cose peggiori), ma al fatto che puntualmente le altre cose non funzionano mai come dovrebbero, e quindi bisogna fare delle , e poi dopo altro test si vede che da quelle hack si scassano altre cose, e via quindi di altre hack per sistemare i … E allora io ad una certa mi seccavo, e dunque “aight then, see you tomorrow ☠️”

  • Per il sitoctt è stato relativamente semplice: mi appoggio alla pagina di ricerca statica del sito, parsando tutto l’HTML, che per quanto rotta (e per questo evito di far sapere che esiste) racchiude il contenuto di tutte le pagine compilate del sito. Quindi, raccolgo tutti i link ai post da tutte le pagine di categoria. 😺

    • Quei link però sono solo-testo, quindi per prendere l’immagine di copertina ho dovuto aggiornare staticoso dopo mesi solo per fargli scrivere gli URL in attributi data dell’HTML. Poi però mettiamoci pure che a volte questi vengono scritti rotti perché la sostituzione delle variabili non funziona in quel punto del (e io non lo sistemerò mai), e anche che quando manca una copertina allora devo per forza prenderla dal contenuto della pagina, ho dovuto comunque complicare di più il … 😡
  • Per il fritto misto, bel , innanzitutto perché per stabilità e sicurezza volevo evitare di usare i proxy CORS, e poi per efficienza e velocità volevo minimizzare il più possibile le richieste di rete necessarie (paginazione è cacca)… quindi anche qui mi appoggio alla ricerca (in JSON) del mirror statico del sito, anziché direttamente a WordPress; nel file ci sono tutti i post con i metadati necessari. 😸

    • Ganzo, se non fosse che ho sprecato chissà quanto tempo solo per le immagini; e totalmente invano, perché poi alla fine ho dovuto rassegnarmi a includere nel JSON tutti i dump dei post (ciò che volevo evitare, perché fatto così si appesantirà molto velocemente, ops) ed estrarre la prima immagine ricorrente in quelli. Non capisco se il problema ha a che fare con , la sua versione fornita da GitHub Pages, o ancora il parser Liquid di Ruby, perché con un altro parser (LiquidJS) ho verificato che il mio codice per estrarre gli URL dal markup è corretto… solo che poi messo lì non funge. Provato anche il plugin “jekyll-firstimage” trovato a casissimo, ma ovviamente non è servito, dava addirittura errore ad installarsi nel processo di build. 👹

Una parte del codice con fin troppi livelli logicamente e visivamente indentati.Solo parzialmente relato: questo era lo stato di una parte del codice una tarda sera in cui ero drogata di sonno ma, come sempre, di andare a dormire proprio no, meglio scrivere le scalette. 😞 (Poi il giorno dopo l’ho reso meno cacca.)https://octospacc.altervista.org/2024/04/14/i-casini-dietro-le-liste/

minioctt, (edited ) to webdev Italian

Il #problemino (tra i tanti!) delle #webapp è che saranno anche facili da #archiviare o #clonare spesso, ma non per questo anche semplici… (o per caso non sono neppure facili e la mia #esperienza mi fa sottovalutare la cosa?) 😫

  • 🅰️ Per quelle meno complesse, il metodo migliore è senza dubbio un bel wget -kp $URL, cioè scaricare la pagina #HTML con tutte le sue risorse collegate, e convertire i link da assoluti a relativi.
  • 🅱️ Quel #metodo però non è a conoscenza di tutte le risorse caricate dinamicamente, cioè dichiarate in posti diversi dall’HTML. Per prendere anche quelle (ed è spesso necessario, tutte le app moderne caricano roba così), bisogna aprire la app nel #browser, e guardare le richieste di #rete che macina con il normale uso.
    • 1️⃣ A questo punto, si può usare la funzione del browser per esportare le richieste in formato HAR, e poi tool come har-extractor o Har Extractor Online per ricavare i file effettivi da quel blob.
      • Ho notato però che Firefox in alcune situazioni genera #HAR corrotti (2 giochi fatti in Phaser avevo provato a scaricare, ed una volta estratti gli script tiravano errori; ho riprovato con Chromium, ed è andato tutto liscio), quindi a prescindere io userei l’altro #navigatore per questa cosa. 🥴
      • Poi, non ho ben capito se per via di come il file HAR in sé è generato, se come quegli #strumenti lo interpretano, o un misto delle cose, ma le risorse cross-domain (e credo anche caricate da iframe?) tendono a non venir estratte, quindi si deve andare poi a pescarle prelevando l’URL di ognuna a manina dai DevTools già aperti… 🤧
  • 🆎 Si potrebbero usare primo e secondo metodo insieme in linea di principio (copiando i file del primo passaggio su quelli del secondo, sovrascrivendo gli esistenti), ma nella pratica è inutile… se c’erano link assoluti da convertire in relativi nell’HTML, con spaventosa probabilità questi sono presenti anche nel #JavaScript o chissà dove, per cui, dato che bisognerà comunque andare a mano a modificarli da qualche parte, 1 o 2 file in più non cambiano (spesso) nulla.
  • 2️⃣ Se si è usato il secondo metodo, bisogna a questo punto effettivamente verificare che i link siano tutti corretti, le #risorse effettivamente scaricate, e la app funzionante indipendentemente dal dominio originale… il modo più efficiente che ho trovato è aprire già da subito un webserver locale sui file, navigarci nel browser, e controllare sia che tutto funzioni nel pratico, sia che tutte le #richieste di rete per risorse effettive (ossia, non contano chiamate di telemetria o simili) vadano al mio #server, anziché al dominio originale (attivando la colonna omonima della tabella nei #DevTools lo si vede a colpo d’occhio).
    • Quando ci sono richieste che falliscono o che vanno su altri server, bisogna capire da dove nel codice queste partono, e fare le opportune #modifiche per usare URL relativi. Quelle che partono dall’HTML o dal CSS (turns out, non molte, altrimenti avremmo usato direttamente wget) sono appunto una scemenza da sistemare… ma quando partono da #script, c’è poco da fare, con l’aiuto del debugger del browser (di nuovo, meglio Chromium, perché de-mininifica il JavaScript aggiungendo whitespace in automatico) si va a capire da che punto partono, e in base alla situazione si valuta che modifiche fare al #codice. Poi, si testa ancora, e ancora si applicano #fix, finché tutto non funziona. ♻️
    • In genere questo non è un problema, e anche per app più ostiche (come quella che ho ricaricato sulla #SalaMuseoGames ieri, Little Alchemy 2) si fa tutto in un quarto d’ora ben ristretto. Tuttavia, bisogna fare attenzione a quei programmi che caricano le risorse man mano che ne hanno bisogno e non tutto subito (in genere, maggior parte dei giochi, oppure parecchie #app React)… lì si può potenzialmente perdere un bel po’ di tempo, perché bisogna mettersi ad usare il #software raggiungendo idealmente il 100% del codice; cioè, cliccare tutti i bottoni, usare qualunque azione, giocare tutti i livelli… fino ad ora non ho mai incontrato #ostacoli, ma se succede, l’unica è navigare tra il codice già scaricato per vedere cos’è che manca (da qualche parte ci sono scritti i nomi delle risorse ancora da scaricare, per ovvi motivi). 🗡️
  • 🔚 Aggiustamenti finali: in base alla situazione, vanno fatte altre modifiche al source per ovviare a #problemi banali ma frequenti. La maggior parte riguardano i domini, che in certi casi sono hardcodati, e quindi o ci sono iframe che comunicano con la Messaging API e gli va cambiato il dominio (come per il gioco di ieri), o c’è del DRM che ostacola il #rehosting (come il giochino dell’altro ieri) ecc… con #pazienza si risolve tutto.
    • E alla fine di tutto, una cosa che mi piace fare ma che non sarebbe obbligatoria, è disattivare tutte le componenti potenzialmente dannose dell’ #applicazione, ossia commentare via eventuali inclusioni e chiamate a sistemi di analitiche o pubblicità. 🚯

https://octospacc.altervista.org/2024/04/03/webaps-heist/

#app #applicazione #archiviare #browser #clonare #codice #DevTools #esperienza #fix #HAR #HTML #JavaScript #metodo #modifiche #navigatore #ostacoli #pazienza #problemi #problemino #rehosting #rete #richieste #risorse #SalaMuseoGames #script #server #software #strumenti #webapp

minioctt, (edited ) to webdev Italian

Sono praticamente 36 ore che non posto e lo so che siete in astinenza, ma avevo https://octospacc.altervista.org/2024/03/26/pwtorturaaaa/ di risolvere quel con le una volta per tutte. E ora, nonostante un’altra frazione di sanità mentale sottrattami dagli spiritelli del silicio, dolori perché sto seduta per ore alla scrivania e tutta storta, e sonno perché ieri sera ho perso un sacco di tempo a debuggare un errore stupidissimo rimanendo sveglia fino alle 2 per poi arrendermi perché stavo veramente morendo, quantomeno ce l’ho fatta… 🤯️

Cercando con estrema ieri mattina, mi accorgo di una cosa documentata alla bene e meglio, trovando prima una menzione su MDN ad un permesso webRequestFilterResponse.serviceWorkerScript, che servirebbe a regola per permettere alle di intercettare i caricamenti dei Service Worker, e poi un thread bugzilla () che pare abbia portato proprio all’introduzione di questa separazione di permessi. Ho scaricato il dimostrativo per il bug, l’ho un attimo sistemato per tenere conto di questa misura di sicurezza poi introdotta e, certo abbastanza, il coso riusciva a fare quello che io volevo dall’inizio, senza ricorrere a bruttissime e fragilissime (che a questo punto io nemmeno divulgo visto che non ho dovuto implementarle, per non sporcarmi la reputazione come developer, che già è molto bassa visto che prediligo il ). 🔮️

A questo punto era quasi solo questione di rifiniture, un po’ creare il popup per le impostazioni della mia (che però mi ha richiesto diverse ore di design e implementazione fatti in contemporanea, perché volevo farle bene, non buttarci dentro bottoni a cazzo per il gusto di), e un po’ capire come il worker che gestisce e richieste di rete . Solo che qui ho sclerato perché… inizialmente con il codice preso da Chrome for Developers non andava, e pensavo fosse un problema mio, ma invece sembra proprio colpa loro, le loro demo non vanno proprio in (ma non ho testato nemmeno in Chromium)… quindi ho provato quello offerto da MDN, ma anche qui nada, solo che ormai stavo crollando e quindi vado a mimir… stamattina vedo meglio e quest’ultima implementazione in effetti scopro che funziona, ma a me non andava perché, nel modo in cui iniettavo il trasformandolo da oggetto a stringa, una variabile che referenziavo non era accessibile nel contesto di esecuzione effettivo dello script, e quindi l’accesso alla cache falliva, ma io non me ne sono accorta subito perché già gli strumenti di del sono mezzi scassati per questi casi speciali, ma io poi avevo pure un try-catch di mezzo che quindi sopprimeva gli errori alzati dall’interprete… la . 😫️ 😩️

C’è un di mezzo con la pubblicazione di per , quindi praticamente ora il mio è in revisione, ma se tutto va bene dovrebbe prossimamente apparire sulla pagina https://addons.mozilla.org/en-US/firefox/addon/offline-caching/; in ogni caso, chi volesse usarlo da subito (come me sul telefono in primis) può scaricare da qui il file firmato da installare a mano. Edit: un’oretta dopo, l’estensione è approvata! 💖️

https://octospacc.altervista.org/wp-content/uploads/2024/03/img_20240328_1323201462313101815308817-960x1280.jpgBtw, mi serviva un’icona per l’add-on, perché tenere quella generica mi da fastidio (così come per quando creo app Android), e quindi ecco qui, letteralmente scritto a manina con uno stile un po’ buffo. Graphic design is my passion, ma non è roba mia, non son proprio capace. Penso comunque sia meglio di niente, quindi l’ho usata… (quella in basso sul foglio, che è stata la seconda; ho fatto prima quella in alto, ma poi non mi è piaciuta) 😬️https://octospacc.altervista.org/2024/03/28/pwgoduriaaaa/

minioctt, (edited ) to javascript Italian

Raga non ce la posso fare. Ho BUTTATO non so quanti quarti d’ora, forse almeno due, perché pensavo che “sibling” si scrivesse “sibiling”. E questo fatto da solo come può far perdere tutto questo tempo? Semplice: 😊️

  • Star cercando di usare per ottenere i nextElementSibiling e previousElementSibiling di rispettivamente vari elementi di una pagina che si hanno da un ciclo
  • Notando, dopo aver scritto il , che ogni volta questi oggetti sono undefined, anche se non dovrebbero esserlo per come è fatto l’HTML
  • Stranamente, selezionando elementi di partenza a mano con il picker dei DevTools, e poi ottenendo dalla console i nextElementSibling e previousElementSibling, scritti a mano e completati con TAB, in effetti questi non sono nulli
  • Notate la differenza delle parole qui sul mio sito con il font bellino? Vi assicuro che tra editor di testo e console del [ la differenza non la noto affatto]
  • Sprecando incontabili risorse di a tentare di risolvere il con modi sempre più astrusi, pensando che magari fosse qualche dovuto al mio star operando su un documento che è a tutti gli effetti una variante non-standard di HTML con i suoi quirks
  • E alla fine non ricordo cosa mi ha fatto notare che tutti i miei problemi erano per quella singola lettera di troppo, sono stata fulminata dalla banalità della mia mancanza di , odio la lingua e anche quest’altra maledetta che è JS 😭️

l'inglese causa dislessia e il javascript sarà la ragione della mia futura mortehttps://octospacc.altervista.org/2024/03/13/peggio-inglese-o-js/

minioctt, to programming Italian

Mm, comunque, quella mia particolare idea per sviluppare app web di 3 settimane fa (già volate?) alla fine è stata buona, penso (raro avvenimento). A parte che già l’avevo implementata nel codice di , che quindi aveva iniziato a fungere sia lato client che server da uno stesso file identico, l’altro dì ho separato buona parte di quel codice specifico in una libreria apposita della mia “collezione . 🫣

Usciranno minuzie da sistemare poi, ma il grosso funziona, nella repo c’è anche un di esempio che la usa per chi vuole fare le mie stesse cose poco ortodosse. Ma comunque la sto già usando per tentare di tirare su una prima versione MVP di quel motore di ricerca bizantino che tanto vorrei avere… non tanto perché credo che possa mai funzionare lato client senza un centralizzato, ma più che altro perché non se fai finta che non avrai mai bisogno di riciclare del dato , puntualmente una situazione uscirà e allora si finirà per piangere. 😠

https://octospacc.altervista.org/wp-content/uploads/2024/02/screenshot_20240226-165658_system_ui_1249140357565860738-677x1440.pngChe poi, io il proxy mini per WordPress l’ho creato inizialmente con l’intento di usarlo per pubblicare schermate dei giochi dal 3DS… ma non gioco mai con intento, solo un po’ così nei momenti di poco flusso in cui comunque non starei facendo cose più attive, ma proprio niente. Sono schiava del e ora vivo solo per quello senza trovare piacere nemmeno nei videogiochi, ciò fa assolutamente molto riflettere sugli interessi delle big tech e la cultura della dopamina, attenzione che i poteri forti vi tengono appiccicati ai loro prodotti. 🥹https://octospacc.altervista.org/2024/02/26/spac-web-semper-ovunquer/

minioctt, to wordpress Italian

Ben 2 mesi fa (pensavo meno…) avevo detto qualche dettaglio sul del … la metà delle cose rimane ancora valida, ma è uscita fuori qualche nel tempo. 🕤️

  • Avevo notato che tende ad invalidare le sessioni un po’ a caso, quindi puntualmente lo falliva ad esportare il file con cURL. Per un po’ di non ho tentato di risolvere il problema, immaginando che ci dovesse essere un modo migliore dello scraping di farlo, ma allo stesso tempo non riuscendo a pensare a nulla, e ho fatto giusto qualche a mano di routine. ✍️
  • Non mi preoccupavo troppo perché (e ricordavo di averlo detto, ma temo di non averlo mai fatto, non trovo il post) avevo installato il plugin “Writing on GitHub“, che in automatico esporta i nuovi in Markdown nel posto lì dove dice il nome… sembrava perfetto, ma appena 2 settimane (meglio tardi che troppo tardi) fa ho scoperto che non fa il commit di eventuali modifiche apportate ad un post dopo la creazione (nemmeno con il tasto per forzare), che è quantomeno un . 🧨️

Troppo troppo pallose ‘ste cosine qui, ma menomale che proprio oggi mi è venuto lo schiribizzo di tentare di sistemarle, un po’ anche grazie alla minima ulteriore conoscenza tecnica di accumulata in queste lunghe settimane, e quindi ecco i miei aggiustamenti: ⛏️

  • Ho fatto un mio per esporre un endpoint custom che mi da il documento di esportazione, quindi posso usare sempre il curlo o quello che è, ma senza impazzire. Ho pagato ciò con la pazzia ora, però, in quanto nonostante avessi capito subito di dover usare una certa funzione <a href="https://developer.wordpress.org/reference/functions/export_wp/">export_wp()</a>, non mi è stato subito chiaro che io dovessi includere un certo file di libreria per poterla effettivamente chiamare; la documentazione ufficiale a riguardo è scarsa, e di quella terza non ne parliamo proprio. Anche ChatGPT a ‘sto giro è stato fregato dalla realtà del mondo. 😱️
  • Ho invano perso po’ di tempo a ravanare nel di WOGH per capire come mai non prendesse in conto le . Temevo non fosse programmato per farlo, ma in effetti lo è (e, a pensarci un attimo, sarebbe strano altrimenti), quindi è un . Vabbè, dopo troppo sono arrivata alla conclusione che per qualche motivo non salva l’hash dei commit che fa, necessario per crearne di nuovi che modificano file esistenti, ma cercare di sistemarlo per bene è una grossa rogna che non voglio nemmeno iniziare a crearmi. Quindi, dato che la perfettamente istantanea non mi serve, ho banalmente aggiunto la scrittura su file in una cartella dall’URL segreto in wp-content, quindi poi prelevo tutto via FTP. Ahimé duplico lo spazio occupato sul , ma tanto in primis non ho limiti fissi, e comunque è tutto testo quindi poca roba. 👁️‍🗨️️

https://octospacc.altervista.org/2024/02/14/finalmente-backup-veri/

minioctt, to ps1graphics Italian

[⤴️ https://octospacc.altervista.org/2024/02/10/cazate-per-il-c/]

Dopo aver perso altre incalcolabili quantità di tempo oggi, alla fine, finalmente ho finito quel malefico… circa, perché ha un di cui ora non ho proprio manco la voglia di venire a capo: quando prova a convertire che (a quanto pare) sono corrotte, manda in crash tutto il sistema. , questo ed altri brutti dettagli li lascio ai posteri. 😇️

La scelta un po’ bizantina di usare un per l’effettiva delle si è rivelata vincente (anche perché davvero ero a corto di soluzioni…), e sorprendentemente non è nemmeno troppo lento, impiega in media 1 secondo per file (nonostante il WiFi sulla faccia pena, ma al netto dell’avere il server in LAN). Creare lo script PHP è stato facilissimo, ovviamente, non è mica quello che mi ha fatto perdere il pomeriggio sano… è stato il fatto che c’è un , da qualche parte in quella di httpc (il servizio per le cose ) dentro libctru (la libreria per gli del 3DS), se non direttamente nello stack di di , che faceva fallire il trasferimento di dati via verso o da il mio server, nonostante la connessione in sé avvenisse, e con altri server non ci fossero di alcun tipo. Io ovviamente ho provato tremila cose, e solo alla fine ho tentato di collegarmi senza cifratura, e ho visto tutto funzionare. 😤️

Ora quindi posso catturare in qualunque gioco usando il menù Rosalina, poi avviare la mia per avere tutto quanto convertito in e messo nell’album di sistema in (non devo premere nulla), quindi tutto visibile dal selettore del browser web… e a quel punto posso pubblicare qui sopra direttamente da lì, per qualsiasi titolo. Forse però dovrei espandere il codice , facendogli scrivere le date delle foto nei parametri EXIF, altrimenti il vede tutto come datato 01/01/1900… nulla di grave eh, ma un po’ scomodo per navigare nella galleria. 💀️

Il 3DS che esegue il programma, con lo schermo inferiore che lista i file convertiti.Tutto il , e il binario 3DSX compilato, è su https://gitlab.com/octtspacc/OcttBitsOfFun/-/tree/main/LumaBmp2NinJpg.https://octospacc.altervista.org/2024/02/11/what-c-taketh-away-it-give-back/

minioctt, to showerthoughts Italian

[⤴️ https://octospacc.altervista.org/2024/02/10/cazo/]

Hanako Kun e i 7 misteri dell'Accademia Kamome, Capitolo 9, Yashiro chiede ad Hanako alcuni dettagli personali per calcolare la compatibilità astrologica, tra cui la data di morte.Se Yashiro mi chiedesse la mia data di morte, direi che probabilmente è: stasera!!! Perché non funziona niente!!! 🥰Scherzi a parte, credo di aver risolto quella , avendo scritto abbastanza sensato che pare funzionare, per gestire la struttura … ma nel frattempo ho scoperto un altro : quella pseudo-libreria per convertire da BMP a JPG fa le bizze con una buona quantità di file di input (non ho però capito sulla base di cosa…): crasha, e non converte un bel niente. E non credo di trovare altre opzioni… ci sarebbe libjpeg ma non mi è chiaro come dovrei usarla per codificare da dei Bitmap. Quindi R. ☠️

Un’altra mia era trovare il modo di caricare una pagina web arbitraria (realisticamente, il sito che ho fatto ieri) nell’applet di Miiverse, che è a tutti gli effetti un browser web con API speciali, tra cui una per caricare screenshot, come servirebbe a me. (Era per questo che ricordavo male, e pensavo si potesse fare dal browser normale, perché a suo tempo usavo quest’altra cosa). Tuttavia, anche qui, vai a capire come. Se avessi voglia dovrei sperimentare con il self-hostare rverse, e da lì potrei probabilmente giostrarmela, ma non ora. 💤️

Però tipo… chi lo ha detto che devo fare le cose per bene? Se non posso codificare JPEG direttamente sulla , allora lo faccio sul mio server Linux; sul il mio programma può caricargli via Internet le immagini di partenza, e scaricare al posto giusto quelle convertite… c’è già il codice pronto per usare richieste HTTP POST… 😈️

https://octospacc.altervista.org/2024/02/10/cazate-per-il-c/

minioctt, (edited ) to pokemon Italian

Una apparente si è appena abbattuta su di me oggi: non riesco a far funzionare un C!!! 😭️

Il problema è il seguente: il programmino di ieri per pubblicare su WordPress dal funziona benissimo, ma mi sono ricordata che dal browser del 3DS non si può caricare come la schermata del gioco in pausa, ma solo cose dall’album… e non tutti i giochi permettono di salvare lì. Per salvare da qualunque gioco c’è il menù , ma salva foto non-JPEG e in una cartella diversa. 😪️

Ho pensato per un attimo di forkare (ho controllato e nessuno lo ha fatto, almeno non per versioni recenti), e modificare la funzione di screenshot per salvare in , ma dopo qualche prova mi sa che evito, perché è un casino: l’ambiente di esecuzione è talmente ristretto che non vanno nemmeno tutte le funzioni della #C, quindi non è immediato far funzionare tutto. 😮‍💨️

La seconda opzione, più sfavorevole ma comunque decente, sarebbe un che converte le foto da a e le mette nella cartella giusta… e ovviamente non esiste, esistono cose simili ma non questo, quindi devo farlo io. Ho trovato questa repo da cui posso semplicemente rubare il di , che sul 3DS compila e quindi dovrebbe tranquillamente fungere. E però mi sto incartando su tutto il resto, cioè la navigazione tra le cartelle e la gestione dei (automatica, non pianifico di mettere menù o cose, deve semplicemente aprirsi, convertire, e chiudersi). ! 🤢️

Purtroppo C per fare cose di pratica (ossia non videogiochini, o roba tipo demo audiovisive, e così via) è … soprattutto perché la della stdlib fa proprio schifo, con tutti i nomi di funzioni e tipi scritti tutti in minuscolo e spesso senza vocali perché a qualcuno pesava il culo di scrivere parole intere. E quindi finisci per creare millemila macro e funzioni intermedie di astrazioni per evitare di ripetere di continuo le stesse criptiche righe ma così vai a creare astrazioni ancora più astruse per passare i dati in giro e così via. Mi chiedo come sia possibile usarlo per fare addirittura interi sistemi operativi, . Vabbè, oggi si soffre. 💀️

https://octospacc.altervista.org/2024/02/10/cazo/

#C

minioctt, (edited ) to Software Italian

La dualità del fixare (o, in generale, far funzionare il ?):

  • Perdi almeno 1 ora buona appresso ad un oscurissimo (spoiler: la codifica del testo centra sempre in tutti questi bug, in realtà estremamente stupidi), facendo svariati test e tentando varie opzioni prima sensate, e poi senza senso perché altrimenti non sai nemmeno come continuare. 🤥️
  • Nel frattempo si è fatto in culo, ti prepari per andare a e nel frattempo pensi, ma niente… a metà spegni ormai il PC, finisci di prepararti, e continui a , e solo a quel punto un’idea ovvia viene in testa. Troppo tardi ormai. 💀️

E poi ancora, perché le non sono mai abbastanza:

  • Giustamente nel letto ti irrequieti e non prendi , perché il cervello non prende pace senza vedere il finalmente risolto dopo tutta la passata, anche scommettendo che l’ appena venuta è giusta al 100%. 🥴
  • Però prima o poi il sonno lo prendi, e dopo ore arriva la dopo, in cui la sveglia suona e… pensi “zzzzzzz voglio stare nel lettino ancora, tanto la in mente l’ho risolta, chi me lo fa fare di ammazzarmi a prima mattina [prima mattina: le 9:30, ndr.]”. 🥹

Insomma, è una . Non se ne esce. Comunque si, il mio era : stavo cercando di caricare nella galleria cloud di tramite la REST, ma ricevevo sempre un rest_upload_sideload_error… controllo gli header, tutti giusti; cerco in giro, poca roba che non mi aiuta; provo come mettere gli header lowercase, ancora niente; tento di settare a mano content-type parziali o estensioni file arbitrarie, e ovviamente non risolvo. 🤯️

Però, noto che un caricamento da curl, anziché dal mio JS, va a buon fine. Allora, provo a caricare verso un server netcat in entrambi i modi, così da poter vedere al volo i dati della trasmissione , e noto una differenza stronzetta: il corpo generato dal mio è molto più grosso del peso normale del file… quindi qualcosa lo sta corrompendo E qui, però, mi sono ribloccata. 🤔️

Solo poi, quando ormai avevo chiuso tutto come ho detto, ci ho pensato: ma io, nella parte del che legge i trasmessi dal client, vado a castare tutto ad una stringa; sarà questa la causa? …E, ricordandomi di altri simili capitati in , capisco subito che è così. Detto in breve: la del testo centra sempre e rovina ogni cosa. Se esistesse solo l’ASCII, ecco che castare dati binari a stringhe non causerebbe alcun danno. E invece abbiamo deciso che i devono supportare nella loro codifica migliaia di discutibili, come tutti quelli emoji. E io, dopo aver apportato questo , devo ora continuare a programmare. Non. Se. Ne. Esce. 😭️

https://octospacc.altervista.org/2024/02/09/insetti-utf-nel-mio-codice/

minioctt, to wordpress Italian

Fino ad ora ho apportato vari piccoli al del con vari metodi, nessuno che includa anche il creare veri . Troppa sbatta perché si devono imparare tutte le API, ecc… Però, che posso fare quando sembra proprio che l’unica soluzione elegante per estendere le funzionalità di sia quella? 😫

Quindi, ieri sera, non avendo molto tempo da perdere, ho provato a chiedere a . E, con mia sorpresa, non solo non ha allucinato creando rotto, ma addirittura sembra aver studiato ciò che io non ho fatto, e si è curato di fare le robe per bene, addirittura usando le funzioni sicure per scongiurare problemi come le injection! Alla fine gli ho fatto esporre uno , da aggiungere su normali pagine, che visualizza l’HTML generato dal . È stato proprio carino questa volta, poi guardate come l’ho ringraziato alla fine… https://chat.openai.com/share/9072c3ea-f3f5-42bb-88ae-03efa795a66f. ❤️‍🔥

Al netto di qualche errore di interpretazione suo, che mi ha portato a dover fare piccole modifiche, ho già messo a frutto lo , attivandolo su una nuova pagina: Ricerca 🔍️. Essenzialmente quello che mi serviva era una dei post di tot caratteri o meno (che per <= 500 ho chiamato Tootin’, riferendomi a chissà cosa)… e lo so che per ora è subottimale, ma è un inizio, poi magari la migliorerò. 😁

https://octospacc.altervista.org/2024/02/08/wp-gpt/

minioctt, to web Italian

Colpo di #genio estremamente radicale per risolvere un annoso #problema: il creare una data #webapp, che non abbia bisogno di grande interattibilità (vedi un social network, o un CMS), senza dover mantenere 2 #codebase separate e quindi impazzire, facendola funzionare sia con un #server che totalmente senza… ossia, come unire in una sintesi circa accettabile i due maggiori paradigmi del #frontend? 🤔️

  • Quello antico, delle prime #piattaforme #web, dove il server genera tutto l’HTML e il browser lo visualizza com’è, spesso con (quasi) zero #JavaScript (vedi la Spacc BBS). 📦️
  • Quello moderno, dove nel #backend si espongono API (spesso JSON REST), e il fronte viene sviluppato a parte come app che gira totalmente lato #client, con il #browser che richiede pezzetti di dati e fa i suoi iperprocessamenti. 💱️

Ormai quello antico non si usa quasi mai per #progetti nuovi, perché gli svantaggi sono pesanti appena si vuole andare un po’ più in là: per tappare i buchi nel progetto medio si finirebbe a dover scrivere talmente tanto #codice #ClientSide, che a questo punto era meglio fare tutto nel secondo modo, senza menzionare i modelli e le #API da esporre nel server che altrimenti non si sarebbero implementati. Però, le webapp antiche girano bene anche sul computer tascabile meno performante (average Ximi), sui browser vecchi, e spesso sono le uniche che vanno quando tutto il resto ti lascia a piedi. D’altro canto però, anche se in teoria quella #app potrebbe funzionare #offline, magari mostrando dati cachabili, se è sviluppata in modo attaccato al server ecco allora che non si può fare nulla: muore il server, muore tutto. 💣️

Quindi la mia #idea paxxerella, dato che devo fare banalmente una #applicazione come frontend per un altro servizio già esistente, ma voglio i vantaggi appena millantati: sviluppare con i paradigmi #ServerSide in un framework JS adatto, che giri sia in Node che nel browser. A quanto pare, qualcuno ci ha pensato prima, e qualcosa di già fatto ho trovato (Express+FrontExpress, Koa+Koa-Client, Rill)… ma è tutta roba ormai abbandonata, che o non funziona (ho provato) o ha altre #rogne. Te pareva che trovavo mai qualcosa di buono già pronto… Però, in un quarto d’ora ho tirato su uno #script scheletrino, giusto per poter partire per questa via. ☠️

Rapido #esempio: questo #programma (giusto da #dimostrazione, non fa nulla se non mostrare questo testo e far navigare tra pagine) gira sia come server su #NodeJS, che come script in una pagina #HTML totalmente #locale, e l’esperienza non cambia. Percepisco il potenziale, continuerò così. 😤️https://octospacc.altervista.org/2024/02/07/frontendare-lato-client-come-fossimo-nel-backend/

#API #app #applicazione #backend #browser #client #ClientSide #codebase #codice #dimostrazione #esempio #frontend #genio #HTML #idea #JavaScript #locale #NodeJS #offline #piattaforme #problema #progetti #programma #rogne #script #server #ServerSide #web #webapp

simplescreenrecorder-2024-02-07_17.05.35

minioctt, to web Italian

Non so cosa è peggio: che non riesco a trovare in giro #editor grafici decenti di #tabelle per l’editoria #web, che crearle con roba come #HTML, #WikiText, Markdown, ecc è #scomodo oltre il sopportabile (non si vede a colpo d’occhio che intersezione di riga e colonna si sta modificando), o che #TiddlyWiki si dimostra anche questa volta un #tremendo #rabbithole in cui perdersi a #sviluppare #visualizzazioni #avanzate con tutte quelle funzioni #esoteriche integrate, anche per le tabelle. Ho creato ora, per questa #tabella che sto costruendo, una #macro che integra la modifica dei #dati direttamente nella versione renderizzata, così non devo usare scomodi linguaggi di marcatura. …e funziona, ma solo ora mi rendo conto di dover trovare un modo di aggiungere righe e colonne in mezzo a quelle esistenti, e con la struttura dati che questa roba in automatico costruisce, fidatevi, non sarà facile. Ci impazzirò temo. L’ennesima mia #megafine. 💀️

Codice e anteprima della tabella specialeComunque, a dire il vero una piccola app l’ho trovata cercando: https://www.htmltables.io/. Fa modificare una tabella tramite anteprima #grafica (scarna ma adeguata), ma permette di copiare ed incollare (o modificare direttamente, ma a me non serve) il #codice HTML (anche lì, unico modo per spostare righe e colonne, non va dalla #GUI)… solo che, quest’ultimo passaggio è macchinoso, almeno a lungo termine, perché mi troverei a fare avanti e indietro tra modificare i dati e salvarli dove mi servono, quindi… ecco giustificato il trovare una #soluzione nativa alla mia #OcttKB. (Ci sarebbero poi i programmi di fogli di calcolo, ma ecco… non mi servono tutte le loro funzioni, devo solo disporre testo, quindi usare quella roba significherebbe bloat e sofferenza, tra UI disfunzionali su mobile e app in generale laggose.) 🤥️

https://octospacc.altervista.org/2024/02/04/1461/

#avanzate #codice #dati #editor #esoteriche #grafica #GUI #HTML #macro #megafine #OcttKB #rabbithole #scomodo #soluzione #sviluppare #tabella #tabelle #TiddlyWiki #tremendo #visualizzazioni #web #WikiText

minioctt, (edited ) to CSS Italian

[⤴️ https://octospacc.altervista.org/2024/02/01/emmebi-telegrammico/]

L’ultimissimo miglioramento che ho in ogni caso poi fatto ad è stato l’aggiunta di una funzione per importare codice e , per modificare come i post possono essere visualizzati. Entrambi funzionano allo stesso modo, con i relativi parametri URL che accettano sia esterni che data URI. Niente di particolare per gli stili, semplicemente importo nella pagina la qualunque cosa venga data lì, ma per gli è stato leggermente più . 😕️

Il punto sta nel voler evitare che essenzialmente non affidabili siano iniettati nel contesto della pagina semplicemente da URL, perché potrebbero fare tante cosine cattive; prima fra tutte, rubare dall’archiviazione del del mio dominio, cosa che è un , perché gli utenti inesperti che aprono la app da non andranno a cercare di investigare cosa accade dietro le quinte (e, molto probabilmente, non lo farei realisticamente nemmeno io, seguendo la logica del “i miei siti sono miei e li conosco, sui siti altrui ho le protezioni del browser attive“). E quindi inizio a scendere in un rabbithole… ☠️

  • ? Hmm… non so, non è il caso, sarebbero insicuri, ci sono alcuni modi in cui una pagina in frame può fare robe fastidiose. Non può essere assolutamente un’idea, proprio mai (foreshadowing). 🪟️
  • Trovo un bel po’ di vecchie che ricompilano codice per rimuovere pericoli, o lo analizzano preventivamente per la presenza di operazioni dannose così che possa non essere mai eseguito… praticamente tutte abbandonate, qualcuna esplicitamente dichiarata insicura e non patchata, e per qualcun’altra lo possiamo dare per scontato. 🐛️
  • Forse questa libreria più recente, jailed, che sfrutta un iframe assieme ad un Web Worker per creare una sandbox forte e bloccare tutte le eccetto alcune che si decidono… No, l’ho provata e non va bene, non si riescono a passare alla sandbox oggetti complessi, tra cui i costruttori, è impossibile far funzionare API tipo quella del DOM. 🚧️
    • Sarebbe stata un’idea usare qualche reimplementazione del per NodeJS tramite browserify, tipo Cheerio, ma farla anche solo girare lì dentro è un altro casino allucinante. 🥴️
  • WASM tecnicamente è una a sua volta, e non accede alle API del browser se non con codice colla, quindi magari… teoricamente ok, ma nella pratica non ho trovato nessuna soluzione già bella e pronta che potessi usare per questo specifico scopo. 🕳️
  • La : PyScript… sarebbe quasi già pronto, ma avrei dovuto comunque modificarlo per bloccare tutte le API insicure (rimuovere ), e poi richiede 15+ MB di dipendenze di runtime… non ideale. 🗿️

Alla fine ci ho pensato meglio, e sono arrivata alla conclusione che è abbastanza sicuro far girare gli script in un iframe con proprietà src="data:[...]" e sandbox="allow-scripts" (che significa, “blocca tutte le proprietà sensibili eccetto gli script”)… voglio dire, nel visualizzare il contenuto dei siti, già permetto eventuali iframe provenienti dai post, e quelli teoricamente possono già fare quello che vogliono eccetto accedere ai dati della finestra root. Nella pratica, i programmini degli utenti quindi hanno accesso a (quasi) l’intera API JavaScript senza poter fare cose bruttissime. 🎉️

https://octospacc.altervista.org/wp-content/uploads/2024/02/image.pngEcco un esempio di tutto, alla fine: questo URL carica il mio MicroBlog, importa un foglio di che mette questo font buffo, e uno script che colora le parole dei in base a come si ripetono man mano (inutile, ma serve giusto per dare idea delle potenzialità)… <a href="https://hub.octt.eu.org/MBViewer/#/siteUrl=https://octospacc.altervista.org|platform=wordpress.org|includeStyle=data:text/css;utf8,@import%20url('https://fonts.googleapis.com/css2?family=Single+Day&display=swap');.MbPost{font-family:'Single%20Day',cursive;}|includeScript=data:text/javascript;utf8,function%20MbViewerFunction(data){const%20dom=new%20DOMParser().parseFromString(data.html,'text/html').body;const%20tokens=dom.textContent.split('%20');const%20words={};for(const%20i%20in%20tokens){const%20word%20=%20tokens[i];if(words[word])words[word]++;else%20words[word]=1;tokens[i]=%60%3Cspan%20style='color:${atob('Iw==')}${[0,'b58900','cb4b16','dc322f','d33682','6c71c4','268bd2','2aa198','859900'][words[word]]};'%3E${word}%3C/span%3E%60}data.html=tokens.join('%20').replaceAll('nn','%3Cbr%3E');for(const%20img%20of%20dom.querySelectorAll('img'))data.html+=img.outerHTML;MbViewerReturn(data)}">https://hub.octt.eu.org/MBViewer/#/siteUrl=https://octospacc.altervista.org|platform=wordpress.org|includeStyle=[...]|includeScript=[...]</a> (il link con tutta quella roba messa inline è una stringa di quasi 1 KB!). Userò tutta la cosa per rendere gli hashtag nel testo meno intrusivi per il mio sito anche lì, oltre che sul dominio originale. 👋️Finisco con dati ancora più tecnici, per chi non ha una vita: con questo , ogni deve provvedere ad esporre una funzione che, tramite la Channel Messaging API, viene richiamata dalla per ogni messaggio appena questo viene aggiunto al documento visibile; questa funzione riceve dati utili (per ora, solo l’HTML del contenuto; oltre a dati come l’id del messaggio nel flusso, che non sono granché utili all’utente ma devono essere restituiti alla app) e può rimandare nuovi dati indietro richiamando una funzione che è invece l’applicazione ad esporre allo script. Tutto questo ambaradan permetterebbe agli script di effettuare anche operazioni asincrone, comunque, non per forza di dover agire immediatamente alla chiamata. 🤓️

https://octospacc.altervista.org/2024/02/01/emmebi-javascriptico/

minioctt, (edited ) to AdobePhotoshop Italian

[⤴️ 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 , dovrei provare a far iniziare a funzionare il progetto definitivo migliore…” 🥴️

Però poi mi sono resa conto che: magari del alternativo non è semplice progettare tutta l’interfaccia e il suo funzionamento (cosa che va fatta, essendo una cosa da da zero), ma certamente non si posso comunque granché se prima non preparo dei logici che so già che mi dovranno servire… e allora, tanto vale iniziare a lavorare per quelli, integrandoli nella che (per quanto ) è già esistente e funzionante, e acchiappare un bel 2 in 1 (espandere quel , 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 diverse, con diversi. L’idea è di avere un solo 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 di codice per tradurre ogni tipo di entità dai esterni a quello interno, e viceversa… il che non solo è una pazzia, e richiede un botto di (va scritto un numero di complesse pari alle piattaforme da supportare, moltiplicato per 2), ma finisce per dare : 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 di , almeno per quando le task sono semplicemente selezione e riassegnazione di chiavi di (per operazioni più complesse, il codice è più appropriato del ). Era questo che avevo già provato a fare mesi fa (e funzionava eh!), ma, riguardandolo ora, mi stavo rendendo conto che lo strano JSON da me inventato ha dei abbastanza forti, tra cui penso sia un casino tremendo usare 1 solo documento di per fare sia avanti che indietro. Quindi, ho iniziato a ripensarlo da capo, ma ho pensato abbastanza in fretta che, beh… 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 ancora una volta dopo mesi con Jason; almeno, abbastanza sana per capire che è meglio impazzire con , 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 per aver sistemato un , eccetto scoprire poco dopo che, no, nulla era sistemato… e averci dovuto perdere un’altra mezza giornata. 📆️

https://octospacc.altervista.org/wp-content/uploads/2024/01/image-9-960x451.pngIn , 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 di poter raggiungere il 90% di quello scopo intricato semplicemente un documento XML in maniera adeguata, e avere vita facile per ogni , la trovo in concetto. Comunque, ho dovuto (iniziare a) scrivere una mega-funzione totalmente per questa cosa perché, come già avevo constatato mesi fa, ma riconfermato appunto ieri, tutte le in giro per fare trasformazioni di dati così sono troppo generiche, a quel punto usare quelle sarebbe anche peggio che fare tutto in . E credo di aver cercato fin troppo in giro. E, ahimè, prima o poi soffrirò di nuovo, perché dovrò scrivere pure la di traduzione inversa! 😵‍💫️

Che centra con la mezza kangata? In pratica, avendo integrato questo già da ora, MBViewer può visualizzare (alcuni) , e (con qualche problema, per ora) , 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 funziona tutto. Oh well. Ohhh, it’s so well. I non finiscono mai, la tortura della è eterna!!! 😭️

https://octospacc.altervista.org/wp-content/uploads/2024/01/image-10.pngProvate 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/

minioctt, (edited ) to AdobePhotoshop Italian

Scrivo questo in risposta al seguente:

"App postepay — chiaramente c'è qualcosa che non va"https://t.me/journalctl_micro/3193Molto funny: la di PostePay rileva modifiche di sistema ad un che passerebbe , col bootloader bloccato, e suppongo quindi senza . 😁️

Ho preso 5 minuti (uhmm, no, magari) per un breve di quella parte della , arrivando a questa sezione del file (baksmaliato dall’ultima versione presente su APKMirror) smali_classes6/posteitaliane/posteapp/apppostepay/ui/activity/SplashActivity.smali, che invoca il dialogo di avviso in foto: 🤓️

# riga 4358.method public final e()V# ... inizializzazione di altra roba# riga 4503new-instance v1, Lcom/scottyab/rootbeer/b;invoke-direct {v1, v0}, Lcom/scottyab/rootbeer/b;-><init>(Landroid/content/Context;)Vinvoke-virtual {v1}, Lcom/scottyab/rootbeer/b;->a()Zmove-result v1if-eqz v1, :cond_2# ... visualizza il dialogo se il codice sopra non ha saltato# riga 4542:cond_2# ... ritorna e termina il metodo

Detto in italiano, questo invoca un metodo (dal nome offuscatino?) presente in una certa classe “com.scottyab.rootbeer“… ed esce fuori, con una sul web, che questa è una (evidentemente integrata dagli sviluppatori di ) per controllare se un Android è . (Non se passa o meno , attenzione.) 🍻️

È un po’ troppo rubatempo mettersi a capire quale effettivamente è nel codice Java quella funzioncina b;->a()Z ora, quindi tiriamo a . Ci sono, in RootBeer.java, tante boolean, di cui varie ausiliarie, e 2 principali: isRooted[With/Without]BusyBoxCheck(). Queste due principali restituiscono un valore positivo qualora anche solo una delle ausiliari chiamate restituisca true, l’unica differenza tra le due è il fare anche il controllo per la presenza del binario busybox, oppure no… E quindi le opzioni sono le seguenti: 📜️

  • checkForBinary(BINARY_SU), checkSuExists(), checkForRootNative(), checkForMagiskBinary(): controllo effettivo del root; escludo, da quel che ricordo il suo telefono non è rootato, ed avendo il bootloader bloccato direi che possiamo stare tranquilli.
  • detectRootManagementApps(): scarto, se il telefono non è rootato non avrebbe senso tenere app di gestione del root.
  • detectPotentiallyDangerousApps(): controlla se sono installate app “a umma umma”; escludo perché credo nessuna sia utile senza il root, e qualcuna forse è pure malware… eccetto Lucky Patcher, che però ad oggi si auto-spoofa.
  • checkForRWPaths(): scarto, controlla se alcuni percorsi sensibili sono scrivibili, immagino di no col bootloader bloccato e senza root.
  • checkForDangerousProps(): da verificare, controlla se alcune di Android sono particolari.
  • detectTestKeys(): inizialmente sospettavo, ma lo abbiamo verificato (con getprop | grep build.tags), e pare non sia il caso (tutto è listato come “release-keys“).
  • checkForBinary(BINARY_BUSYBOX): questa potrebbe essere, ed è , controlla come ho detto prima la presenza del binario busybox, ma da questo commit del 2020 non è più usata nel check predefinito perché — come detto nel commento in quella parte di , e alla sezione “False positives” del readme — alcuni lo lasciano quando non dovrebbero (io credevo fosse normale tralaltro, non un’anomalia!).

Quest’ultima mi cattura perché innanzitutto, te micro hai proprio un da quello che ricordo, che è uno dei listati esplicitamente sul readme… certo, se la usata nella app fosse stata aggiornata, questo non sarebbe dovuto succedere, a meno che i programmatori delle non abbiano stupidamente usato la funzione di aggressiva. Però tbh, considerando la qualità del o semi-statale qui in , secondo me semplicemente quella non è mai stata aggiornata (da un lato però, come biasimarli… “se funziona, non toccare”…). Al momento però non riesco a ciò, perché non trovo abbastanza vecchi di PostePay, quindi lancio solo al vento. 😩️

Io punto su per risolvere questo . Lo non è il mio, quindi io ora posso solo aspettare, se dovessero uscire novità farò un banale edit. (Sperando non siano così grosse da necessitare di un nuovo ). 😼️

Edit: non ci ho beccato nemmeno per il cavolo: dalla regia, che ha ora testato con il di di , vengo a scoprire che le mie opzioni tecnicamente più plausibili si sono rivelate sbagliate. “Root Management Apps” è cosa fa scattare gli allarmi, cosa che io giustamente ho escluso a priori, ma la regia mi fa appunto sapere che aveva Manager installato (soltanto a prendere polvere perché, questo l’ho pensato bene, non ha il root nell’effettivo); e, come previso, la disinstallazione mette a tacere i falsi positivi. Vabbè oh, non potevo immaginarmelo… 🤕️

https://octospacc.altervista.org/2024/01/21/investigazione-della-app-postepay-senza-radice/

minioctt, to showerthoughts Italian

Ecco un’altra per il che ebbi da subito, ma che non avevo avuto modo di : di riguardanti il stesso, visualizzati in maniera ; colorati e non, in poche parole. 😳️

Oggi mi è capitato di trovare un che facesse proprio al caso mio, permettendo di prelevare dal tramite , e generare un , un , o altra roba. E allora, ho creato una dedicata, nello stesso spirito di cosa già feci per la mia (da lì viene anche un po’ l’idea), che cercherò di riempire di : “https://octospacc.altervista.org/dati-e-grafici-%f0%9f%93%8a%ef%b8%8f/“. Per ora ci sono quella dei al giorno, e delle per ogni giorno.

https://octospacc.altervista.org/wp-content/uploads/2024/01/image-6.pngLa nuvola dei è integrata nel e l’avevo messa da subito sulla (ora spostata), mentre il resto è grazie a questo cosiddetto .Se come me queste robe, fatevi un giro, e magari datemi qualche su che in più … ho anche modificato il del plugin per fargli sputare il utilizzato per ciascun grafico, che potete ed usare sui vostri . ❤️ (Se volete la stessa , sappiate che vi basta aggiungere, nel file wp-content/plugins/sql-chart-builder/functions.php, alla funzione guaven_sqlcharts_local_shortcode, la seguente stringa in una parte che preferite della zona HTML: <?php echo htmlspecialchars($sql);?>)

https://octospacc.altervista.org/2024/01/16/la-pagina-dei-grafi-novi/

minioctt, to telegram Italian

[⤴️ https://octospacc.altervista.org/2024/01/13/wordpress-che-non-e/]

Dunque, quel bellissimo , che ho iniziato a realizzare appena 3 giorni fa… è già . Ehh, si, quel codice di lì non è proprio fatto per gestire un caricamento di dati troppo avanzato e tutto : nel suo normale caso d’uso riceve già preparato dal server, ed usa non , quindi tentare il che ho fatto io è chiaro porti a difficoltà. Si può fare, perché nella si può fare tutto, ma è un . …E un po’ me lo aspettavo, e lo sapevo da quando ho iniziato. 😁️

Considerate, questa mi era venuta per un motivo molto : era da un po’ che volevo implementare una vista più e con moderne (come lo scorrimento infinito, o la vista in contesto) per il nuovo, ma tenendo comunque io il controllo dei miei . Farlo dentro non mi va, dato che alla fine comunque dovrei usare , e a questo punto ho ritenuto l’idea di fare proprio una cosa a parte, che potesse potenzialmente essere facilmente adattata per prendere i anche da altre fonti (e lo fa, legge da ovunque, se opportunamente assemblato), qualora il Altervista dovesse avere dei problemi. 🧭️

Però, questa non è la mia a lungo termine. Per quello, in realtà, ho in mente un semi-segreto che iniziai mesi fa, ma che poi, presa da altre cose, non continuai. Doveva essere una per il Fediverso e, potenzialmente qualunque altro grazie ad un layer di astrazione di interno. È Il che vorrei far funzionare con una doppia , a o a “piazza” (stile Miiverse), e quindi in secondo luogo anche come Matrix, e in terzo e quarto per e standard… problema è che, dovendo non solo tutto il , ma anche svecchiare una spaventosa porzione del , non è affatto una cosa rapida arrivare ad uno stato di primissimo . 😳️

Insomma, è per questo che questa piccola , tirata su alla bene e meglio e che esiste in buona parte per via di non mio, l’ho chiamata “”. Continuerò ad aggiornarla, anche dopo che ora ho aggiunto l’ultima funzione fondamentale, ossia l’apertura di specifici? Probabilmente no, sarebbe meglio pensare a sistemare quell’altro progetto e fare un robo fatto bene. Importa qualcosa? Naaaah… come si dice, “the first rule of gun safety is to have fun“? Vale la stessa cosa per il , quando l’arma è la propria tastiera insomma. Basta sia stato . 😈️

https://octospacc.altervista.org/2024/01/16/spaghetti-a-breve-termine/

minioctt, to Blog Italian

della giornata: ho preso in prestito il che fa funzionare t.me, e l’ho riadattato per gestire in questa classica “a ”, o più in generale “a bolle di ” (da cui uno dei significati del nome, )! 👁️‍🗨️

Potevo probabilmente sgraffignare codice di altro tipo per lo stesso scopo (anche se con una un po’ diversa, ad esempio di vari del Fediverso), ma ho preferito questo di perché non usa framework astrusi come React, solo e quindi a farci si fa subito subito. ⚒️

Dovrebbe funzionare per tutti i WP che abbiano la attiva e senza restrizioni CORS… provatelo per il mio a questo indirizzo, altrimenti rimpiazzate il valore siteUrl con un altro se credete possa fungere: https://hub.octt.eu.org/MBViewer/#/siteUrl=https://octospacc.altervista.org 🤗https://octospacc.altervista.org/2024/01/13/wordpress-che-non-e/

VID_20240113_212857.mp4

minioctt, to telegram Italian

Prima che commettesse quel gran bel po’ di trolling, seguivo alcuni di varia su … 🪵

Ora che mi sto ricordando, almeno quelli sto potendo importarli nel mio di , tramite , che mi genera i documenti per qualunque . 💬

Però… la media di di un non è granché adatta a consumare di quel tipo, spesso tanti e corti. E allora toh, in qualche quarto d’ora ho creato dei per la mia , che tagliano di molto i pezzi inutili della quando navigo nella mia cartella fatta apposta (mentre per tutte le altre fonti non c’è alcuna ). 🖌️

Ecco una (con il profilo ) di cosa ho fatto per ora, potete provare su https://feeds.octt.eu.org/ oppure rubare il per il vostro (sono tutte modifiche , tramite e ). ✨https://octospacc.altervista.org/2024/01/12/devo-aggregare-i-microblog/

screen-20240112-172504.2.mp4

minioctt, (edited ) to random Italian

Ecco una cosa assurda che ha trasformato la mia faccia in faccia scheletrino (💀). Dunque, mi servirebbe #testare una cosa (che a questo punto non dico ancora perché beh, si sono messe di mezzo le rogne) tramite interfaccia #SPI; il Raspino non posso usarlo perché non ho l’header per la #breadboard (dovrei comprarlo), e quindi uso il #NodeMCU. 🪨️

Boh, copio nel filesystem di #MicroPython i file della libreria che penso mi serva… e non va perché la versione di MP che ho è vecchia rispetto al #codice. Perdo tempo solo per backuppare tutti i file sul PC per poi riformattare la #flash della #board, poi quindi flasho il #firmware… e inizialmente sembra funzioni tutto, ma poi scopro che la #scheda si riavvia a caso quando collegata ad alcune porte #USB del PC. Collegandomi ad altre, invece, è la mia tastiera smette di funzionare (inizia a perdere tantissimi input). Sarà una regressione strana del firmware… penso. Avanti e indietro varie volte di ricopiare sul #MCU i file che avevo prima, nella speranza di continuare sulla mia strada, e invece ho perso solo tempo. E anche ora che ho rimesso (credo fosse quella, a memoria) la versione del firmware che avevo prima, 1.17, stesso casino (anche se i riavvii sono meno frequenti, ma ci sono). Dal portatile invece appare come dispositivo seriale, ma solo per degli istanti e poi non va più. 😶️

Che cavolo è successo? È la #megafine? Ho #flashato con il tool consigliato (anche con diverse modalità), e in ogni caso non ho avuto alcun errore (infatti beh, il #flashing è andato in sè sempre bene). Ormai io non. Quella cosa che dovevo provare dovrò farla con l’SDK C, perdendo un sacco di tempo perché sul #ESP8266 va riflashato l’intero firmware di base ogni volta che si compila uno sketch (~20 secondi a #compilazione?)… #mannaggia. Il #sasso mi ha lasciato metà a piedi. 😭️

https://octospacc.altervista.org/2024/01/10/1003/

#board #breadboard #codice #compilazione #ESP8266 #firmware #flash #flashato #flashing #Mannaggia #MCU #megafine #MicroPython #NodeMCU #sasso #scheda #SPI #testare #USB

minioctt, (edited ) to opensource Italian

Diversi anni fa testai, con scarsi risultati, https://nebula.chat, una del di Telegram, perché ne scoprii l’esistenza ed era come concetto. A quanto pare ha cambiato nome, ora si chiama , l’ho scoperto qualche ora fa quando mi è tornato in mente questo fatto e ho voluto ritestare il . 💍

Sembra che lo sia andato parecchio avanti, ora pare che le private e i canali funzionino in modo praticamente perfetto (non ho testato i gruppi), con addirittura le vocali (credo, non ho potuto controllare se si sentisse), e anche i bot. Questo l’ho verificato sulla ufficiale di , ma in teoria è … solo che non capisco come mai sul il dica che queste ultime succose siano “enterprise” (e di contattare il tizio lì se se ne ha bisogno), e tra le c’è chi dice che non riesce appunto ad usarle, ricevendo errori che dicono proprio che siano cose di un’edizione . Cercando nei stringhe come ErrEnterpriseIsBlocked riesco a trovare qualche parte che fa riferimento a “chiave di licenza da https://teamgram.net/ richiesta per sbloccare le funzioni enterprise”, ma non vedo controlli di licenza nelle molte parti che tirano questo errore, che tralaltro sembrano fare esclusivamente quello. In sostanza, sento puzza di mancante dalle pubbliche, e se ci ho azzeccato è un peccato. 👾

In ogni caso, non so che tipo di utilità pratica possa avere. Forse giusto se si vogliono creare in contesti dove sarebbe preferibile (per abitudine, principalmente), ma quello vero per un motivo o un altro non si può usare (visto che ormai è gestito sempre peggio…), o probabilmente in collaborativi, perché altrimenti l’assenza di federazione è limitante. Comunque è giusto tenerci su un occhio. https://github.com/teamgram ✈️

https://octospacc.altervista.org/2024/01/09/test-tegram/

minioctt, to Matrix Italian

Da quando abbiamo dovuto spostare la sulla necessariamente dopo il ban di , gli sticker da usare in sono mancati troppo. Per questo una fa ho iniziato a , una (tutta ) che permette di gestire facilmente e in maniera più automatizzata possibile la propria collezione di pacchetti, per i client della che li supportano tramite le . 🚀️

Nei giorni passati ora ci ho lavorato parecchio, e ho avuto sia modo di smussare di più gli spigoli della (che però deve essere ancora parecchio levigata, ahimè), sia, cosa essenziale, aggiungere importanti. Ecco quindi che, qualche centinaio di righe di più tardi, stasera la supporta l’importazione di pacchetti da , sia quelli statici che quelli (non ancora quelli ). Eccovi una e, come sempre, aiuti e pareri sullo sono graditi. 🕷️ (Nella , la parte dove vengono aggiunti sticker da di Telegram è velocizzata 8x, purtroppo codificare quei in buona è costoso).

L’ultima versione, appena , è sempre disponibile a https://hub.octt.eu.org/MatrixStickerHelper/… provatela! 🙃️https://octospacc.altervista.org/2024/01/08/gli-sticker-da-telegram-a-matrix/

  • All
  • Subscribed
  • Moderated
  • Favorites
  • anitta
  • InstantRegret
  • thenastyranch
  • mdbf
  • khanakhh
  • Youngstown
  • slotface
  • hgfsjryuu7
  • ngwrru68w68
  • rosin
  • kavyap
  • Durango
  • PowerRangers
  • DreamBathrooms
  • Leos
  • magazineikmin
  • modclub
  • tacticalgear
  • osvaldo12
  • GTA5RPClips
  • everett
  • ethstaker
  • vwfavf
  • tester
  • normalnudes
  • cisconetworking
  • cubers
  • provamag3
  • All magazines