Un’intelligenza artificiale che riconosce i tuoi disegni

Dopo aver parlato del cosiddetto text to image, ovvero la capacità di generare un’immagine a partire da testo da parte di un’IA (o AI se siete anglofili!)

Ho testato questo servizio gratuito, nato in seno a big G, che è diventato bravissimo a riconoscere i tuoi disegnini.

La tipologia di disegni realizzabili è grossomodo quella che sareste in grado di fare con un pennarello e le skill di un poppante.

https://quickdraw.withgoogle.com/ è il servizio in questione, potete accedervi da qualunque browser moderno (vade retro Internet Explorer!).

Una scimmia in braccio ad un uomo che sembra urlare.

Dategli un’occhiata, 5 min saranno sufficienti, per capire di cosa si tratta, io l’ho trovato molto simpatico, se nel contempo tralascio altre implicazioni che mi sforzo di non guardare come vorrebbe la scimmia complottista che mi porto in spalla.

Ti interessa l’argomento? Scopri quali altri contenuti che parlano di intelligenza artificiale ci sono nel blog cliccando qui.

Buon divertimento.

Dump di variabili per finalità di debug e vedere un log file in tempo reale con tail -f

Il debug è uno stress? Con questi piccoli accorgimenti non vi peserà più tanto.

Un mio collega di qualche tempo fa, l’ottimo G. Bove, si portava sempre dietro la sua cassetta degli attrezzi chiamata GBTools, una libreria di funzioni e snippet PHP in cui compariva anche la funzione dumpa (letto dampa), che effettuava un semplice dump su file di quello che gli passavi (variabili, oggetti, array, stringhe eccetera).

In suo omaggio, utilizzerò lo stesso nome per la mia funzione di log su file, ecco il codice che potrete scrivere dove vi pare, ma che vi consiglio di mettere in un file sempre richiamato nel vostro progetto.

<?php
if(!function_exists('dumpa')){
    function dumpa($var){
        $req_dump = print_r($var, TRUE);
        $fp = fopen(__DIR__ . '/my.log', 'a');
        fwrite($fp, $req_dump);
        fwrite($fp, "\n");
        fclose($fp);
    }
}

Questa funzione scriverà quello che gli verrà passato sul file my.log (nella directory in cui viene dichiarata la funzione). Ad onor del vero non ricordo come fosse strutturata quella da cui ho tratto ispirazione, ma alla fine fa il suo sporco lavoro.

Per poter leggere il file my.log, potete ovviamente aprirlo con un qualunque editor, o fare una cosa più figa e, soprattutto, più efficiente.

Se siete su ambiente Linux e (ancora) non conoscete il comando tail, provate a lanciare da bash quanto segue:

tail -f my.log

Lasciate la console aperta e affiancatela al vostro editor o browser per vedere i risultati del vostro debug in tempo reale.

Ho trovato, ma non testato, anche un modo per ottenere il comando tail su ambiente windows, fatemi sapere nei commenti se funziona.

Intelligenza artificiale per la creazione di immagini a partire da una testo… e i creativi umani disoccupati?

L’eccellente qualità dei risultati ottenuti con taluni strumenti, spinge a fantasticare di scenari lavorativi in cui non è più indispensabile avere nel proprio entourage un esperto di grafica o un creativo.

In questo articolo parliamo di Intelligenza Artificiale, AI o IA, qual dir si voglia. Nella fattispecie parliamo di una sua particolare applicazione; quella della generazione di immagini a partire da un testo. Un poco come se commissionaste ad un artista un lavoro fornendo una descrizione di ciò che vi serve.

Vi diciamo subito che il livello a cui è arrivata la tecnica consente di avere risultati eccellenti ed inimmaginabili anche solo qualche anno fa. Abbiamo testato alcuni strumenti text to image disponibili gratuitamente online in questo post, dove ne mostriamo i risultati.

