Il mio intervento a Border Radio – Public Domain

Rubando termini dall’oroscopo: in questo periodo lavoro, famiglia e persino riposo vanno discretamente bene. Questo significa che ho dovuto limitare le mie evasioni davanti alla mia scrivania, soprattutto nei momenti a me più proficui, ovvero dalle 20 alle 3 del mattino (non che sia una fascia oraria che oggettivamente stimoli le cellule grigie ma, semplicemente, a quell’ora è più complicato essere distratti da qualcuno di sveglio ed è più naturale rilassarsi, concentrarsi, essere produttivo).

Ospite in una puntata radiofonica di Border Radio a proposito di Wikipedia, spero di essere riuscito a trasmettere tutta la mia passione su questo progetto, nascondendo piuttosto bene il mio rammarico nel vedere ridotti i miei contributi, sfociati, nello stesso periodo, nelle mie dimissioni da amministratore dell’interfaccia.

Che dire, buon ascolto!

Podcast puntata Public Domain a Border Radio

Ah, chiedo venia per le imprecisioni o castronerie sfuggitemi (per chi le notasse). Come scusa additerò l’ansia della diretta!

L’audio è disponibile anche su Mixcloud ma occhio perchè è intasato di tracker :)

Come velocizzare WordPress (LA GUIDA DEFINITIVA!1!1!)

È capitato anche a te, ti sei chiesto come ottimizzare WordPress e come farlo con una guida definitiva, definitivamente ottimizzante e sei finito qui. Ecco come velocizzare WordPress definitivamente:

  1. Disattiva i tuoi plugin;
  2. Fine della guida.

OK OK…. Immagino avrai bisogno di qualche metafora per carburare questo fatto. Visualizza questo scenario: ogni plugin che hai installato compromette di almeno il 30% tutti questi punti, parallelamente:

  • sicurezza
  • performance
  • manutenibilità
  • ampiezza del buco dell’ozono

Perchè? Perchè la maggior parte di essi sono stati scriti coi piedi. Piedi marci. È come se vi foste fatti costruire la casa da un bambino a cui abbiano dato in mano un’accetta per realizzarla e il disegno di una casa a pastelli per progettarla. È come avere in mano la ricetta di un’insalata scritta da un avvocato societario utilizzando l’autocorrettore di un telefono che conosca solo formule di fogli di calcolo. È come se qualcuno avesse trascritto il litigio di una coppia all’IKEA facendo modifiche a caso finchè quel testo non diventasse un programma che compilasse senza errori. È come se qualcuno avesse dato in pasto la foto di un tabellone di Scarabeo ad un software di visione computerizzata in cui valgono triplo le parole riservate in JavaScript. È come se qualcuno avesse trascritto le previsioni meteorologiche navali nello stesso momento in cui un picchio di legno martellava sul tasto shift e in seguito indentasse il testo completamente a caso. È come se una poesia dadaista e/o surrealista fosse stata composta interamente con quei nomi utente suggeriti durante la registrazione in un sito, quando quello che volevi è stato già preso. È come se aveste in mano l’output di bot per calcolare catene di Markov istruito esclusivamente sulla base dei passaggi dei pullman di una città in cui i pullman si schiantano di continuo.

Mi correggo. Se tutto questo funziona, quegli autobus non si schiantavano: prendevano fuoco.

I plugin che hai installato sono un tentativo di scrivere un poema lirico utilizzando solo parole provenienti da quella roba che sta negli URL dopo il punto interrogativo. È come una tabella in JSON di codici di modelli di torce che devono avere “super tattica” nel nome. È come se gli sviluppatori avessero letto soltanto un articolo accademico di Turing del 1936 sulla computazione e altresì un esempio di codice JavaScript e avessero tirato ad indovinare tutto lo scibile che sta nel mezzo. È come la traduzione in linguaggio l33t di un manifesto di un culturista della sopravvivenza che per qualche ragione è ossessionato anche dall’allocazione di memoria.

Disinstalla quei plugin o fatteli riscrivere da zero da quel tuo amico nerd barbuto che va in giro con portatile pieno di adesivi, schermo nero e testo bianco. Salva l’ozono.

