home.social

#codice — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #codice, aggregated by home.social.

  1. Ceremonial de Coronación y Unción y Exequias de los reyes de Inglaterra.

    Elaborado en el escritorio de la abadía de Westminster, este códice reproduce el ritual de coronación de los reyes de Inglaterra y los funerales regios.
    Se desconoce el motivo y momento de su llegada al reino, aunque tradicionalmente se ha vinculado al reinado de Carlos III, que tuvo embajador en **Londres**.
    Aborda rituales separados para la coronación del rey y de la reina, como fue el caso del propio Carlos III y de su esposa Leonor de Trastámara.

    Westminster, hacia 1390-1399.
    Códice manuscrito y miniado sobre vitela, en latín (24 folios), con cubiertas de pergamino sobre alma de madera.
    Hoy se conserva en el Archivo Real y General de Navarra

    #codice #edadmedia #medievo #libros #books #navarra
    #historia #history #medieval #MedievalHistory #arte
    #art #ancienthistory #historiaantigua #fotografie #fotografia #photography #westminster #inglaterra

  2. Antifonario de León.
    Realizado entre los siglos X y XII, es un libro litúrgico musical que contiene más de una centena de oficios del rito hispánico.
    Este manuscrito es el mejor ejemplo conservado de los antifonarios de la liturgia hispánica y una de las fuentes que más información aporta en la actualidad para comprender esta forma ritual, que de sustituyo por el rito romano desde el siglo XI.

    #codice #edadmedia #antifonario #medievo #libros #books #historia #history #medieval #MedievalHistory #arte #art #ancienthistory #historiaantigua #fotografie #fotografia #photography #León

  3. Códice Rico.
    Cantigas de Santa María.

    Las cantigas de Santa María (entre 1270-1282) son un recopilatorio de más de cuatrocientas canciones dedicadas a la Virgen realizado en la corte de Alfonso X.

    En su creación intervinieron varios trovadores, entre ellos, el propio Alfonso X, presentándose como impulsor del proyecto en el prólogo, aparte de la intitulación de la obra.

    Las cantigas están escritas en galaico-portugués y narra historias milagrosas de la Virgen.

    #codice #edadmedia #medievo #libros #books #historia #history #trovadores #cantos #cantigas #medieval #MedievalHistory #arte #art #ancienthistory #historiaantigua #fotografie #fotografia #photography

  4. Corán de Muley Zaydan.
    De la Biblioteca particular de este Sultán de Marruecos que fue traído a España en 1611.
    Sorprende por la riqueza decorativa usada de principio a fin.
    Su escritura de tipo 'mabsut' está exquisitamente cuidada.
    Está vocalizado en rojo con los 'tasdid' y los s'ukun' en azul.
    Los títulos de las 'suras' están en cúfica oro sobre fondo azul, dándole un aspecto muy hermoso.
    #book #libros #codice #historia #history #fotografia #photography #coran #ElCoran

  5. Libro de Horas de Ana de Bretaña.
    Las Grandes Horas de Bretaña (datado entre los años 1503-1508) es, sin duda, la obra maestra de la pintura francesa, como corresponde a un manuscrito destinado a una reina de Francia...
    #book #libros #francia #codice #sigloxvi #historia #history #arte #art #fotografia #photography

  6. Libro de Horas de Ana de Bretaña.
    Las Grandes Horas de Bretaña (datado entre los años 1503-1508) es, sin duda, la obra maestra de la pintura francesa, como corresponde a un manuscrito destinado a una reina de Francia...
    #book #libros #francia #codice #sigloxvi #historia #history #arte #art #fotografia #photography

  7. Libro de Horas de Ana de Bretaña.
    Las Grandes Horas de Bretaña (datado entre los años 1503-1508) es, sin duda, la obra maestra de la pintura francesa, como corresponde a un manuscrito destinado a una reina de Francia...
    #book #libros #francia #codice #sigloxvi #historia #history #arte #art #fotografia #photography

  8. Libro de Horas de Ana de Bretaña.
    Las Grandes Horas de Bretaña (datado entre los años 1503-1508) es, sin duda, la obra maestra de la pintura francesa, como corresponde a un manuscrito destinado a una reina de Francia...
    #book #libros #francia #codice #sigloxvi #historia #history #arte #art #fotografia #photography

  9. Libro de Horas de Ana de Bretaña.
    Las Grandes Horas de Bretaña (datado entre los años 1503-1508) es, sin duda, la obra maestra de la pintura francesa, como corresponde a un manuscrito destinado a una reina de Francia...
    #book #libros #francia #codice #sigloxvi #historia #history #arte #art #fotografia #photography

  10. Consigli (09/ottobre/2025)

    Ogni tanto riesco ancora a trovare il tempo per dedicarmi alla computer music, ecco un piccolo brano scritto fra ieri ed oggi.

    #music #csound #computermusic #coding #musica #codice

  11. 🌿 Memoria Textil y Naturaleza 🌱 - Foro Dahlia del Jardín Botánico IB UNAM -

    Reinterpretación del Códice de la Cruz-Badiano -> es.wikipedia.org/wiki/C%C3%B3d (Libro sobre las hierbas medicinales de los pueblos indígenas).

    🏫 es.wikipedia.org/wiki/Jard%C3%

    🌸 Xltomatl, 🌷 Matlalxochitl, 🍃 QuauHtlaxoxocoyolin

    #mexico #plantas #codice #pueblosoriginarios #bordado #UNAM #plants #nahua #ciudademexico

  12. Questa sera riparte “Discovery”, la serie di live #coding dedicate alla scoperta dei #tool di #sviluppo. 🧑‍🚀

    Destinazione: il meraviglioso universo dell'analisi statica del #codice. 🔬

    Missione: installare e configurare #SonarQube per analizzare codice #Delphi con il #plugin dedicato. 🕵️

    Unisciti all'equipaggio per assistere in diretta, fare il tifo o anche sfottermi... simpaticamente eh!? 🤭

    Il lancio è previsto per le 21.30 sul mio canale #Twitch “CompilaQuindiVa”! 🚀
    👉 twitch.tv/compilaquindiva

  13. Nuovo appuntamento su #Twitch per scrivere codice assieme! 🧑🏻‍💻

    Inizieremo un gustoso progettino: la **creazione di un add-on che permetta di generare #screenshot accattivanti e formattate del #codice sorgente** direttamente dall'editor, per creare #slide, #presentazioni e #blog! 🤩

    📅 Quando: martedì 22 ottobre (Temptation Island is nothing! 🏖️)
    ⌚ Ora: 21.30 (dopo Affari Tuoi 😅)
    📍 Dove: twitch.tv/compilaquindiva

    Ci vediamo in live per rilassarci e divertirci assieme: è aperto a tutti!! ✨

  14. Oggi #rant allucinante, è la prima volta che Python mi fa venire così tanta voglia di #piangere… mi farebbe proprio molto piacere conoscere chi sono i PAZZI pazzoidi che hanno completamente ROVINATO il linguaggio introducendo asyncio. Maremma trogolaia, è un merdaio allucinante secondo me, un’implementazione apparentemente furba di async/await, che però è estremamente malata: nel momento in cui si hanno davanti problemi reali, la presenza di anche un solo po’ di codice asyncio va a contaminare tutto il resto che ne dipende, ed è un incubo… Sento già il “beh, se fa schifo questa funzione di Piton allora non usarla…“; peccato che tutte le librerie di terze parti che adottano questa maledizione per il loro funzionamento, puntualmente, vanno a deprecare il vecchio codice normale. Quindi si può solo piangere, concedetemelo. Fortunatamente, sembra che io non sia l’unica ad odiarlo… 😭️

    Apparentemente, asyncio sembra appunto simile all’asincronicità che si ha su JavaScript da ES6, ma è molto, molto peggio. Il problema più grosso è che costringe alla propagazione, cioè: funzioni async possono essere chiamate solo usando await, ma la parola await può essere specificata solo dentro funzioni async… quindi, tutto un dato stack di chiamata deve essere fatto tenendo conto di asyncio, e questo significa dover ristrutturare per intero vecchi programmi (mentre, su JavaScript, funzioni asincrone possono essere richiamate anche senza attenderle, semplicemente omettendo await). Io il restructuring non la farò, perché non andrò a perdere ore solo per il risultato di rendere il mio codice ancora più complicato da mantenere, quindi… Per fortuna, esiste il metodo .create_task() per avviare qualcosa di asincrono da un contesto asincrono e lavarsene le mani… però, aspetta, esiste anche .ensure_future(), e… non se ne esce… 🥴️

    Ecco un altro problema di asyncio che, coincidentalmente, fa anche rendere conto di quanto brutta di una hack sia la sua implementazione… è letteralmente costruita alla bene e meglio al di sopra di parti già esistenti di Python e che non avrebbero mai dovuto accomodare niente di simile. E, nel corso dei vari major update, questo modulo ha accumulato così tanta roba, teoricamente tutta diversa ma nella pratica indistinguibile per le differenze troppo sottili, che a questo punto non mi stupisco di come mai ho perso ore e ore appresso al mio problema oggi. Non ho letto il codice che ci sta dietro eh, mi risparmierò questa tortura, ma ho come il presentimento che sarà proprio la sagra del lasagna code… persino la documentazione ufficiale fa parecchio paura, e ciò fa pensare, perché in genere quella di Python mi pare tutto sommato buona — ho visto di meglio eh, però certamente non è malvagia. ⛏️

    Addirittura asyncio avrebbe tecnicamente una specie di stato globale (bad!!!), al di sopra di cui è costruito un event loop. È per questo motivo che ha una serie spaventosa di metodi globali per gestirne il funzionamento (che non posso realisticamente elencare nella totalità), ed è questo che poi fa scaturire i problemi pratici nel mischiare codice asincrono con tradizionale. Soprattutto quando, come nel mio caso, il codice tradizionale gira molto attorno all’uso di thread secondari (perché deve lavorare in un modo che è sempre non bloccante, che non ha mai da awaitare niente). Vi giuro, ci ho provato in tutti i modi più strani letti da una decina di discussioni online diverse, ma no, non c’è verso di richiamare metodi gestiti da asyncio da un thread diverso da quello in cui questi risiedono (o partono errori, oppure addirittura comportamento indefinito). Su #Python non si può abusare il sistema degli eventi come su JavaScript per mettere una pezza a ciò, quindi la situazione è nera. 🕋️

    Mi disp, dovevo sfogarmi, visto che tutto questo è stato semplicemente per… mettere le fondamenta per il bridging dei messaggi tra piattaforme diverse in #WinDog… nello specifico, verso Matrix (@windog:matrix.org), perché è con la libreria matrix-nio che sto sclerando. Maledetti loro che hanno fatto a pezzi il vecchio HttpClient, continuando a mantenere solo l’AsyncClient. Ancora non ho caricato il nuovo commit, ma comunque, questo è il codice che alla fine ho scritto per risolvere il problema… bruttissimo, non volevo davvero ricorrere a ciò, ma non voglio nemmeno ristrutturare l’intero bot, né tantomeno buttare questa libreria e reimplementare a manina in HTTP le tantissime API che mi servono. Quindi, la mia soluzione è stata usare una coda in cui inserire i dati che vengono da thread separati, e questa poi verrà gestita dall’unico thread dove gira il #codice di Matrix… tutto con un uso molto specifico dei vari metodi di asyncio. È dolore. 👇️

    def handler(...):  async def queue_handler():    asyncio.ensure_future(queue_handler())    if not len(queue):      # evitare che la CPU vada al 100% ☠️      time.sleep(0.01)    while len(queue):      sender(*queue.pop(0))  async def client():    # [...]    asyncio.ensure_future(queue_handler())    # [...]def sender(...):  try:    asyncio.get_event_loop()  except RuntimeError:    queue.append(...)    return None  asyncio.create_task(...room_send(...))

    https://octospacc.altervista.org/2024/06/29/odio-asyncio/

    #programmazione #codice #Python #problemi #WinDog #asyncio #async #rant #piangere

  15. 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

  16. 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

  17. 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

  18. 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

  19. 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

  20. Sono praticamente 36 ore che non posto e lo so che siete in astinenza, ma avevo la questione importantissima inderogabile tra le mani di risolvere quel #problema con le #PWA 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 #disperazione 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 #estensioni di intercettare i caricamenti dei Service Worker, e poi un thread bugzilla (#1636629) che pare abbia portato proprio all’introduzione di questa separazione di permessi. Ho scaricato il #codice 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 #hack (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 #webdev). 🔮️

    A questo punto era quasi solo questione di rifiniture, un po’ creare il popup per le impostazioni della mia #estensione (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 #programmare il worker che gestisce #cache e richieste di rete #offline. 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 #Firefox (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 #ServiceWorker 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 #debugging del #browser 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 #pazzia. 😫️ 😩️

    C’è un #casino di mezzo con la pubblicazione di #addon per #Mozilla, quindi praticamente ora il mio è in revisione, ma se tutto va bene dovrebbe essere 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. 💖️

    Btw, 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 #OfflineCaching 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/

    #addon #browser #cache #casino #codice #debugging #disperazione #estensione #estensioni #Firefox #hack #Mozilla #offline #OfflineCaching #pazzia #problema #programmare #PWA #ServiceWorker #webdev

  21. 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. 😭️

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

    #API #bug #caratteri #codice #codifica #computer #condanna #dati #dormire #errore #file #fix #glitch #HTTP #incidenti #incoerenze #mattina #NodeJS #pazzia #pensare #problema #programma #rogna #server #software #sonno #stupido #tardi #WordPress

  22. 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ò. 😁

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

    #ChatGPT #codice #MicroBlog #miglioramenti #PHP #plugin #ricerca #script #shortcode #sito #SQL #WordPress

  23. 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ò. 😁

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

    #ChatGPT #codice #MicroBlog #miglioramenti #PHP #plugin #ricerca #script #shortcode #sito #SQL #WordPress

  24. 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ò. 😁

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

    #ChatGPT #codice #MicroBlog #miglioramenti #PHP #plugin #ricerca #script #shortcode #sito #SQL #WordPress

  25. 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ò. 😁

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

    #ChatGPT #codice #MicroBlog #miglioramenti #PHP #plugin #ricerca #script #shortcode #sito #SQL #WordPress

  26. 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ò. 😁

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

    #ChatGPT #codice #MicroBlog #miglioramenti #PHP #plugin #ricerca #script #shortcode #sito #SQL #WordPress

  27. 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

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

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

    Il punto sta nel voler evitare che #script essenzialmente non affidabili siano iniettati nel contesto della pagina semplicemente da URL, perché potrebbero fare tante cosine cattive; prima fra tutte, rubare #dati dall’archiviazione del #browser del mio dominio, cosa che è un #problema, perché gli utenti inesperti che aprono la app da #link 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… ☠️

    • #Iframe? 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 #librerie vecchie che ricompilano codice #JS 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 #API 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 #DOM per NodeJS tramite browserify, tipo Cheerio, ma farla anche solo girare lì dentro è un altro casino allucinante. 🥴️
    • WASM tecnicamente è una #sandbox 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 pazzia: PyScript… sarebbe quasi già pronto, ma avrei dovuto comunque modificarlo per bloccare tutte le API insicure (rimuovere #codice), 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. 🎉️

    Ecco un esempio di tutto, alla fine: questo URL carica il mio MicroBlog, importa un foglio di #stile che mette questo font buffo, e uno script che colora le parole dei #messaggi in base a come si ripetono man mano (inutile, ma serve giusto per dare idea delle potenzialità)… https://hub.octt.eu.org/MBViewer/#/siteUrl=https://octospacc.altervista.org|platform=wordpress.org|includeStyle=[...]|includeScript=[...] (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 #design, ogni #userscript deve provvedere ad esporre una funzione che, tramite la Channel Messaging API, viene richiamata dalla #app 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/

    #API #app #browser #codice #complicato #CSS #dati #design #DOM #JavaScript #JS #librerie #link #MBViewer #messaggi #problema #sandbox #script #stile #URL #userscript #userscripts

  29. #Android è letteralmente un #incubo appena tenti di fare qualcosa di un attimo #particolare 😭️

    Ricordate la mia idea di riciclare il vecchio #Huawei come #touchpad? Alla fine, #KDEConnect in questo modo funziona molto bene, ma mi secca che sia totalmente vuoto se c’è un #display #LCD da sfruttare, e vorrei approfittare per usare questo #smartphone per mostrare #animazioni carine, magari un orologio, ecc… E, per maggiore #flessibilità, vorrei semplicemente avere una pagina #web sullo #schermo. Però, ovviamente, nel frattempo l’area di #tocco del #mouse deve poter ricevere i miei input. E quindi? 😶️

    • Ho provato in una decina di modi ad aggiungere un WebView al layout dell’app, con caratteristiche e mezzi diversi, ma non c’è verso di far si che questo sia visibile a tutto schermo, ma allo stesso tempo non si prenda lui tutti gli input… ho provato non so quanti consigli dai forum, tempo buttato. 🙄️
    • Ho tentato facendo ereditare il componente KeyListenerView dalla classe WebView anziché View, ma questo ne rompe il funzionamento e gli #input se li prende tutti la pagina web aperta. 🥲️
    • Ho cercato su Neo Store (F-Droid + repo terze) e Google Play #applicazioni che facessero da #browser web fluttuante, ma nessuna di quelle che ho provato permetteva di rendere il #popup “trasparente” ai #tocchi. 😮‍💨️
    • Ho cercato su #Internet per esempi di #codice di app fluttuanti, ma tutti sono un #casino da implementare ora così in una app nuova da zero (o meglio, non ci sono tutorial buonissimi), e ho buttato tempo e speranze appresso a un sacco di app esempio già pronte — o applicazioni #OpenSource con altri scopi che potessi #riadattare — che non ne vogliono sapere di compilarsi. 😤️

    Ovviamente, se gli strumenti funzionassero davvero, e fosse solo la #piattaforma in sé ad essere antipatica, non avrei perso tutto questo tempo. Invece no, appresso ad #AndroidStudio, Gradle, Java, le dipendenze di #build troppo vecchie perché la app è abbandonata, e se provi a sistemare fai solo danni, e quando la #app finalmente si compila devi aspettare un minuto buono ogni volta che fai un cambiamento e vuoi inviarlo al #dispositivo o emulatore… è una #schifezza. 😩️

    …Tuttavia, la #pazienza è la #virtù di chi sa bramare il #superfluo in modo realistico, e dunque, alla fine, ho trovato una #demo che riuscissi a #compilare (https://github.com/mjlong123123/TestFloaWindow), infilarci dentro una #WebView, e vedere il tutto #magicamente funzionare come volevo. Che assoluta #goduria, guardate il #video sotto. Ora farò giusto qualche #aggiustamento minimo necessario al mio #UseCase, e poi avrò finito. Non farò una vera e propria #applicazione, non ho voglia, ma comunque caricherò i miei #sorgenti modificati (e l’APK pronto che legge un file #HTML da archiviazione locale) qui: https://gitlab.com/octtspacc/OcttBitsOfFun/-/tree/main/AndroidFloatingWebView (i #file appariranno quando avrò fatto). 💣️

    Il #programma ora visualizza la pagina di errore di Android, perché il file che dovrà caricare non esiste ancora, e le dimensioni della #finestra dovranno essere sistemate. Quello che è importante è che in sé #funziona. 😁️

    https://octospacc.altervista.org/2024/01/17/overlay-webview-su-android-a-scopi-ricreativi/

    #aggiustamento #Android #AndroidStudio #animazioni #app #applicazione #applicazioni #browser #build #casino #codice #compilare #demo #display #dispositivo #file #finestra #funziona #Goduria #HTML #Huawei #incubo #input #Internet #KDEConnect #LCD #magicamente #mouse #OpenSource #particolare #pazienza #piattaforma #popup #programma #riadattare #schermo #schifezza #smartphone #sorgenti #superfluo #telefono #tocchi #tocco #touchpad #UseCase #video #web #WebView

  30. #Android è letteralmente un #incubo appena tenti di fare qualcosa di un attimo #particolare 😭️

    Ricordate la mia idea di riciclare il vecchio #Huawei come #touchpad? Alla fine, #KDEConnect in questo modo funziona molto bene, ma mi secca che sia totalmente vuoto se c’è un #display #LCD da sfruttare, e vorrei approfittare per usare questo #smartphone per mostrare #animazioni carine, magari un orologio, ecc… E, per maggiore #flessibilità, vorrei semplicemente avere una pagina #web sullo #schermo. Però, ovviamente, nel frattempo l’area di #tocco del #mouse deve poter ricevere i miei input. E quindi? 😶️

    • Ho provato in una decina di modi ad aggiungere un WebView al layout dell’app, con caratteristiche e mezzi diversi, ma non c’è verso di far si che questo sia visibile a tutto schermo, ma allo stesso tempo non si prenda lui tutti gli input… ho provato non so quanti consigli dai forum, tempo buttato. 🙄️
    • Ho tentato facendo ereditare il componente KeyListenerView dalla classe WebView anziché View, ma questo ne rompe il funzionamento e gli #input se li prende tutti la pagina web aperta. 🥲️
    • Ho cercato su Neo Store (F-Droid + repo terze) e Google Play #applicazioni che facessero da #browser web fluttuante, ma nessuna di quelle che ho provato permetteva di rendere il #popup “trasparente” ai #tocchi. 😮‍💨️
    • Ho cercato su #Internet per esempi di #codice di app fluttuanti, ma tutti sono un #casino da implementare ora così in una app nuova da zero (o meglio, non ci sono tutorial buonissimi), e ho buttato tempo e speranze appresso a un sacco di app esempio già pronte — o applicazioni #OpenSource con altri scopi che potessi #riadattare — che non ne vogliono sapere di compilarsi. 😤️

    Ovviamente, se gli strumenti funzionassero davvero, e fosse solo la #piattaforma in sé ad essere antipatica, non avrei perso tutto questo tempo. Invece no, appresso ad #AndroidStudio, Gradle, Java, le dipendenze di #build troppo vecchie perché la app è abbandonata, e se provi a sistemare fai solo danni, e quando la #app finalmente si compila devi aspettare un minuto buono ogni volta che fai un cambiamento e vuoi inviarlo al #dispositivo o emulatore… è una #schifezza. 😩️

    …Tuttavia, la #pazienza è la #virtù di chi sa bramare il #superfluo in modo realistico, e dunque, alla fine, ho trovato una #demo che riuscissi a #compilare (https://github.com/mjlong123123/TestFloaWindow), infilarci dentro una #WebView, e vedere il tutto #magicamente funzionare come volevo. Che assoluta #goduria, guardate il #video sotto. Ora farò giusto qualche #aggiustamento minimo necessario al mio #UseCase, e poi avrò finito. Non farò una vera e propria #applicazione, non ho voglia, ma comunque caricherò i miei #sorgenti modificati (e l’APK pronto che legge un file #HTML da archiviazione locale) qui: https://gitlab.com/octtspacc/OcttBitsOfFun/-/tree/main/AndroidFloatingWebView (i #file appariranno quando avrò fatto). 💣️

    Il #programma ora visualizza la pagina di errore di Android, perché il file che dovrà caricare non esiste ancora, e le dimensioni della #finestra dovranno essere sistemate. Quello che è importante è che in sé #funziona. 😁️

    https://octospacc.altervista.org/2024/01/17/overlay-webview-su-android-a-scopi-ricreativi/

    #aggiustamento #Android #AndroidStudio #animazioni #app #applicazione #applicazioni #browser #build #casino #codice #compilare #demo #display #dispositivo #file #finestra #funziona #Goduria #HTML #Huawei #incubo #input #Internet #KDEConnect #LCD #magicamente #mouse #OpenSource #particolare #pazienza #piattaforma #popup #programma #riadattare #schermo #schifezza #smartphone #sorgenti #superfluo #telefono #tocchi #tocco #touchpad #UseCase #video #web #WebView

  31. #Android è letteralmente un #incubo appena tenti di fare qualcosa di un attimo #particolare 😭️

    Ricordate la mia idea di riciclare il vecchio #Huawei come #touchpad? Alla fine, #KDEConnect in questo modo funziona molto bene, ma mi secca che sia totalmente vuoto se c’è un #display #LCD da sfruttare, e vorrei approfittare per usare questo #smartphone per mostrare #animazioni carine, magari un orologio, ecc… E, per maggiore #flessibilità, vorrei semplicemente avere una pagina #web sullo #schermo. Però, ovviamente, nel frattempo l’area di #tocco del #mouse deve poter ricevere i miei input. E quindi? 😶️

    • Ho provato in una decina di modi ad aggiungere un WebView al layout dell’app, con caratteristiche e mezzi diversi, ma non c’è verso di far si che questo sia visibile a tutto schermo, ma allo stesso tempo non si prenda lui tutti gli input… ho provato non so quanti consigli dai forum, tempo buttato. 🙄️
    • Ho tentato facendo ereditare il componente KeyListenerView dalla classe WebView anziché View, ma questo ne rompe il funzionamento e gli #input se li prende tutti la pagina web aperta. 🥲️
    • Ho cercato su Neo Store (F-Droid + repo terze) e Google Play #applicazioni che facessero da #browser web fluttuante, ma nessuna di quelle che ho provato permetteva di rendere il #popup “trasparente” ai #tocchi. 😮‍💨️
    • Ho cercato su #Internet per esempi di #codice di app fluttuanti, ma tutti sono un #casino da implementare ora così in una app nuova da zero (o meglio, non ci sono tutorial buonissimi), e ho buttato tempo e speranze appresso a un sacco di app esempio già pronte — o applicazioni #OpenSource con altri scopi che potessi #riadattare — che non ne vogliono sapere di compilarsi. 😤️

    Ovviamente, se gli strumenti funzionassero davvero, e fosse solo la #piattaforma in sé ad essere antipatica, non avrei perso tutto questo tempo. Invece no, appresso ad #AndroidStudio, Gradle, Java, le dipendenze di #build troppo vecchie perché la app è abbandonata, e se provi a sistemare fai solo danni, e quando la #app finalmente si compila devi aspettare un minuto buono ogni volta che fai un cambiamento e vuoi inviarlo al #dispositivo o emulatore… è una #schifezza. 😩️

    …Tuttavia, la #pazienza è la #virtù di chi sa bramare il #superfluo in modo realistico, e dunque, alla fine, ho trovato una #demo che riuscissi a #compilare (https://github.com/mjlong123123/TestFloaWindow), infilarci dentro una #WebView, e vedere il tutto #magicamente funzionare come volevo. Che assoluta #goduria, guardate il #video sotto. Ora farò giusto qualche #aggiustamento minimo necessario al mio #UseCase, e poi avrò finito. Non farò una vera e propria #applicazione, non ho voglia, ma comunque caricherò i miei #sorgenti modificati (e l’APK pronto che legge un file #HTML da archiviazione locale) qui: https://gitlab.com/octtspacc/OcttBitsOfFun/-/tree/main/AndroidFloatingWebView (i #file appariranno quando avrò fatto). 💣️

    Il #programma ora visualizza la pagina di errore di Android, perché il file che dovrà caricare non esiste ancora, e le dimensioni della #finestra dovranno essere sistemate. Quello che è importante è che in sé #funziona. 😁️

    https://octospacc.altervista.org/2024/01/17/overlay-webview-su-android-a-scopi-ricreativi/

    #aggiustamento #Android #AndroidStudio #animazioni #app #applicazione #applicazioni #browser #build #casino #codice #compilare #demo #display #dispositivo #file #finestra #funziona #Goduria #HTML #Huawei #incubo #input #Internet #KDEConnect #LCD #magicamente #mouse #OpenSource #particolare #pazienza #piattaforma #popup #programma #riadattare #schermo #schifezza #smartphone #sorgenti #superfluo #telefono #tocchi #tocco #touchpad #UseCase #video #web #WebView

  32. #Android è letteralmente un #incubo appena tenti di fare qualcosa di un attimo #particolare 😭️

    Ricordate la mia idea di riciclare il vecchio #Huawei come #touchpad? Alla fine, #KDEConnect in questo modo funziona molto bene, ma mi secca che sia totalmente vuoto se c’è un #display #LCD da sfruttare, e vorrei approfittare per usare questo #smartphone per mostrare #animazioni carine, magari un orologio, ecc… E, per maggiore #flessibilità, vorrei semplicemente avere una pagina #web sullo #schermo. Però, ovviamente, nel frattempo l’area di #tocco del #mouse deve poter ricevere i miei input. E quindi? 😶️

    • Ho provato in una decina di modi ad aggiungere un WebView al layout dell’app, con caratteristiche e mezzi diversi, ma non c’è verso di far si che questo sia visibile a tutto schermo, ma allo stesso tempo non si prenda lui tutti gli input… ho provato non so quanti consigli dai forum, tempo buttato. 🙄️
    • Ho tentato facendo ereditare il componente KeyListenerView dalla classe WebView anziché View, ma questo ne rompe il funzionamento e gli #input se li prende tutti la pagina web aperta. 🥲️
    • Ho cercato su Neo Store (F-Droid + repo terze) e Google Play #applicazioni che facessero da #browser web fluttuante, ma nessuna di quelle che ho provato permetteva di rendere il #popup “trasparente” ai #tocchi. 😮‍💨️
    • Ho cercato su #Internet per esempi di #codice di app fluttuanti, ma tutti sono un #casino da implementare ora così in una app nuova da zero (o meglio, non ci sono tutorial buonissimi), e ho buttato tempo e speranze appresso a un sacco di app esempio già pronte — o applicazioni #OpenSource con altri scopi che potessi #riadattare — che non ne vogliono sapere di compilarsi. 😤️

    Ovviamente, se gli strumenti funzionassero davvero, e fosse solo la #piattaforma in sé ad essere antipatica, non avrei perso tutto questo tempo. Invece no, appresso ad #AndroidStudio, Gradle, Java, le dipendenze di #build troppo vecchie perché la app è abbandonata, e se provi a sistemare fai solo danni, e quando la #app finalmente si compila devi aspettare un minuto buono ogni volta che fai un cambiamento e vuoi inviarlo al #dispositivo o emulatore… è una #schifezza. 😩️

    …Tuttavia, la #pazienza è la #virtù di chi sa bramare il #superfluo in modo realistico, e dunque, alla fine, ho trovato una #demo che riuscissi a #compilare (https://github.com/mjlong123123/TestFloaWindow), infilarci dentro una #WebView, e vedere il tutto #magicamente funzionare come volevo. Che assoluta #goduria, guardate il #video sotto. Ora farò giusto qualche #aggiustamento minimo necessario al mio #UseCase, e poi avrò finito. Non farò una vera e propria #applicazione, non ho voglia, ma comunque caricherò i miei #sorgenti modificati (e l’APK pronto che legge un file #HTML da archiviazione locale) qui: https://gitlab.com/octtspacc/OcttBitsOfFun/-/tree/main/AndroidFloatingWebView (i #file appariranno quando avrò fatto). 💣️

    Il #programma ora visualizza la pagina di errore di Android, perché il file che dovrà caricare non esiste ancora, e le dimensioni della #finestra dovranno essere sistemate. Quello che è importante è che in sé #funziona. 😁️

    https://octospacc.altervista.org/2024/01/17/overlay-webview-su-android-a-scopi-ricreativi/

    #aggiustamento #Android #AndroidStudio #animazioni #app #applicazione #applicazioni #browser #build #casino #codice #compilare #demo #display #dispositivo #file #finestra #funziona #Goduria #HTML #Huawei #incubo #input #Internet #KDEConnect #LCD #magicamente #mouse #OpenSource #particolare #pazienza #piattaforma #popup #programma #riadattare #schermo #schifezza #smartphone #sorgenti #superfluo #telefono #tocchi #tocco #touchpad #UseCase #video #web #WebView

  33. #Android è letteralmente un #incubo appena tenti di fare qualcosa di un attimo #particolare 😭️

    Ricordate la mia idea di riciclare il vecchio #Huawei come #touchpad? Alla fine, #KDEConnect in questo modo funziona molto bene, ma mi secca che sia totalmente vuoto se c’è un #display #LCD da sfruttare, e vorrei approfittare per usare questo #smartphone per mostrare #animazioni carine, magari un orologio, ecc… E, per maggiore #flessibilità, vorrei semplicemente avere una pagina #web sullo #schermo. Però, ovviamente, nel frattempo l’area di #tocco del #mouse deve poter ricevere i miei input. E quindi? 😶️

    • Ho provato in una decina di modi ad aggiungere un WebView al layout dell’app, con caratteristiche e mezzi diversi, ma non c’è verso di far si che questo sia visibile a tutto schermo, ma allo stesso tempo non si prenda lui tutti gli input… ho provato non so quanti consigli dai forum, tempo buttato. 🙄️
    • Ho tentato facendo ereditare il componente KeyListenerView dalla classe WebView anziché View, ma questo ne rompe il funzionamento e gli #input se li prende tutti la pagina web aperta. 🥲️
    • Ho cercato su Neo Store (F-Droid + repo terze) e Google Play #applicazioni che facessero da #browser web fluttuante, ma nessuna di quelle che ho provato permetteva di rendere il #popup “trasparente” ai #tocchi. 😮‍💨️
    • Ho cercato su #Internet per esempi di #codice di app fluttuanti, ma tutti sono un #casino da implementare ora così in una app nuova da zero (o meglio, non ci sono tutorial buonissimi), e ho buttato tempo e speranze appresso a un sacco di app esempio già pronte — o applicazioni #OpenSource con altri scopi che potessi #riadattare — che non ne vogliono sapere di compilarsi. 😤️

    Ovviamente, se gli strumenti funzionassero davvero, e fosse solo la #piattaforma in sé ad essere antipatica, non avrei perso tutto questo tempo. Invece no, appresso ad #AndroidStudio, Gradle, Java, le dipendenze di #build troppo vecchie perché la app è abbandonata, e se provi a sistemare fai solo danni, e quando la #app finalmente si compila devi aspettare un minuto buono ogni volta che fai un cambiamento e vuoi inviarlo al #dispositivo o emulatore… è una #schifezza. 😩️

    …Tuttavia, la #pazienza è la #virtù di chi sa bramare il #superfluo in modo realistico, e dunque, alla fine, ho trovato una #demo che riuscissi a #compilare (https://github.com/mjlong123123/TestFloaWindow), infilarci dentro una #WebView, e vedere il tutto #magicamente funzionare come volevo. Che assoluta #goduria, guardate il #video sotto. Ora farò giusto qualche #aggiustamento minimo necessario al mio #UseCase, e poi avrò finito. Non farò una vera e propria #applicazione, non ho voglia, ma comunque caricherò i miei #sorgenti modificati (e l’APK pronto che legge un file #HTML da archiviazione locale) qui: https://gitlab.com/octtspacc/OcttBitsOfFun/-/tree/main/AndroidFloatingWebView (i #file appariranno quando avrò fatto). 💣️

    Il #programma ora visualizza la pagina di errore di Android, perché il file che dovrà caricare non esiste ancora, e le dimensioni della #finestra dovranno essere sistemate. Quello che è importante è che in sé #funziona. 😁️

    https://octospacc.altervista.org/2024/01/17/overlay-webview-su-android-a-scopi-ricreativi/

    #aggiustamento #Android #AndroidStudio #animazioni #app #applicazione #applicazioni #browser #build #casino #codice #compilare #demo #display #dispositivo #file #finestra #funziona #Goduria #HTML #Huawei #incubo #input #Internet #KDEConnect #LCD #magicamente #mouse #OpenSource #particolare #pazienza #piattaforma #popup #programma #riadattare #schermo #schifezza #smartphone #sorgenti #superfluo #telefono #tocchi #tocco #touchpad #UseCase #video #web #WebView

  34. Ecco un’altra #idea per il #MicroBlog che ebbi da subito, ma che non avevo avuto modo di #realizzare: #collezioni di #dati riguardanti il #sito stesso, visualizzati in maniera #interessante; #grafici colorati e non, in poche parole. 😳️

    Oggi mi è capitato di trovare un #plugin #WordPress che facesse proprio al caso mio, permettendo di prelevare #informazioni dal #database tramite #query #MySQL, e generare un #istogramma, un #aereogramma, o altra roba. E allora, ho creato una #pagina dedicata, nello stesso spirito di cosa già feci per la mia #OcttKB (da lì viene anche un po’ l’idea), che cercherò di riempire di #visualizzazioni #intriganti: “Dati e Grafici 📊️“. Per ora ci sono quella dei #post al giorno, e delle #parole per ogni giorno.

    La nuvola dei #tag è integrata nel #CMS e l’avevo messa da subito sulla #home (ora spostata), mentre il resto è grazie a questo cosiddetto #SQLCharts.

    Se come me #amate queste robe, fatevi un giro, e magari datemi qualche #suggerimento su che #illustrazioni in più #programmare… ho anche modificato il #codice del plugin per fargli sputare il #source #SQL utilizzato per ciascun grafico, che potete #copiare ed usare sui vostri #siti. ❤️ (Se volete la stessa #modifica, 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/

    #aereogramma #amate #CMS #codice #collezioni #copiare #database #dati #grafici #home #idea #illustrazioni #informazioni #interessante #intriganti #istogramma #MicroBlog #modifica #MySQL #OcttKB #pagina #parole #plugin #post #programmare #query #realizzare #siti #sito #source #SQL #SQLCharts #suggerimento #tag #visualizzazioni #WordPress

  35. Ecco un’altra #idea per il #MicroBlog che ebbi da subito, ma che non avevo avuto modo di #realizzare: #collezioni di #dati riguardanti il #sito stesso, visualizzati in maniera #interessante; #grafici colorati e non, in poche parole. 😳️

    Oggi mi è capitato di trovare un #plugin #WordPress che facesse proprio al caso mio, permettendo di prelevare #informazioni dal #database tramite #query #MySQL, e generare un #istogramma, un #aereogramma, o altra roba. E allora, ho creato una #pagina dedicata, nello stesso spirito di cosa già feci per la mia #OcttKB (da lì viene anche un po’ l’idea), che cercherò di riempire di #visualizzazioni #intriganti: “Dati e Grafici 📊️“. Per ora ci sono quella dei #post al giorno, e delle #parole per ogni giorno.

    La nuvola dei #tag è integrata nel #CMS e l’avevo messa da subito sulla #home (ora spostata), mentre il resto è grazie a questo cosiddetto #SQLCharts.

    Se come me #amate queste robe, fatevi un giro, e magari datemi qualche #suggerimento su che #illustrazioni in più #programmare… ho anche modificato il #codice del plugin per fargli sputare il #source #SQL utilizzato per ciascun grafico, che potete #copiare ed usare sui vostri #siti. ❤️ (Se volete la stessa #modifica, 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/

    #aereogramma #amate #CMS #codice #collezioni #copiare #database #dati #grafici #home #idea #illustrazioni #informazioni #interessante #intriganti #istogramma #MicroBlog #modifica #MySQL #OcttKB #pagina #parole #plugin #post #programmare #query #realizzare #siti #sito #source #SQL #SQLCharts #suggerimento #tag #visualizzazioni #WordPress

  36. Ecco un’altra #idea per il #MicroBlog che ebbi da subito, ma che non avevo avuto modo di #realizzare: #collezioni di #dati riguardanti il #sito stesso, visualizzati in maniera #interessante; #grafici colorati e non, in poche parole. 😳️

    Oggi mi è capitato di trovare un #plugin #WordPress che facesse proprio al caso mio, permettendo di prelevare #informazioni dal #database tramite #query #MySQL, e generare un #istogramma, un #aereogramma, o altra roba. E allora, ho creato una #pagina dedicata, nello stesso spirito di cosa già feci per la mia #OcttKB (da lì viene anche un po’ l’idea), che cercherò di riempire di #visualizzazioni #intriganti: “Dati e Grafici 📊️“. Per ora ci sono quella dei #post al giorno, e delle #parole per ogni giorno.

    La nuvola dei #tag è integrata nel #CMS e l’avevo messa da subito sulla #home (ora spostata), mentre il resto è grazie a questo cosiddetto #SQLCharts.

    Se come me #amate queste robe, fatevi un giro, e magari datemi qualche #suggerimento su che #illustrazioni in più #programmare… ho anche modificato il #codice del plugin per fargli sputare il #source #SQL utilizzato per ciascun grafico, che potete #copiare ed usare sui vostri #siti. ❤️ (Se volete la stessa #modifica, 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/

    #aereogramma #amate #CMS #codice #collezioni #copiare #database #dati #grafici #home #idea #illustrazioni #informazioni #interessante #intriganti #istogramma #MicroBlog #modifica #MySQL #OcttKB #pagina #parole #plugin #post #programmare #query #realizzare #siti #sito #source #SQL #SQLCharts #suggerimento #tag #visualizzazioni #WordPress

  37. Ecco un’altra #idea per il #MicroBlog che ebbi da subito, ma che non avevo avuto modo di #realizzare: #collezioni di #dati riguardanti il #sito stesso, visualizzati in maniera #interessante; #grafici colorati e non, in poche parole. 😳️

    Oggi mi è capitato di trovare un #plugin #WordPress che facesse proprio al caso mio, permettendo di prelevare #informazioni dal #database tramite #query #MySQL, e generare un #istogramma, un #aereogramma, o altra roba. E allora, ho creato una #pagina dedicata, nello stesso spirito di cosa già feci per la mia #OcttKB (da lì viene anche un po’ l’idea), che cercherò di riempire di #visualizzazioni #intriganti: “Dati e Grafici 📊️“.

    La nuvola dei #tag è integrata nel #CMS e l’avevo messa da subito sulla #home (ora spostata), mentre il resto è grazie a questo cosiddetto #SQLCharts.

    Se come me #amate queste robe, fatevi un giro, e magari datemi qualche #suggerimento su che #illustrazioni in più #programmare… ho anche modificato il #codice del plugin per fargli sputare il #source #SQL utilizzato per ciascun grafico, che potete #copiare ed usare sui vostri #siti. ❤️ (Se volete la stessa #modifica, 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/

    #aereogramma #amate #CMS #codice #collezioni #copiare #database #dati #grafici #home #idea #illustrazioni #informazioni #interessante #intriganti #istogramma #MicroBlog #modifica #MySQL #OcttKB #pagina #plugin #programmare #query #realizzare #siti #sito #source #SQL #SQLCharts #suggerimento #tag #visualizzazioni #WordPress

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

    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 tentare il #retrofitting che ho fatto io è chiaro porti a difficoltà. Si può fare, perché nella #programmazione si può fare tutto, ma è un #casino. …E un po’ me lo aspettavo, e lo sapevo da quando ho iniziato. 😁️

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

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

    Insomma, è per questo che questa piccola #applicazione, tirata su alla bene e meglio e che esiste in buona parte per via di #lavoro non mio, l’ho chiamata “#distrazione”. Continuerò ad aggiornarla, anche dopo che ora ho aggiunto l’ultima funzione fondamentale, ossia l’apertura di #post 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 #coding, quando l’arma è la propria tastiera insomma. Basta sia stato #divertente. 😈️

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

    #API #applicazione #blog #casino #client #ClientSide #codice #coding #contenuti #dati #divertente #feed #frontend #HTML #idea #interfaccia #intrigante #JavaScript #JS #JSON #lavoro #MBViewer #messaggi #MicroBlog #minimale #moderno #MVP #post #progettare #progetto #programmazione #protocollo #retrofitting #script #semplice #sito #social #software #soluzione #SpaghettiCode #Telegram #webapp #WordPress

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

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

    Dovrebbe funzionare per tutti i #siti WP che abbiano la #API #REST attiva e senza restrizioni CORS… provatelo per il mio #MicroBlog 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/

    #API #blog #canale #ClientSide #codice #distrazione #frontend #hacking #jQuery #MBViewer #messaggio #MicroBlog #REST #siti #software #Telegram #UI #visualizzazione #WordPress

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

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

    Dovrebbe funzionare per tutti i #siti WP che abbiano la #API #REST attiva e senza restrizioni CORS… provatelo per il mio #MicroBlog 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/

    #API #blog #canale #ClientSide #codice #distrazione #frontend #hacking #jQuery #MBViewer #messaggio #MicroBlog #REST #siti #software #Telegram #UI #visualizzazione #WordPress