Questo quadro, nel 2018 è stato venduto all’asta da Christie’s per 432.500,00 $.

Perché? Why? Uai?

Ho cominciato a scrivere questo articolo il 27 agosto 2022, perché mi sono imbattuto una serie di foto generate da uno strumento in beta, di cui parlerò dopo e con il quale ho generato l’immagine in evidenza di questo post (a partire dal testo super fantasioso “beautiful artificial intelligence wallpaper for not scientific article”). Come potete vedere l’immagine prodotta è di grande qualità e completamente originale. Inoltre se giocate un poco con il testo possono venire fuori immagini di ogni tipo, talvolta disturbanti, tanto perché macabre o inquietanti, quanto per le varie implicazioni che si portano dietro le riflessioni che scaturiscono dalla loro visione.

Sembra proprio che microprocessori e silicio, stiano insediando una delle attività umane che sembrava distante ed intoccabile da parte degli avanzamenti tecnici, ovvero ciò che concerne l’attività artistica e la creatività. Alcuni sostengono che i lavoratori umani nel settore della creatività, saranno in un prossimo futuro, sostituiti da macchine.

Questi profili professionali sono solo alcuni che, si ipotizza, saranno sostituiti da automi, robot e algoritmi, basta fare una piccola ricerca sul web per capire come questa tendenza, sospinta dall’Agenda 2030 e dai finanziamenti per l’Industria 4.0, sembri ineluttabile.

“Ok, tutto molto bello, ma a che livello siamo ora?” ci si potrebbe chiedere.
Giusto per dirne una, nel 2018 è stato battuto all’asta un quadro creato da un’IA, ed è stato venduto per una cifra blu! Oltre 400.000 $.

Sfiorati sommariamente gli aspetti sociali e del lavoro, andiamo a capire, senza scendere a fondo nei dettagli, come fa un’intelligenza artificiale a svolgere il suo compito.

Un po’ di contesto tecnologico.
Come fa la macchina a fare quello che fa?

Per chi è a digiuno di intelligenza artificiale, machine learning, deep learning e compagnia, non temete, neanche io sono un esperto e tratterò quindi la cosa in maniera, non me ne vogliano gli esperti, senza tecnicismi che non padroneggerei appieno.

Con queste dovute premesse, passiamo a capire cosa c’è dietro un interfaccia che data una stringa testuale in input, ritorna in output un’immagine coerente con il testo, partendo col descrivere quello che di contesto c’è da sapere.

Questa immagine è stata generata con Midjourney. La chiave usata è “a fotorealistic fly on a ultra detailed spider net, on a cyan background made by random sequences of 1 and 0”

Iniziamo col dire che il concetto di creatività per una macchina è abbastanza diverso da quello umano. La creatività dell’IA è un’implementazione tecnica che scimmiotta alcuni aspetti della creatività umana, ma è un è un qualcosa di diverso, con le sue caratteristiche, i suoi pregi, i suoi difetti e i suoi campi di applicazione.

Come in altri ambiti dell’informatica, quando si cerca di automatizzare un’attività mediante lo sviluppo di un algoritmo, si fa riferimento (volenti o nolenti) a quello che avviene a livello biochimico e a quanto pare quantistico, nel nostro cervello. Cercherò di spiegare meglio questo concetto: anche a livello inconscio, quando si progettano cose, si scrivono programmi e si disegnano algoritmi, lo si fa a suon di materia grigia, di logica, di associazioni di idee e di concetti presenti nel proprio bagaglio culturale. Pertanto questi prodotti del nostro cervello in qualche modo lo rappresentano, ne rappresentano le connessioni e talvolta perfino gli stati emotivi … non starò raccontando nulla di nuovo agli psicologi forensi.

L’addestramento

Si intuisce, anche senza capire un’acca di informatica o di machine learning, che prima di poter rispondere con un’immagine ad un testo, è necessario che il nostro software sia addestrato per farlo.