Progetti grossi come WordPress sono capolavori di ingegneria con code review criterioso. I plugin invece sono mediamente scritti da completi incompetenti che pensano che XSS, injection, e CSRF siano le risposte alle ultime caselle delle parole crociate calabresi quando non ti viene più in mente niente di sensato sfogliando il dizionario.

Ah, questo in qualche modo vale anche per i temi.

Fine della guida.

Grazie ad XKCD 1513, XKCD 1695 e ad XKCD 1883 per l’aiuto metaforico. asd

Ci stanno tracciando… staccah staccah!

Questa immagine scattata da Cristiano Paris al Lucca Comics è l’essenza stessa di una eccezionale discussione svolta su Wikipedia. asd:

Discussione su Hackerino in Wikipedia.

Immagine completa di Cristiano Paris.

Immagine scattata da Cristiano Paris e distribuita in licenza Creative Commons Attribuzione – Condividi allo stesso 4.0 internazionale.

La bellezza delle espressioni regolari (aka: correggendo bgcolor in Wikipedia)

Non so se l’avessi già detto ma amo perdere una consistente quantità di tempo su Wikipedia in lingua italiana. Appena posso lo faccio. È rilassante e stimolante. Ritaglio del tempo soprattutto per svolgere i task più inutili che mi auto-assegno con gioia per sentirmi in pace con me stesso nello sfuggire agli impegni più seri.

Oggi mi sono imbattuto ad esempio in una voce Wikipedia che aveva una semplice tabella con uno sfondo colorato. Colorata con bgcolor.

Non è che tutti dovrebbero sapere che l’HTML si è evoluto giusto un briciolo dalla sua nascita e che roba come bgcolor non si dovrebbe più usare almeno da HTML 4 ovvero almeno dal 1999. Diciamoci la verità, l’ho sempre sospettato, ma manco io avevo la certezza che fosse un attributo deprecato prima di scoprire che la voce [[HTML 4]] non aveva fonti e prima di giungere quindi alle specifiche W3C per pura serendipità. asd

In sostanza, facendo una rapida ricerca, circa un migliaio e mezzo di articoli di Wikipedia ad oggi usavano ancora bgcolor.

Ora, è chiaro che se quasi 1500 voci di Wikipedia hanno una tabella colorata con bgcolor e se ogni browser del pianeta (tranne Internet Exploder) mostra correttamente questo colore, significa che non c’è proprio nessuna fretta a correggerlo. Certo però che un giorno questa migrazione sarà da fare. Un giorno.

Ora sapete il perché ciò mi abbia allettato.

In teoria una sostituzione del genere appare piuttosto semplice. In fondo bisogna solo trovare nel testo della pagina tutto ciò che assomigli a questo:

<td bgcolor="#ff0000"></td>

E trasformarlo in questo:

<td style="background:#ff0000"></td>

Ma i casi da tenere in considerazione sono almeno questi:

<td bgcolor="#ff0000"></td>
<td bgcolor="#f00"></td>
<td bgcolor="ff0000"></td>
<td bgcolor=ff0000></td>
<td bgcolor="f00"></td>
<td bgcolor  = "red"></td>

Senda dimenticare che una becera sostituzione potrebbe provocare attributi style doppi ove ve ne fosse già uno:

<td bgcolor="red"     colspan="2" style="color:blue;">
↓
<td style="color:red" colspan="2" style="color:blue;">

Tagliando corto dopo un’oretta buona ecco qui una casseruola di espressioni regolari che lanciate in sequenza effettuano la corretta conversione di parecchi di questi casi:

1. Una prima sostituzione di tutti i vari colori esadecimali scritti ahimè senza cancelletto davanti tipo bgcolor="ff0000" e che il bot non deve confondere con bgcolor="red" o altri nomi propri che non vogliono il cancelletto davanti:

