Vai al contenuto

2024

C(azate per il C)

[sc name=quote-embed-post]2024/02/10/cazo/[/sc]

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 #rogna, avendo scritto #codice abbastanza sensato che pare funzionare, per gestire la struttura #DCIM... ma nel frattempo ho scoperto un altro #problema: 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 #idea 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 #console, allora lo faccio sul mio server Linux; sul #3DS 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... 😈️

C(azo)

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

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

Ho pensato per un attimo di forkare #LumaCFW (ho controllato e nessuno lo ha fatto, almeno non per versioni recenti), e modificare la funzione di screenshot per salvare in #JPEG, 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 #stdlib #C, quindi non è immediato far funzionare tutto. 😮‍💨️

La seconda opzione, più sfavorevole ma comunque decente, sarebbe un #homebrew che converte le foto da #BMP a #JPG 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 #codice di #conversione, 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 #file (automatica, non pianifico di mettere menù o cose, deve semplicemente aprirsi, convertire, e chiudersi). #Mannaggia! 🤢️

Purtroppo C per fare cose di #utilità pratica (ossia non videogiochini, o roba tipo demo audiovisive, e così via) è #tedioso... soprattutto perché la #API 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, #pezzi. Vabbè, oggi si soffre. 💀️

insetti utf nel mio codice!!!

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

  • Perdi almeno 1 ora buona appresso ad un #glitch 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 #tardi in culo, ti prepari per andare a #dormire e nel frattempo pensi, ma niente... a metà spegni ormai il PC, finisci di prepararti, e continui a #pensare, e solo a quel punto un'idea ovvia viene in testa. Troppo tardi ormai. 💀️

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

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

Insomma, è una #condanna. Non se ne esce. Comunque si, il mio #errore era #stupido: stavo cercando di caricare #file nella galleria cloud di #WordPress tramite la #API REST, ma ricevevo sempre un rest_upload_sideload_error... controllo gli header, tutti giusti; cerco in giro, poca roba che non mi aiuta; provo #minuzie 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 #codice 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 #HTTP, e noto una differenza stronzetta: il corpo generato dal mio #server è 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 #programma che legge i #dati trasmessi dal client, vado a castare tutto ad una stringa; sarà questa la causa? ...E, ricordandomi di altri #incidenti simili capitati in #NodeJS, capisco subito che è così. Detto in breve: la #codifica 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 #computer devono supportare nella loro codifica migliaia di #caratteri discutibili, come tutti quelli emoji. E io, dopo aver apportato questo #fix, devo ora continuare a programmare. Non. Se. Ne. Esce. 😭️

WP…GPT?!?!

Fino ad ora ho apportato vari piccoli #miglioramenti al #sito del #MicroBlog con vari metodi, nessuno che includa anche il creare veri #plugin. 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 #WordPress sia quella? 😫

Quindi, ieri sera, non avendo molto tempo da perdere, ho provato a chiedere a #ChatGPT. E, con mia sorpresa, non solo non ha allucinato creando #codice 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 #SQL injection! Alla fine gli ho fatto esporre uno #shortcode, da aggiungere su normali pagine, che visualizza l'HTML generato dal #PHP. È 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 #script, attivandolo su una nuova pagina: Ricerca 🔍️. Essenzialmente quello che mi serviva era una #ricerca 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ò. 😁

mannaggia a Vodafone, di continuo

Di cosa dovrei #incazzarmi di più: del fatto che ormai da mesi — e in questi ultimissimi giorni la #storia è peggiorata #tragicamente, guardare per credere — la linea #Internet di casa salta di continuo, mettendo da sé continui bastoni tra le ruote al mio workflow... o del fatto che quando collego il telefono via tethering USB il mio sistema desktop sembra non essere sempre in grado di routare correttamente i pacchetti — in certi casi capisce che deve farli passare attraverso il telefono sennò non vanno da nessuna parte, ma altre volte si ostina a mandarli al mio bridge ethernet? #MANNAGGIA!!! 🗡️🗡️

È una domanda retorica, ovviamente; mi #incazzo più con #Vodafone, che mio padre paga per farci avere in cambio un servizio che dire #scadente è fargli un complimento, di quanto mi possa mai arrabbiare contro un software no-profit per un #problema che posso aggirare praticamente scollegando dei cavi. Però davvero non ne posso più, non solo questo comportamento mi ruba tempo quando lavoro al PC, ma mi manda pure giù le cose che ospito sul serverino in casa, e che palle. 😭️