Prima di diventare “bravo” a costruire immagini (o a svolgere qualsivoglia compito) un robot deve apprendere, cosa che normalmente si traduce in un periodo di tempo in cui si forniscono alla macchina milioni di casistiche del suo lavoro.

In questo modo la macchina sarà in grado di costruire (chiedo venia agli addetti ai lavori) la propria rete neurale, adesso in grado di svolgere il compito per la quale è stata addestrata.

Facciamo un esempio semplice semplice, che tra l’altro ha già un’applicazione reale in campo diagnostico.
Forniamo ad un’intelligenza artificiale milioni di immagini di un tessuto biologico (tratto ad esempio da una biopsia) e indichiamo in fase di addestramento alla macchina, quali immagini rappresentano un tessuto sano e quali un tessuto malato.

Fatto questo milioni di volte, la macchina impara a distinguere le due casistiche e a diagnosticare problemi di come farebbe il suo collega in carne, ossa e camice bianco, su tutte le immagini che riceve.

Un altro esempio è quello di un AI che è stata addestrata con i video corredati da descrizione testuale presenti sulla piattaforma Flickr. A cosa puntavano? A realizzare uno strumento in grado di descrivere ciò che succede nel video. Ci sono riusciti? La risposta giudicatela voi stessi, guardando il video.

Intelligenza artificiale in grado, dall’audio, di “indovinare” cosa sta succedendo in un video.

Text To Image

C’è un pletora di grandi aziende, start-up, progetti pilota, studi scientifici e ricerche universitarie che hanno dato il via alla creazione di strumenti in grado di fare il cosiddetto text to image. Soprattutto i giganti dell’Hi Tech, hanno dedicato enormi risorse a questo tipo di progetti, anche, manco a dirlo, Google con il suo Imagen.

Di seguito trovate immagini provenienti da strumenti disponibili gratuitamente online. Ho testato DeepAi.org, Craiyon, NightCafè, Wambo e Midjourney; questi ultimi due mi sono sembrati di gran lunga migliori sia in termini di qualità del risultato sia dal punto di vista dell’esperienza utente. Midjourney, il mio preferito, è l’unico disponibile attraverso Discord.

Date un’occhiata a queste immagini.

Generato con DeepAi.org

Questa immagine è stata prodotta a partire dal testo “The most effective human killer of last year” ovvero il l’assassino più efficace. Sembra che l’intelligenza artificiale faccia riferimento a problemi cardio-vascolari.

Generato con Midjourney

Qui abbiamo interrogato la nostra intelligenza artificiale chiedendo quale fosse il maggior killer di esseri umani degli ultimi 20 anni. Sembra che l’intelligenza artificiale si riferisca all’inquinamento.

Ho provato ad interrogare l’IA anche su temi più delicati

Questa immagine è stata prodotta con la chiave “White guy dreaming to be white.”
Questa curiosa e un poco tenebrosa è stata generata a partire dal testo “the one who will save humanity from auto-destruction”
“Black guy dreaming to be white” è stata la frase che ha prodotto l’immagine.
Questa, generata sempre con Craiyon, aveva come chiave “God enlightment”

Altre immagini generate con vari strumenti

Questa immagine è stata generata con NightCafe usando la chiave “Funny camel in artic”, ovvero cammello divertente nell’artico.
“Fox in love” generata con nightcafe.studio.
Artwork generato da intelligenza artificiale su wombo.art, con la chiave “Softair team vs dark zombies”
Qui ho chiesto a deepai.org di generare una palla da calcio con gli occhiali da sole.
Fox in love generata con un’intelligenza artificiale fornita da craiyon.com.
Qui ho chiesto a wombo.art di generare un meme con il testo “Mechanical Bear”.

Se questo articolo ti è piaciuto, sostienici condividendolo. Inoltre presto scriveremo di altre straordinarie applicazioni dell’intelligenza artificiale, per cui seguici sui nostri canali sociali.