# Ricerca:
/bgcolor *= *("?)([a-fA-F0-9]{6}|[a-fA-F0-9]{3})+\1/
 
# Sostituzione:
style="background:#$2"

Notare l’utilità dell’operatore \1 nella ricerca per riferirsi al primo apice che può esserci o meno.

2. Segue una sostituzione di tutti i vari colori esadecimali con cancelletto davanti e quelli dal nome specifico:

# Ricerca
/bgcolor *= *("?)(#[a-z0-9A-Z]{6}|#[a-zA-Z0-9]{3}|[a-zA-Z]{3,})+\1/
 
# Sostituzione
style="background:$2"

3. Per sfizio a questo punto uno potrebbe anche decidere di accorciare tutti i colori dal formato #aabbcc a #abc:

# Ricerca
/#([a-fA-F0-9])\1([a-fA-F0-9])\2([a-fA-F0-9])\3"/
 
# Sostituzione
#$1$2$3"

Notare sempre l’uso dell’operatore \1, \2, \3 per dire che un gruppo sarà ripetuto un’altra volta subito dopo.

4. A questo punto ci si potrebbe ritrovare con un tag HTML con due style come in questa situazione, e che dovranno essere uniti in qualche modo:

<td bgcolor="red"                colspan="2" style="color:blue;"></td>
↓
<td style="background-color:red" colspan="2" style="color:blue;"></td>

E quindi si lancia un’altra espressione regolare per unire tutti gli style presenti nello stesso tag (questa è tenera asd):

# Ricerca
/style="([a-zA-Z0-9-; #:%]+?);?"((?: +[a-zA-Z]+ *= *("?)[a-zA-Z0-9-; #:%]+\3)*) style="([a-zA-Z0-9-; #:%]+?);?"/
 
# Sostituzione
style="$1; $4"$2

Notare il doppio-gruppo innestato (?:()*) in mezzo ai due style. Qui il gruppo centrale è ripetuto da zero ad infinite volte e non deve avere nome (altrimenti si entra in altre dimensioni… asd) mentre il gruppo esterno colleziona queste ripetizioni interne e le salva in $2. Quindi se si ha la situazione:

style="uno" roba=asd pippo="gianni" style="due"

Questo sarà il valore della cattura in $2:

roba=asd pippo="gianni"

E quindi avverrà questo magico accorpamento dei due style, mantenendo il resto del ciarpame:

<td style="background-color:blue;" colspan="2" rowspan=1 style="color:red">
↓
<td style="background-color:blue; color:red" colspan="2" rowspan=1>

Notare che ci si è presi lo scrupolo di non far venire ;; nel concatenare le due proprietà CSS o di dimenticarsi proprio ; nella loro congiunzione.

D’altra parte se fin’ora abbiamo acchiappato e convertito i bgcolor ora questo processo dovrà essere ripetuto per color, valign, align ed altre cose, più o meno in quest’ordine. Perché in quest’ordine? Perché il color va sostituito dopo aver sostituito eventuali bgcolor, perché bgcolor può essere frainteso come color e se non avete voglia di piazzare un lookahead per decidere quando inizi il nome di un attributo HTML… insomma, bisogna considerare l’ordine.

C’è anche da dire che finché si sostituisce solo un singolo attributo come bgcolor si rischia al massimo di creare due style e questo problema è risolto con la sostituzione appena citata. Al contrario se gli attributi iniziano ad essere n occorrerà lanciare n volte l’espressione numero 4 affinché passo dopo passo tutti gli style si vadano ad inglobare passaggio dopo passaggio:

<td bgcolor=red color=red valign=left colspan="1" style="padding:1px">
↓
<td style="background:red" style="color:red" style="vertical-align:left" colspan="1" style="padding:1px">
↓
<td style="background:red; color:red; vertical-align:left" colspan="1" style="padding:1px">
↓
<td style="background:red; color:red; vertical-align:left; padding:1px" colspan="1">

(Come fai ad essere già qui? asd. Torna su a constatare i passaggi finché non ti convinci dell’efficacia della espressione regolare numero 4 e del fatto che basti lanciarla n volte per avere un corretto accorpamento dei n attributi deprecati esplosi nei vari style)

Ebbene, lanciando tutte queste espressi regolari su una pagina a caso ecco il risultato: test.

A questo punto si lancia il mio bottino personalissimo e si corregge Wikipedia:

./replace.php \
--always \
--wiki=itwiki \
--generator=search \
--gsrsearch='insource:bgcolor' \
--regex \
--summary="Bot: cose" \
REGEX1 SOSTITUZIONE1 \
REGEX2 SOSTITUZIONE2 \
...

E per oggi le nostre inutilità le abbiamo fatte.

E anche oggi siamo riusciti a non usare un parser HTML per fare ciò che bisognerebbe fare con un parser HTML. asd

P.S.
Naturalmente non solo è stupido pensare che qualcuno mi ringrazierà per aver fatto una cosa del genere (o forse a farlo sarà il World Wide Web Consortium? chissà. asd) ma sarebbe altrettanto stupido pensare che non sia scappato un errore da qualche parte in qualche corner-case allucinante in qualche voce a bassissima visibilità fuori dai controlli a campione, magari proprio mentre mi ero distratto un momento a rispondere alle domande impertinenti di quel bischero di Ferdi2005, mentre con una pupilla monitoravo il bot e con l’altra gli mandavo una gif di un Sofficino. Quindi, fra 2 anni, un utente verrà giustamente a cazziarmi e dovrò giustamente spiegargli come mai io mi sia permesso di non verificare come mai nella sua specifica circostanza un testo abbia potuto perdere la formattazione desiderata. Dannato Ferdi2005. Dannati Sofficini. asd

La vita non da gioie. Le espressioni regolari neanche. Ma almeno abbiamo dimostrato ancora una volta quanto le espressioni regolari siano bellissime. asd

Strappando la licenza di Microsoft Windows

Consiglio a tutti. È un toccasana contro lo stress.

A margine:

  • Questo è un video trash ed è perciò adatto a YouTube. Se fosse stato un video culturalmente interessante l’avrei caricato su Wikimedia Commons.
  • Se proprio devi caricare un video su YouTube almeno evita la licenza YouTube standard (che è di default).
  • Questo video è incorporato dal dominio youtube-nocookie.com

Fra pochi minuti inizia il code challenge

Siamo qui all’IIS Avogadro di Torino, fuggiti dalla nostra università, per partecipare ad un code challenge di cui tenteremo di non dire il nome e che non linkeremo per non fare loro speculazioni SEO gratuite :D

Avremo molta fame in queste 4 ore per risolvere una sfida algoritmica che ci sarà comunicata a breve.

(Sì, sembriamo dei ritardati. Ma dei ritardati con un uovo di Paqua…)

Vinca il migliore!

Team di sviluppo: glossario

(Dalla nuova serie informatici dal parrucchiere)

Glossario per la sopravvivenza all’interno di un qualsivoglia team di sviluppo di successo, dal discutibile punto di vista di un ciovane developer.

P.S. Questo glossario è ironico e quasi sicuramente non si sta parlando di te, quindi datti una calmata.


Il Boss: Paga. Tu tratti bene lui e lui tratta bene te. Semplice. Di solito però è sempre via.
Sarebbe anche in grado di esprimersi, ma ha eletto Il Delegato.


Il Delegato: Umano inutile ma assai carismatico. Se evocato da Il Boss, rimane per sempre. È in grado di fissare deadline sugli esseri umani. Il Delegato deve erogare deadline all’ultimo momento, passandole come imposte dall’alto di recente, in realtà se n’è ricordato ora. Il Delegato conosce limitate ma efficaci frasi di circostanza per variare all’improvviso una deadline. Ad esempio «Ecco! Le specifiche sono cambiate!  Maledetti quegli stronzi ai piani alti! [n.d.r. non c’è nessuno ai piani alti]» «Ecco! Dovremmo [n.d.r. dovrete] rifare tutto da capo ed entro domani!».
Di solito fa cip & ciop con L’Esperto.


L’Esperto: Cirriculum vitæ in qualsiasi formato proprietario; svolti i lavori informatici più inventati, in settori citati continuamente; dress code da operatore delle pompe funebri; cita perle di saggezza in Inglese maccheronico; sempre il punto di riferimento per qualsiasi scelta tecnica; maestro dei monologhi; ha Linkedin e l’ultimo iPhone; confonde puntualmente Java con JavaScript; «chiediamo a lui che sa»; Avete davanti a voi L’Esperto.
In un’altra vita lavorava per le riviste da 2€ nella sezione oroscopi e faceva sentire meglio la gente. Ma non in questo universo. Qui lui è L’Esperto e fa sentire meglio i piani alti.
Ha diversi punti deboli. È allergico alla baracca, è allergico ad il ragazzo ed è mortalmente allergico ad ogni riga di codice. L’Esperto è un vero esperto quando si tratta di ingegnerizzare e fissare briefing.


briefing: Raccoglimento effettuabile esclusivamente dalla figura di un L’Esperto per aprire una parentesi su tutti gli approcci più impensabili per la risoluzione di un problema. In qualche modo c’entra sempre Java o JavaScript.
Nonostante siano molti questi approcci, ognuno è più inefficiente e inapplicabile dell’altro quindi, mentre egli vomita queste cazzate, per fortuna il ragazzo lavora al problema.
Il workflow è il seguente: L’Esperto inizia a camminare in tondo, parte un monologo, «bla bla ingegnerizzare bla bla»: eccoci in un briefing.
Da questo istante il ragazzo muta e preserverà le funzioni per cercare di rimanere produttivo. Il sangue scende e arriva alle dita. Lo sguardo rimane inebetito. L’algoritmo si riduce a 7 istruzioni:

  • risolvere il problema
  • dire «Uhm!» facendo cenni con il capo, quando si percepisce una domanda retorica a risposta affermativa da L’Esperto
  • dire «Uhm.» scuotendo la testa, quando si percepisce una domanda retorica a risposta negativa da L’Esperto
  • dire «Uhm.» quando sopraggiunge una pausa ad effetto nel monologo de L’Esperto
  • ridere quando lo fanno gli altri
  • smettere di ridere quando non lo fa più nessuno
  • controllare se L’Esperto ha finalmente terminato il suo cabaret – verificare questa condizione di uscita ogni rand(1, 10) secondi

ingegnerizzare: Tipico intercalare de L’Esperto per introdurre una serie di amenità sconclusionate.


deadline: data inderogabile in cui tutta la baracca deve funzionare. Deve sempre sembrare l’ultima e per questo ha sempre l’ultima parola Il Delegato. L’algoritmo è il seguente: Si ha molto anticipo? Non si fisserà alcuna deadline. Il lavoro deve essere finito fra un mese? La deadline sarà lunedì. Siamo già a lunedì e il ragazzo ha lavorato tutta domenica notte? Si chiama L’Esperto, si scriveranno nuove specifiche, ci sarà da far rifare tutto da capo e finalmente si avrà una nuova deadline.


specifiche: quando Il Boss esprime una necessità ad Il Delegato, quest’ultimo si attiva per introdurre il problema alla figura di un L’Esperto, il quale si sentirà giustificato a calendarizzare un briefing, nel nome della razionalizzazione del problema. Al termine di questo tripudio di nullafacenza si avrà una nuova specifica da poter consegnare ad il ragazzo. Quest’ultimo, in qualità di terminale di questo telefono senza fili, starà al gioco e ringrazierà. In seguito cestinerà questo prodotto e farà una telefonata ad Il Boss per capire che cosa volesse realmente.
Una nuova specifica introduce una nuova deadline. Una specifica deve essere in contrasto con la precedente.
In pratica il ragazzo la domenica sera commenterà via il codice de la baracca scritto  per la specifica precedente, così come per la prossima specifica commenterà via il codice scritto in tal giorno, e via così.


la baracca: Il termine baracca sta ad il ragazzo come Piattaforma sta a L’Esperto. La baracca è madre, padre, figlio, cibo e compagno di letto de il ragazzo. Esempi d’uso: «Ma dove c*** ‘sta il server dove dovevamo ficcare la baracca?» esordisce il ragazzo. Si pensa che La Piattaforma sia la stessa cosa de la baracca, ma La Piattaforma è tirata su da L’Esperto a suon di specifiche grazie al cloud computing, mentre la baracca e tirata su da il ragazzo programmando la domenica notte sul suo server.


server: La figura de L’Esperto può garantire che questa tecnologia missilistica all’ultimo grido sia già pronta da ieri, ma purtroppo è sorto un problema. Su questo bolide non si può installare una sega. Partono le chiamate. «DOVE CAZZO È CHI HA INGEGNERIZZATO QUESTA BARACCA? CHE QUESTI POI SI ACCORGONO CHE MANCO SO INSTALLARE UNA DEBIAN IN MENO DI QUATTRO GIORNI DI CUI TRE LAVORATIVI!» — esordisce L’Esperto. Se il ragazzo nel frattempo si è impietosito a sufficienza,  quasi sicuramente per evitare il disastro e figure dimmerda avrà detto la minchiata del secolo: proporre di usare il suo server per tenere su la baracca.


La Piattaforma: Studi di settore concordano sul fatto che La Piattaforma abbia un valore di mercato ed una complessità assolutamente non paragonabili ad la baracca.


problema: Salta sempre fuori. Non è mai colpa de L’Esperto o delle sue specifiche. Solitamente L’Esperto non perde mai occasione di tenersi stretto per sè la responsabilità di risolvere un problema attraverso il raccoglimento in un briefing. Se il problema si protrae fino alle 18:00 o se è arrivato il week-end, il briefing deve essere considerato come un successo e perciò la responsabilità può essere trasferita immediatamente ad il ragazzo.


il ragazzo: È sempre uno. Cioè, mi sembrava fossero due, ma è uno solo. Dalla regia mi dicono che l’altro è andato in burnout a furia di sentire le amenità de Il Delegato / ai briefing de L’Esperto.


beta-tester: È un concetto da sfigati. La Piattaforma è sempre sicura e funzionante. È subito possibile scagliare su La Piattaforma le scimmie.


scimmia: TRATTASI DI PIGIATASTI PARTICOLARMENTE AMANTI DEL CAPS LOCK . NEMICI NATURALI DELLA NETIQUETTE E PERSONE TANTO FRUSTRATE QUANTO FRUSTRANTI A LORO INSAPUTA . SI CAPISCE CHE USANO WINDOWS PERCHé LE LORO “è” ACCENTATE SONO LE UNICè COSè MINUSCOLè — n.d.r. cosa che non capiterebbe con GNU/Linux — SCOPO DELLE SCIMMIE è ENTRARE A CONTATTO CON IL SUPPORTO TECNICO .


Supporto tecnico: Sono paladini della giustizia sociale con la missione di evadere qualsivoglia richiesta ricevuta dalle scimmie. Punto debole: il supporto tecnico è allergico ad ogni accesso al database. Nel raro caso in cui una richiesta tecnica sia davvero una richiesta tecnica, è irrisolvibile dal supporto tecnico. Il supporto tecnico deve essere in grado di non far notare a L’Esperto che c’è bisogno di il ragazzo per risolvere qualsivoglia sia il problema. In realtà l’Esperto lo sa benissimo, ma finchè è Il Boss a non accorgersene, ci sta.
Ad ogni problema inoltrato ad il ragazzo, esso comunica la soluzione ad il Supporto tecnico che risponderà alla scimmia. In sostanza il supporto tecnico è un proxy abbastanza inefficiente fra la scimmia ed il ragazzo.
Di solito sono tutte brave persone, solo un po’ frustrate e sottopagate.
Se il ragazzo è solito bestemmiare, il proxy è in grado di rimuovere i sacramenti dalle risposte, prima di inoltrarle alla scimmia.

Informatici dal parrucchiere

Dato che in molti mi stanno facendo capire che devo dedicare più tempo al benessere personale, inizierei a condividere con l’Internet qualche vicessitudine frustrante e/o irriverente. In sostanza sparlerò di qualche collega. Naturalmente il soggetto interessato non ha nulla da temere: il suo nome sarà protetto da potenti algoritmi crittografici vulnerabili solo al metodo del tubo di gomma.

Se vi suona come qualcosa di sbagliato, cosa credete che dica di voi la vostra vicina di casa dal parrucchiere? ;) Solo che lei non usa mezzi termini.

Nel caso qualcuno se lo stesse chiedendo, no, non mi sto ispirando a Manzoni. Io sono decisamente più ignorante e mi limito ad inchinarmi alle perle già contenute in Storie dalla sala Macchine :D

Se sei giunto fin qui perchè ti fischia l’orecchio o hai la coda di paglia o altri simili problemi metaforici e ritieni di essere moralmente stuprato, in quanto il tuo egocentrismo ti fa credere di essere il diretto interessato dei miei sfoghi, ti sbagli! Sei sufficientemente intelligente per capire che in verità tu non esisti in quanto tale: io no ho mai citato nessuno.

asd ^^

Continua in: Categoria:Informatici dal parrucchiere.