Ogni tanto ricordo di questo bordello a mio padre, ma fino ad ora ancora non l'ho convinto a provare a comprare un #router nuovo, uno vero con cui rimpiazzare quel rottame della #VodafoneStation... lui dice che probabilmente i problemi sono sulla linea, e in parte anche io credo sia così (ma chissà quale segmento della linea!); però se anche così fosse il caso, resta comunque indecente il fatto che, mentre il #collegamento alla WAN si scollega e il #modem tenta di ricollegarsi, la Station non è nemmeno in grado di roteare pacchetti in LAN... cioè, fai ping e avoja ad aspettare, non risponde. È evidente che pure il #software che sta lì sopra fa schifo, mica solo la linea. E-waste puro. 💀️

Ah, non centra con questi #problemi (mi è sempre capitato, e non impatta su questa situazione), ma guardate qui sto #bug: certe volte (credo a furia di disconnessioni e riconnessioni?) #NetworkManager sfancula e cambia i nomi delle mie schede di #rete nel pannello rapido (in questo caso di GNOME, ma lo faceva anche su Cinnamon)... ma poi nelle impostazioni i nomi sono corretti. Mamma mia che #disagio il software. 😩️

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ì. 😤️

Prima ho pensato: che mancanza di #rispetto nei confronti di quei #carabinieri che hanno suonato subito prima dell'inizio di #Sanremo! Voglio dire, non gli hanno fatto nemmeno mettere piede sul palco, come a dire "si vabbè, vi facciamo #suonare, però col cazzo che entrate dentro l'Ariston!". 💀️

Mia madre ha detto: "eh ma stanno a #cavallo, come facevano a farli salire sul palco?!", e allora io dico: ma voi immaginate che qualcuno, lì dal fottutissimo #festival della canzone italiana, vi invita, e vi dice che suonerete, ma poi quando arrivate lì non vi degnano nemmeno di entrare nel teatro, vi costringono ad esibirvi appena fuori... non vi sentireste di fregare? Io si, e non poco. Ragà, l'ingresso è grosso, li riuscivano a far entrare i #cavalli secondo me, se avessero voluto, eddai. 😖️

se solo fosse passaparola…

Giusto un #pensiero, che mi è venuto mentre ieri sera mi stavo addormentando, e che avrei perso credo per sempre se proprio ora non mi fosse tornato alla mente: la #parola "password" ha il potenziale latente di essere un #ossimoro. 🗿

Il #significato letterale in #italiano, lo sapete, sarebbe "parola di passaggio", cioè quella #stringa di #testo che permette di accedere a qualcosa... ma se traducessimo la parola nella nostra #lingua dall'inglese correggiuto, anziché dal normale #inglese? Ecco che avremmo la "passaparola". E questo è #poetico, perché una #password è esattamente quel genere di #informazione che, di solito, si dovrebbe evitare di far finire nelle grinfie di un passaparola; va tenuta #segreta, in genere. 🤫

Credo che l'unico motivo per cui noi #italiani non abbiamo preso il vizio di dirla così, al contrario di altre #espressioni #anglofone che sono state distorte, è perché dire "registrati inserendo un nome utente e la tua passaparola" sembra una #frase proveniente da un dialogo di Pokémon che menziona, che ne so, uno strumento chiave. 👾

E, un'altra cosa a riguardo della questione che fa molto pensare, ma è diversa: quella che in genere si definisce una "password sicura", non può quasi mai essere una semplice "password", ma piuttosto deve essere una "passphrase", o anche, direi, una "passstring"; cioè, rispettivamente, una frase con #parole multiple, oppure una sequenza di caratteri che abbia un'entropia più alta della parola media nella lingua umana media. Viviamo proprio in una società... 💀

ninty devtoolin’

Presa dai mezzi impegni oggi ho dimenticato di postare questo... in pratica, volevo capire come mai reCAPTCHA sul mio #sito non caricasse dal #browser del #3DS, quindi ho dovuto avviare i #DevTools (che ovviamente sono da usare su un computer companion, non appaiono sulla #console). Ovviamente non ho risolto un bel nulla di quel problema, ma bando alle ciance ora. 🥽

A parte il fatto che ho dovuto cercare sul #web come aprirli – su WiiU, e credo su old3DS, basta selezionare una voce nelle impostazioni; su #new3DS bisogna tenere premuti i tasti A, B, X, e Y mentre si avvia l'applicazione, e a quel punto esce un dialogo di conferma – ma poi che cavolo ha combinato #Nintendo? È estremamente bizantina 'sta roba: la console apre un server HTTP (e fin qui, nulla di #strano), che devi visitare dal tuo PC per scaricare un archivio ZIP contenente i file HTML del #debugger, che apri nel tuo browser per collegarti alla consolina. Non ricordo se anche su old accadeva questo, onestamente, ma certamente su WiiU no: visitare l'indirizzo IP locale dal PC reindirizzava ad una versione hostata sui CDN di Ninty degli strumenti. 🎛️

Questo #aggeggio è davvero così scarso che non sarebbe stata una buona idea fargli streammare direttamente gli asset del tool all'altro computer? 😢