Webmail PEC Ordine Ingegneri Caserta non raggiungibile

La webmail della PEC dell’Ordine degli Ingegneri di Caserta risulta non raggiungibile e non funziona quando si tenta di accedere alla pagina web si vede solo “loading …”.? Accedi tramite SMTP/IMAP con il tuo client di posta elettronica (thunderbird, mail app, outlook eccetera)

Oggi non riuscivo ad accedere alla webmail di gestione della PEC dell’Ordine degli Ingegneri di Caserta, per questo ho cercato una soluzione alternativa, che fin’ora non avevo esplorato.

Ho verificato che fosse un problema non relativo a Firefox, ho notato che ci fosse un problema in qualche libreria esterna (lato server) con tutta probabilità relazionato ad un aggiornamento software (sempre lato loro) che ha innescato un bug.

Era arrivato il momento di configurare Thunderbird per ricevere/inviare PEC direttamente dal client di posta, senza cioè navigare con il browser sulla pagina web postacertificata.ordingce.it.

Ovviamente non sono riuscito a reperire nessuna informazione circa la configurazione necessaria a scaricare ed inviare la posta, in particolare non riuscivo a reperire IMAP ed SMTP di accesso.

Ebbene, dopo un poco di prove scimmia, in cui cercavo di beccare l’host SMTP e l’host IMAP ho provato ad usare la testa e vedere cosa succedeva.

forse non sapevi che
In precedenza per poter usare la PEC con il client di posta (della Mozilla nel mio caso) c’era bisogno di un’estensione, Thunderpec, per poter usare la PEC, oggigiorno a quanto pare no…

La soluzione

La webmail di ordingce è offerta da Infocert, pertanto ho cercato “ordingce pec thunderbird” su Google, ho trovato questo post, su help.infocert.it, dove spiegano come configurare una casella legalmail PEC. Ho usato esattamente le stesse configurazioni e ha funzionato magistralmente. Ecco le configurazioni:

Le informazioni richieste definiscono i dati di connessione del server. In particolare:

    Server posta in arrivo: mbox.cert.legalmail.it
    Server posta in uscita: sendm.cert.legalmail.it

Le porte da utilizzare sono, rispettivamente:

    Server posta in arrivo (IMAP): 993
    Server posta in uscita (SMTP): 465

Per entrambi i server seleziono la modalità crittografica SSL/TLS e scelgo l'opzione Password normale nella sezione autenticazione.

Spero di essere stato utile, se non riesci a configurare la tua casella prova a scrivere nei commenti.

Come eliminare tutti i prodotti da woocommerce senza impazzire?

Minimo sforzo massima resa, in questo post spiego come ho fatto a risolvere il problema che un mio cliente aveva generato per errore. Oltre alla soluzione troverete anche l’iter che mi ci ha portato.

A seguito di un’importazione sbagliata, un mio cliente aveva riempito il suo e-commerce (woocommerce) di 2000 prodotti vuoti! Fortunatamente si trattava di un ambiente di pre-produzione e quindi non ha avuto alcun impatto sull’esperienza utente.

Tuttavia si era reso necessario un intervento massivo su tutti i prodotti, in quanto andavano eliminati del tutto dal sito internet.

Il mio cervello ha pensato subito a scrivere un poco di codice per creare uno script da lanciare in batch attraverso di un plugin ad hoc, che avrebbe dovuto esporre una pagina con un pulsante di distruzione di massa, quindi esporre un avviso per chiedere all’utente se fosse sicuro di quello che stava facendo … ma sono troppo pigro, per cui, il secondo pensiero è stato gugolare un poco (anche se in realtà uso perlopiù duckduckgo, ve lo consiglierò prima o poi assieme ad altri tool per la vostra privacy).

Dalla ricerca che ho usato wordpress how to delete all products è venuto fuori (ovviamente) la qualunque … focalizzerò l’attenzione su 2 delle soluzioni che ho trovato.

