Is there a more efficient way to check if two accounts follow each other via Mastodon's API, other than fetching followers of both accounts and finding a match?
Why is it so fun to create APIs? Something about it is so oddly satisfying, the image down below is part of my API documentation and its just pure dopamine to look at xD I could do this kind of stuff forever… #api#rustlang#axum#programming#technology#coding#dev#development
Ieri non ho assolutamente portato a zero la batteria del tablet per tutto il tempo che ci ho messo a provare #app diverse e a vedere cose per risolvere l’ennesimo problema causato dalle nuove versioni di #Android… ok, in tutta onestà la batteria l’ho finita nel bus più tardi, però comunque, una buona parte della carica è sparita solo nel tempo perso prima. 😶🌫️️
Un altro po’ mi sembrava di star usando iOS per non riuscire a fare una cosa così banale come: aprire un file #HTML direttamente nel #browser, ed averlo funzionante, con anche il caricamento di tutte le risorse embeddate, senza ricorrere ad un webserver locale che causa solo rogne in più… come ho detto su OTIDroid, questa cosa sembra una cazzata, ma è sorprendente quanto è difficile da Android 11 in su:
Firefox Fenix non ha mai supportato i percorsi file:///, #mannaggia a te Mozilla
Firefox legacy funzionerebbe, solo che la versione più recente (v68.11.0) è comunque antica e quindi molte nuove #API web non vanno
I #navigatori Chromium, da quando sono aggiornati per targettare le nuove API Android, non riescono più a vedere qualsiasi file su /sdcard/, ma solo quelli multimediali (utilissimo eh?); e si, hackerare il manifest per portare indietro l’API target rompe la app
La più recente versione di Chromium precedente a tutte queste novità che ho trovato (~v79.0.3945.94) è comunque molto vecchia, stesso problema di Firefox
Evidentemente nessuno ha voglia di creare un browser che funziona correttamente, (nemmeno io, in quel momento volevo solo fare un po’ di programmazione HTML), maremma maiala… ma, per fortuna mi torna in mente che una #soluzione ci sarebbe: le app che usano la #WebView di sistema funzionano ancora normalmente (senza codice aggiornato per lo #storage) se hanno un target SDK vecchio ma, proprio perché il motore che usano è quello di sistema aggiornato, la compatibilità con gli standard è massima. 😤️
Sorprendentemente, di #browserini così che siano allo stesso tempo non mezzi rotti, abbiano un target vecchio, e il permesso di lettura dell’archiviazione, non ce ne sono molti. L’unico che ho trovato è “Tint Browser“, che funzionerebbe già così senza fatica, e stavo per usare quello… ma ha uno strano bug che fa sparire tutte le schede aperte sia alla chiusura della app, che la rotazione dello schermo… e non viene aggiornata da 10 anni, quindi mi sa mi sa che il #problema non sarà risolto. 🕸️
Ho però notato che virtualmente qualunque altra app WebView browser non si rompe se subisce quelle modifiche che ho detto all’AndroidManifest.xml, probabilmente perché sono così semplici che non hanno codice chissà quanto specifico a certe versioni delle API… quindi ne ho semplicemente scelto uno che mi piaceva, ho usato un editor di #APK per portare indietro il valore android:targetSdkVersion del blocco <uses-sdk> (mentre il permesso READ_EXTERNAL_STORAGE c’era già quindi non ho dovuto scriverlo io), e in mezzo minuto il problema è risolto. 🌚️
Tra gli infiniti che si trovano ho preso questo “SmartCookieWeb” comunque, ha delle funzioni avanzate carine. L’APK già modificato, in caso ne aveste bisogno, l’ho caricato qui sul mio server.
Una cosa strana però: teoricamente è stato Android 11, cioè target 30, ad introdurre lo spacc più totale dei #permessi di accesso all’archiviazione locale, quindi a regola impostare il 29 (Android 10) sarebbe sufficiente a visualizzare il permesso di gestire tutti i file nelle impostazioni al posto di quello per soltanto i media… eppure io ho dovuto scrivere 28 (Android Pie). Sarà un fatto del mio Android 12 forse, boh, anyways the fog is coming fuck you Google. 👁️
Just wanna have people click a button on my website and have it turn on a light in my living room without dealing with WP API, ya know? #Wordpress#API#WordpressAPI
I looked at the #rust based, #Cosmic#desktop#environment, by #System76. This is branded "alpha" right now, but I'm flabbergasted by the users online, who think that "by summer" that thing will be ready for general use.
News flash, it won't.
It generally takes 2-3 years minimum after the official release for a brand new DE (with a brand new #API & libs) to become truly useful to most people. DEs aren't adopted unless matured. Hamper your expectations, lads.
"The site... builds upon work that was begun by YouTuber 'Owenergy' who, in 2018, uploaded a video that compiled every Reeves whoa that had occurred so far. That video, which is nearly six minutes long, catalogues Reeves’ whoas from 1986 until what was then the present day. Now, [the site] has updated these whoas and made them accessible via JSON APIs which can be embedded into websites."
OWASP OFFAT (OFFensive Api Tester) is created to automatically test API for common vulnerabilities after generating tests from openapi specification file.
Credo che fare quello che volevo fare riguardo le #PWA, a maggior ragione ora che mi sto informando un po’, è più complicato di quanto credevo… ecco perché ai tempi cercai vie apparentemente più impegnative. Il lavoro di ieri è comunque valido e meglio di nulla, ma ho paura che la mancanza del supporto offline si possa sentire, perché quel metodo non la aggiunge magicamente, e riuscire a farlo appunto non è una passeggiata. 😤️
Per poter “funzionare #offline”, un sito web deve registrare un Service Worker che risponde ad un particolare evento restituendo risorse precedentemente cachate. Sarebbe abbastanza semplice, se non fosse che, per una scomodissima combinazione di requisiti di sicurezza e mancanza di #API nei browser, non c’è letteralmente alcun modo pratico di registrare uno di ‘sti cosi tramite estensioni, figurarsi userscript. Nello specifico, gli script per i ServiceWorker devono essere necessariamente serviti su protocollo https: (quindi niente blob: o data:, cosa che ci taglia via immediatamente gli inject con gli userscript, ma nemmeno file: o http:), per forza dallo stesso dominio della pagina (e quindi non si scappa ospitando per conto proprio solo quel file senza clonare il #sito), e come ho detto non ci sono API per iniettarne da #estensioni. 😨️
Ovviamente, andando per la strada di creare un’estensione, in pura teoria non servirebbe nemmeno preoccuparsi di usare questo metodo, perché a quel punto si potrebbe direttamente usare l’estensione per intercettare il traffico, salvandolo quando è nuovo, per poi servirlo da una cache quando non c’è Internet. Le API sembravano proprio adatte, quindi mi sono messa a fare varie prove, per poi scoprire che… non riesco in alcun modo a visualizzare il contenuto restituito per una pagina se non c’è #Internet: la schermata di errore del #browser prende precedenza, e nessuna delle cose che ho provato riesce a sovrastarla. E anche potenziali #workaround, come usare le API per modificare il contenuto della pagina di errore pur rimanendo sull’URL desiderato, col piffero che funzionano! (E no, sembra proprio che io non possa usare le richieste #web dell’estensione per servire una risposta fake ad un path da registrare come worker, l’evento viene triggerato ma il navigatore non si beve il risultato.) 😭️
In poche parole: ennesimo #rabbithole#JavaScript che mi sta completamente consumando, e anche molto velocemente, perché più trovo ostacoli alla mia #idea più cerco di andare veloce per superarli, ma più ne incontro sempre di nuovi e più il cervellino ammuffito deve elaborare, ma ci sono aspetti del #webdev che sarebbe meglio non elaborare proprio. A questo punto, tutte le strade che posso prendere per risolvere il #problema sono in ogni caso #hack: ne ho in mente qualcuna rimanendo con un’estensione, che comporterebbe comunque un dietro le quinte estremamente bizantino ma nessun particolare compromesso di sicurezza o usabilità… oppure, ben due soluzioni ancora peggiori (e in parte simili), che spero vivamente di non dover usare; sarebbe anche peggio. Comunque, che cavolo, questa piattaforma di #sviluppo è piena di risorse, una maniera prima o poi si troverà. ☠️