1. Aumento numero prodotti visualizzati

Parte superiore della pagina prodotti di wordpress/woocommerce

Alcuni consigliano di visualizzare più prodotti sulla stessa pagina e cancellarli massivamente

Ma questa soluzione, mostrando un numero considerevole di prodotti (anche 300), è veramente sconsigliata per tanti motivi:

  • è maledettamente lenta;
  • prevede dei tempi morti perfino lato client (javascript ci mette un po’ a spuntare tutte le checkbox!);
  • anche se il processo di cancellazione massiva viene gestito in batch, ottimizzando l’uso della memoria RAM, vi ritroverete comunque a consumare molte risorse e ad aspettare molto tempo prima che la nuova pagina venga ricaricata e possiate lanciare un altro cancella tutti.

Questa soluzione per me è quindi SCONSIGLIATA. Passiamo alla prossima

2. Query diretta al database che rimuove tutto

Non male come idea. Una bella query, fatta bene che va a togliere non solo i prodotti, ma tutte le sue relazioni con le altre risorse BASE di wordpress.

Quel “BASE” non è maiuscolo per caso. Quello che intendo impropriamente dire con risorse BASE, significa che se per qualche motivo il vostro prodotto è collegato a qualche altra risorsa introdotta da un plugin o da software di terze parti, rischiate seriamente di perdervi pezzi per strada.

Uno screenshot della soluzione così come riportata su Store App org.

Il sito storeapps.org, propone una soluzione basata su questa query:

DELETE relations.*, taxes.*, terms.*
FROM wp_term_relationships AS relations
INNER JOIN wp_term_taxonomy AS taxes
ON relations.term_taxonomy_id=taxes.term_taxonomy_id
INNER JOIN wp_terms AS terms
ON taxes.term_id=terms.term_id
WHERE object_id IN (SELECT ID FROM wp_posts WHERE post_type IN ('product','product_variation'));

DELETE FROM wp_postmeta WHERE post_id IN (SELECT ID FROM wp_posts WHERE post_type IN ('product','product_variation'));
DELETE FROM wp_posts WHERE post_type IN ('product','product_variation');

Ma ad ogni modo, lo stesso autore dopo questa query dice:

However, this is not the best way to bulk delete products

Dal sito storeapps.org

Anche se loro sconsigliano l’approccio query based, perché vogliono vendervi un plugin che fa cose, quella che dicono è una grande verità.

Troppo rischioso lanciare query nel database senza alcuna pietà. Potresti ritrovarvi con più problemi di quando avete iniziato.

Se scegliete questo approccio che io SCONSIGLIO, abbiate almeno il buon cuore di effettuare una copia di backup del database (ho scritto anche io un poco a riguardo).

3. WP CLI

La WP CLI è un software portabile scritto in PHP che vi consentirà di lanciare dei comandi sulla console per ottenere quello che volete.

Non sai di che parlo? Fidati di me, usa il metodo 1.

Il comando che ho lanciato e che ha funzionato come un incantesimo è stato quello suggerito da Ryan Steven sul suo blog.

Provare per credere:

wp post list --field=ID --post_type=product --posts_per_page=2000 | xargs wp post delete --force
Il comando che ho lanciato sul terminale dell’hosting in questione. Come è possibile vedere ho usato direttamente il file .phar.

Se avete il sito su hosting che non ha accesso alla console sappiate che potete usare lo stesso la cli, ma facendo un accrocchio che spero di avere modo di illustrarvi in qualche altro post in futuro.

Conclusioni

Se siete utenti smaliziati, dovete avere a che fare con operazioni ripetitive, containers, orchestratori (tipo kuberneetes), allora vi consiglio di studiare l’uso della CLI (proposta come migliore soluzione, la numero 3).

Se non siete utenti esperti state lontano come la peste dalle query (soluzione 2) e lanciatevi sulla soluzione 1, specie se la cancellazione massiva è da fare una tantum.