<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Mysql on Melabit</title>
    <link>https://static.233.196.69.159.clients.your-server.de/it/tags/mysql/</link>
    <description>Recent content in Mysql on Melabit</description>
    <generator>Hugo</generator>
    <language>it</language>
    <lastBuildDate>Mon, 03 Oct 2022 06:00:00 +0000</lastBuildDate>
    <atom:link href="https://static.233.196.69.159.clients.your-server.de/it/tags/mysql/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Swift contro Python, ovvero mele contro pere</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2022/10/03/swift-contro-python-ovvero-mele-contro-pere/</link>
      <pubDate>Mon, 03 Oct 2022 06:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2022/10/03/swift-contro-python-ovvero-mele-contro-pere/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2022-10-03-swift-contro-python-ovvero-mele-contro-pere/martina-leuderalbert-i-GgDz7KQz4-unsplash.jpg&#34; alt=&#34;&#34;&gt;&#xA;&amp;ndash; &lt;em&gt;Fonte: &lt;a href=&#34;https://unsplash.com/@tinaleuderalbert&#34;&gt;Martina Leuderalbert&lt;/a&gt; su &lt;a href=&#34;https://unsplash.com&#34;&gt;Unsplash&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Alle elementari la maestra mi aveva insegnato a non sommare le mele con le pere, cioè a non mettere insieme (o paragonare) cose e fatti molto diversi fra loro. Non ha quindi senso sommare 3 litri di acqua con 5 chilogrammi di farina o chiedersi se 40 metri sono più o meglio di 20 secondi.&lt;/p&gt;&#xA;&lt;p&gt;Quello che diceva la mia maestra lo dicono, sono sicuro, le maestre di tutto il mondo, ma c&amp;rsquo;è sempre qualcuno assente a queste lezioni.&lt;/p&gt;&#xA;&lt;h4 id=&#34;il-golia-della-programmazione-moderna&#34;&gt;Il Golia della programmazione moderna&lt;/h4&gt;&#xA;&lt;p&gt;Uno di questi è stato di sicuro Ari Joury che, nonostante il suo dottorato in fisica delle particelle, non si è fatto scrupoli a pubblicare su Medium questo &lt;a href=&#34;https://medium.com/geekculture/swift-was-poised-to-replace-python-then-it-tanked-3e6c11740ba6&#34;&gt;Swift was poised to replace Python. Then it tanked&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Cosa dice l’articolo? Che nel mondo del machine learning i linguaggi di programmazione più usati sono Matlab, R, Julia e soprattutto Python. Quest’ultimo, nato originariamente per sviluppare dei piccoli &lt;em&gt;script&lt;/em&gt; senza troppe pretese, è diventato oggi un vero &lt;em&gt;&amp;ldquo;Golia della programmazione moderna”&lt;/em&gt;, tanto da essere usato estensivamente da aziende come Dropbox, Instagram e Pinterest per i loro servizi online.&lt;/p&gt;&#xA;&lt;p&gt;Grazie alla disponibilità di librerie come TensorFlow o PyTorch (nonché, aggiungo io, di librerie di base come Pandas o NumPy), Python è diventato anche il linguaggio di elezione di chi si occupa di machine learning e di analisi dei dati.&lt;/p&gt;&#xA;&lt;p&gt;La crescita di Python sembra bloccata da un paio di anni, ma la sua enorme diffusione lo farà rimanere comunque un attore centrale anche nel prossimo futuro.&lt;/p&gt;&#xA;&lt;h4 id=&#34;entra-in-scena-swift&#34;&gt;Entra in scena Swift&lt;/h4&gt;&#xA;&lt;p&gt;Fin qui tutto vero e condivisibile. Magari si potrebbe eccepire qualcosina sull&amp;rsquo;importanza di R nell&amp;rsquo;ambito dell&amp;rsquo;analisi dei dati, ma non voglio essere puntiglioso.&lt;/p&gt;&#xA;&lt;p&gt;Il guaio è che se uno si limita a scrivere queste cose non se lo fila nessuno, chi vorrà mai leggere l&amp;rsquo;ennesimo articolo generico sulle virtù di Python per il machine learning (e non) o su &lt;a href=&#34;https://towardsdatascience.com/why-python-is-not-the-programming-language-of-the-future-30ddc5339b66&#34;&gt;quale linguaggio&lt;/a&gt; è destinato a soppiantarlo?&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; Ci vuole un colpo d&amp;rsquo;ala.&lt;/p&gt;&#xA;&lt;p&gt;Per fortuna c&amp;rsquo;è sempre Apple che, come il nero, va bene su tutto e, soprattutto, garantisce sempre un bel po&amp;rsquo; di click. E allora perché non mettere in mezzo Swift?&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.apple.com/swift&#34;&gt;Swift&lt;/a&gt; è un linguaggio di programmazione sviluppato da Apple con l&amp;rsquo;obiettivo specifico di sostituire &lt;a href=&#34;https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ObjectiveC/Introduction/introObjectiveC.html&#34;&gt;Objective-C&lt;/a&gt; come linguaggio di elezione per lo sviluppo delle applicazioni per iOS e per macOS. Swift è facile da imparare e la sua sintassi leggibile ricalca quella di Python, è vero, così come quella di Julia e di tanti altri linguaggi di programmazione moderni.&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;p&gt;Swift però non ha mai preteso di essere, come &lt;a href=&#34;https://medium.com/geekculture/swift-was-poised-to-replace-python-then-it-tanked-3e6c11740ba6&#34;&gt;sostiene il nostro Ari&lt;/a&gt;, il nuovo &lt;em&gt;&amp;ldquo;Re della Programmazione&amp;rdquo;&lt;/em&gt;. Ad Apple non interessa posizionare Swift come uno strumento di programmazione &lt;em&gt;general purpose&lt;/em&gt;, le interessa solo che venga usato per programmare le applicazioni per i suoi sistemi operativi. Del resto, il fatto che manchi di una versione per Windows taglia fuori una fetta così importante di potenziali utenti da rendere impossibile a priori una pretesa tanto assurda.&lt;/p&gt;&#xA;&lt;p&gt;A maggior ragione Swift non ha mai preteso di essere il nuovo strumento principe per il machine learning, come il buon Ari sotto sotto ci vuole far intendere. È vero che Google ha provato a &lt;a href=&#34;https://tensorflow.org/swift&#34;&gt;supportare Swift&lt;/a&gt; all&amp;rsquo;interno di TensorFlow (di cui Google è il principale sviluppatore), ma questo esperimento, come succede con tanti altri prodotti dell&amp;rsquo;azienda di Mountain View, è stato interrotto nel 2021. È ragionevole pensare, infatti, che chi sviluppa in Swift preferisce usare gli &lt;a href=&#34;https://developer.apple.com/machine-learning&#34;&gt;strumenti per il machine learning integrati&lt;/a&gt; in macOS/iOS piuttosto che prodotti di terze parti.&lt;/p&gt;&#xA;&lt;h4 id=&#34;io-sono-più-popolare-di-te&#34;&gt;Io sono più popolare di te&lt;/h4&gt;&#xA;&lt;p&gt;Ma la cosa più sconcertante è pretendere di confrontare la popolarità (o meno) dei linguaggi di programmazione utilizzando una metrica fasulla come la percentuale di domande poste ogni mese su StackOverflow relativamente ad uno o ad un altro linguaggio. In base a questa percentuale, la &lt;a href=&#34;https://insights.stackoverflow.com/trends?tags=python%2Cswift&#34;&gt;popolarità di Python&lt;/a&gt; è cresciuta costantemente fino alla fine del 2020, per poi stabilizzarsi al 16% del totale delle domande su StackOverflow, mentre &lt;a href=&#34;https://insights.stackoverflow.com/trends?tags=python%2Cswift&#34;&gt;quella di Swift&lt;/a&gt; dopo aver raggiunto un massimo del 3% è in declino e ora si aggira nei dintorni dell&#39;1.5%.&lt;/p&gt;&#xA;&lt;p&gt;Perché è una metrica fasulla? Perché finché siamo sui grandi numeri e confrontiamo la &lt;a href=&#34;https://insights.stackoverflow.com/trends?tags=python%2Cjavascript&#34;&gt;popolarità di Python con quella di JavaScript&lt;/a&gt; può anche avere senso basarsi sul numero di domande poste su StackOverflow per valutarne la diffusione.&lt;/p&gt;&#xA;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2022-10-03-swift-contro-python-ovvero-mele-contro-pere/stack-overflow-python-javascript.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;Ma se buttiamo nel calderone anche la terna &lt;a href=&#34;https://insights.stackoverflow.com/trends?tags=python%2Cjavascript%2Cjava%2Chtml%2Ccss%2Cphp&#34;&gt;HTML, CSS e PHP&lt;/a&gt;, che sono ancora oggi tre strumenti fondamentali per chi fa sviluppo web, troviamo che questi ultimi sono in costante declino, senza però che la decadenza (su StackOverflow) di PHP venga compensata da un incremento corrispondente nell&amp;rsquo;interesse verso JavaScript.&lt;/p&gt;&#xA;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2022-10-03-swift-contro-python-ovvero-mele-contro-pere/stack-overflow-python-javascript-html-css-php.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;Anche &lt;a href=&#34;https://insights.stackoverflow.com/trends?tags=wordpress&#34;&gt;Wordpress&lt;/a&gt;, che piaccia o non piaccia sta dietro il 40% dei siti web, secondo la metrica di StackOverflow sarebbe in calo. Idem per &lt;a href=&#34;https://insights.stackoverflow.com/trends?tags=mysql&#34;&gt;MySQL&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;E allora la spiegazione può essere un&amp;rsquo;altra: più che la diffusione, le domande su StackOverflow ci fanno vedere la complessità del linguaggio e la qualità della sua documentazione: HTML, CSS e PHP (o Wordpress e MySQL) sono prodotti ben assestati, per loro esistono ottime guide sul web che ne spiegano diffusamente i segreti. Di conseguenza non è necessario cercare risposte più o meno occasionali su StackOverflow, e comunque quelle che ci sono già bastano ed avanzano.&lt;/p&gt;&#xA;&lt;p&gt;Python e JavaScript, al contrario, hanno una sintassi di base piuttosto semplice ma per essere usati al meglio hanno bisogno di un gran numero di librerie aggiuntive, che sono spesso più complesse del linguaggio base e che vengono aggiornate ed espanse di continuo. La documentazione relativa non tiene sempre il passo dello sviluppo, per cui il modo migliore per imparare ad usare al meglio le centinaia e centinaia di API disponibili è quello di rivolgersi a qualche esperto su StackOverflow, spingendo così in alto la &lt;em&gt;popolarità&lt;/em&gt; dei due linguaggi.&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;p&gt;Secondo la logica basata sul numero di domande su StackOverflow anche &lt;a href=&#34;https://insights.stackoverflow.com/trends?tags=c%2Cc%2B%2B&#34;&gt;C e C++&lt;/a&gt;, i linguaggi usati per la programmazione di sistema (e non) su Linux e Windows, sarebbero in declino, e lo stesso succede a &lt;a href=&#34;https://insights.stackoverflow.com/trends?tags=algorithm%2Carchitecture%2Cclass%2Cdatabase&#34;&gt;concetti di base&lt;/a&gt; come &lt;em&gt;algoritmo&lt;/em&gt;, &lt;em&gt;architettura&lt;/em&gt;, &lt;em&gt;classe&lt;/em&gt; o &lt;em&gt;database&lt;/em&gt;. Ma  sono in declino perché c&amp;rsquo;è davvero poco interesse o solo perché anche per loro c&amp;rsquo;è abbondanza di documentazione di ottimo livello, senza doversi ridurre a porre sempre delle nuove domande su StackOverflow?&lt;/p&gt;&#xA;&lt;p style=&#34;border-style:solid; border-color:lightblue; background-color:lightyellow; padding:1em;&#34;&gt;Nel mio piccolo lo faccio anch&#39;io: quando programmo in R uso pochissimo StackOverflow, perché posso usare l&#39;ottimo help in linea di RStudio e perché la documentazione che accompagna le librerie aggiuntive di R è centralizzata sul [CRAN](https://cran.r-project.org/) (_The Comprehensive R Archive Network_) ed è di altissima qualità. E quando tutto questo non basta, posso trovare decine di siti e di blog che spiegano benissimo gli aspetti più ostici del linguaggio. Quando passo a Python (un linguaggio che, sia chiaro, mi piace parecchio), StackOverflow diventa quasi una necessità, perché la frammentazione e la mancanza di sistema di gestione centralizzata delle librerie di Python rendono molto più complicato trovare documentazione aggiornata di qualità.&#xA;&lt;/p&gt;&#xA;&lt;h4 id=&#34;decaduto-o-semplice&#34;&gt;Decaduto o semplice?&lt;/h4&gt;&#xA;&lt;p&gt;Swift è un linguaggio semplice con una ottima &lt;a href=&#34;https://www.swift.org/documentation/&#34;&gt;documentazione ufficiale&lt;/a&gt;, un eccellente strumento di apprendimento del linguaggio (e non solo) come &lt;a href=&#34;https://www.apple.com/it/swift/playgrounds/&#34;&gt;Swift Playgrounds&lt;/a&gt; e un numero relativemente ridotto di &lt;a href=&#34;https://codersera.com/blog/open-source-swift-libraries/&#34;&gt;librerie aggiuntive&lt;/a&gt;, c&amp;rsquo;è davvero bisogno di passare un sacco di tempo su StackOverflow per usarlo al meglio?&lt;/p&gt;&#xA;&lt;p&gt;Guardando il grafico relativo al numero di domande relative a Swift ci si accorge che i picchi di interesse corrispondono alle date di presentazione della versione 1.0 (giugno 2014) e al rilascio delle versioni 2.0 (settembre 2015), 3.0  (settembre 2016) e 5.0 (marzo 2019) e, come è naturale, dopo ogni presentazione l&amp;rsquo;interesse tende a decadere, proprio perché per usare il linguaggio c&amp;rsquo;è davvero poco da chiedere su StackOverflow.&lt;/p&gt;&#xA;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2022-10-03-swift-contro-python-ovvero-mele-contro-pere/stack-overflow-swift.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;A supporto di questa tesi c&amp;rsquo;è il risultato di &lt;a href=&#34;https://data.stackexchange.com/stackoverflow/query/edit/1649394&#34;&gt;questa semplice query SQL&lt;/a&gt;, con la quale ho provato a calcolare il numero di domande poste su StackOverflow ogni anno. Di SQL ne so pochissimo per cui dovete prendere i risultati con le pinze, ma sembra che il numero di domande su StackOverflow sia in progressiva diminuzione, da un massimo di 2.2 milioni di domande nel 2016 a 1.6 milioni nel 2021.&lt;/p&gt;&#xA;&lt;p&gt;Una volta raggiunta una base di conoscenza sufficientemente ampia non ha molto senso porre sempre delle nuove domande (che su StackOverflow sono fortemente scoraggiate) ma ci si può limitare ad utilizzare il materiale già esistente. Questo almeno per le tecnologie più stabili, come possono essere HTML, CCS, PHP, Wordpress, MySQL&amp;hellip; oppure Swift. Quando invece abbiamo a che fare con strumenti in rapidissima evoluzione, come Python o JavaScript, StackOverflow diventa davvero il modo migliore per imparare.&lt;/p&gt;&#xA;&lt;h4 id=&#34;conclusioni&#34;&gt;Conclusioni&lt;/h4&gt;&#xA;&lt;p&gt;C&amp;rsquo;è bisogno di dilungarsi ancora? Non credo, dico solo che basarsi su ipotesi fantasiose o metriche poco affidabili per ipotizzare &lt;a href=&#34;https://medium.com/geekculture/swift-was-poised-to-replace-python-then-it-tanked-3e6c11740ba6&#34;&gt;scenari catastrofici&lt;/a&gt; per Swift (o, al contrario, &lt;a href=&#34;https://towardsdatascience.com/bye-bye-python-hello-julia-9230bff0df62&#34;&gt;scenari entusiasmanti&lt;/a&gt; per Julia&lt;sup id=&#34;fnref:4&#34;&gt;&lt;a href=&#34;#fn:4&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;4&lt;/a&gt;&lt;/sup&gt;) mi pare francamente &lt;a href=&#34;https://xkcd.com/558/&#34;&gt;insensato&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://static.233.196.69.159.clients.your-server.de/img/2022-10-03-swift-contro-python-ovvero-mele-contro-pere/dt140323.jpg&#34; alt=&#34;&#34;&gt;&#xA;&amp;ndash; &lt;em&gt;Fonte: &lt;a href=&#34;https://dilbert.com/strip/2014-03-23&#34;&gt;Dilbert&lt;/a&gt; di Scott Adams&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Capo: Non si possono confrontare mele e arance.&lt;/p&gt;&#xA;&lt;p&gt;Dilbert: È chiaramente sbagliato, perché li hai appena confrontati e dichiarati diversi.&lt;/p&gt;&#xA;&lt;p&gt;Wally: Mele e arance sono entrambi alimenti che crescono sugli alberi. Sarebbe assolutamente valido confrontarli dal punto di vista nutrizionale.&lt;/p&gt;&#xA;&lt;p&gt;Dilbert: Ho notato che molte delle cose che escono dalla tua bocca non hanno senso.&lt;/p&gt;&#xA;&lt;p&gt;Capo: Parli come mia moglie.&lt;/p&gt;&#xA;&lt;p&gt;Wally: Non puoi paragonare tua moglie al tuo subordinato. Sono mele e arance.&lt;/p&gt;&#xA;&lt;p&gt;Capo: Cosa sta succedendo qui?&lt;/p&gt;&#xA;&lt;p&gt;Wally: Non lo so, ma non lo paragonerei a lavoro.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;Ari sembra avere le idee un po&amp;rsquo; confuse sul futuro di Python, dato che su Medium ha anche pubblicato &lt;a href=&#34;https://towardsdatascience.com/why-python-is-not-the-programming-language-of-the-future-30ddc5339b66&#34;&gt;Why Python is not the programming language of the future&lt;/a&gt;, oppure &lt;a href=&#34;https://towardsdatascience.com/bye-bye-python-hello-julia-9230bff0df62&#34;&gt;Bye-bye Python. Hello Julia!&lt;/a&gt; e perfino &lt;a href=&#34;https://levelup.gitconnected.com/why-tensorflow-for-python-is-dying-a-slow-death-ba4dafcb37e6&#34;&gt;Why TensorFlow for Python is dying a slow death&lt;/a&gt;.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:2&#34;&gt;&#xA;&lt;p&gt;E non è un caso, perché alla base di tutti questi linguaggi c&amp;rsquo;è sempre il buon vecchio &lt;a href=&#34;https://time.com/69316/basic/&#34;&gt;BASIC&lt;/a&gt;, il primo linguaggio di programmazione davvero per tutti, che è stato il linguaggio di base dei computer personali degli anni &amp;lsquo;80 su cui si sono fatti le ossa tutti i grandi nomi dell&amp;rsquo;informatica di quegli anni.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:3&#34;&gt;&#xA;&lt;p&gt;Le sole domande sulla libreria &lt;code&gt;pandas&lt;/code&gt; di Python (una libreria fondamentale per chi usa Python per l&amp;rsquo;analisi dei dati) &lt;a href=&#34;https://insights.stackoverflow.com/trends?tags=pandas&#34;&gt;assommano al 3%&lt;/a&gt; del totale, le principali librerie per il machine learning (TensorFlow, Keras, PyTorch, scikit-learn, OpenCV, NLTK) fanno &lt;a href=&#34;https://insights.stackoverflow.com/trends?tags=tensorflow%2Ckeras%2Cpytorch%2Cscikit-learn%2Copencv%2Cnltk&#34;&gt;un altro 2%&lt;/a&gt;, mentre quelle su &lt;code&gt;Django&lt;/code&gt; e &lt;code&gt;Flask&lt;/code&gt; (le principali librerie Python per lo sviluppo di applicazioni per il web) sono quasi &lt;a href=&#34;https://insights.stackoverflow.com/trends?tags=django%2Cflask&#34;&gt;al 2.5%&lt;/a&gt; del totale generale. Chiaramente queste domande vengono anche conteggiate come domande relative a Python.&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:4&#34;&gt;&#xA;&lt;p&gt;Perché sì, &lt;a href=&#34;https://insights.stackoverflow.com/trends?tags=julia&#34;&gt;l&amp;rsquo;interesse per Julia&lt;/a&gt; sembra essere in aumento su StackOverflow, ma parliamo di non più dello 0.16% (1/10 dei valori di Swift) e anche in questo caso i picchi corrispondono al rilascio delle varie versioni del linguaggio.&amp;#160;&lt;a href=&#34;#fnref:4&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;</description>
    </item>
    <item>
      <title>Cronaca di un disastro: come sopravvivere alla pagina bianca di WordPress</title>
      <link>https://static.233.196.69.159.clients.your-server.de/it/2020/01/22/cronaca-di-un-disastro-come-sopravvivere-alla-pagina-bianca-di-wordpress/</link>
      <pubDate>Wed, 22 Jan 2020 06:00:00 +0000</pubDate>
      <guid>https://static.233.196.69.159.clients.your-server.de/it/2020/01/22/cronaca-di-un-disastro-come-sopravvivere-alla-pagina-bianca-di-wordpress/</guid>
      <description>&lt;p&gt;&lt;em&gt;Questo non è un post adatto per chi si spaventa facilmente. Se siete ansiosi o deboli di cuore fatevi un favore e non continuate a leggere.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;premessa&#34;&gt;Premessa&lt;/h4&gt;&#xA;&lt;p&gt;Quando si verifica un disastro in ambito informatico (e non solo) la cosa più importante è non perdere mai la calma. E poi non bisogna avere fretta di rimettere le cose a posto, meglio riflettere prima di agire. Naturalmente avere un backup aggiornato a disposizione aiuta sempre moltissimo.&lt;/p&gt;&#xA;&lt;p&gt;Tutte le volte che ho dovuto affrontare un disastro di tipo informatico &amp;ndash; e fra casi personali, amici e conoscenti succede relativamente spesso &amp;ndash; queste linee guida sono sempre state utilissime per risolvere il problema. L&amp;rsquo;ultima volta, però, una installazione di WordPress andata completamente in tilt ha messo a durissima prova la mia pazienza, oltre che le mie conoscenze tecniche. Ecco il racconto di quello che è successo.&lt;/p&gt;&#xA;&lt;h4 id=&#34;una-giornata-particolare&#34;&gt;Una giornata particolare&lt;/h4&gt;&#xA;&lt;p&gt;Oltre a questo blog, amministro da anni &lt;a href=&#34;https://ilnostrocnr.it/&#34;&gt;Il nostro CNR&lt;/a&gt;, un sito finalizzato alla discussione di tematiche relative al mondo del CNR e della ricerca in generale. Come &lt;a href=&#34;https://melabit.wordpress.com&#34;&gt;melabit&lt;/a&gt;, anche Il nostro CNR è basato su &lt;a href=&#34;https://wordpress.org/&#34;&gt;WordPress&lt;/a&gt;. Il sito è piuttosto popolare, ha un discreto numero di visualizzazioni giornaliere, purtroppo sono sempre troppo pochi quelli che hanno la voglia e la pazienza di intervenire sul forum. Ma questo è un male tipico degli italiani, bravissimi a discutere animatamente al bar (&lt;em&gt;verba volant&amp;hellip;&lt;/em&gt;), ma molto meno propensi a mettere per iscritto quello che pensano, magari per paura di ritorsioni (&lt;em&gt;&amp;hellip;scripta manent&lt;/em&gt; ).&lt;/p&gt;&#xA;&lt;p&gt;Poco prima di Natale Corrado Zunino, un giornalista di Repubblica sempre molto attento ai problemi della ricerca, pubblica un articolo in cui rivela che la procedura di elezione del rappresentante del personale nel CdA del CNR, conclusa un mese prima, potrebbe essere stata &lt;a href=&#34;https://www.repubblica.it/scuola/2019/12/19/news/_brogli_per_le_elezioni_al_cnr_-243846407/&#34;&gt;viziata da brogli&lt;/a&gt;. Il rappresentante &lt;a href=&#34;https://melabit.wordpress.com/2015/10/06/il-cnr-e-anche-questo-scienza-contro-establishment/&#34;&gt;eletto alla tornata precedente&lt;/a&gt; era stato una vera e propria spina nel fianco per la dirigenza del CNR e, non pago di quattro anni di fatiche e sacrifici anche personali, aveva deciso di ripresentarsi per un secondo mandato, con ottime possibilità di successo. Toglierlo di mezzo e sostituirlo con qualcuno meno rigido e competente era quasi una necessità.&lt;/p&gt;&#xA;&lt;p&gt;Subito dopo aver letto l&amp;rsquo;articolo su Repubblica decido di diffonderlo tramite &lt;a href=&#34;https://ilnostrocnr.it/&#34;&gt;Il nostro CNR&lt;/a&gt;. Del resto, dopo la &lt;a href=&#34;https://www.raiplay.it/video/2017/03/Ricercatori-e-ricercati-66100079-8a30-44a7-a913-cf95f6e92fbb.html&#34;&gt;trasmissione di Report del marzo 2017&lt;/a&gt; che ha rivelato la lunga serie di ruberie avvenute in un istituto del CNR (di certo non l&amp;rsquo;unico) e ancora di più &lt;a href=&#34;https://napoli.repubblica.it/cronaca/2019/11/20/news/napoli_false_consulenze_al_cnr-241466172/&#34;&gt;dopo l&amp;rsquo;arresto&lt;/a&gt; &lt;a href=&#34;https://www.ilmattino.it/napoli/cronaca/napoli_consiglio_nazionale_delle_ricerca_cnr_scandalo_consulenze_arresti-4875711.html&#34;&gt;dell&amp;rsquo;ex-direttore del CNR e dei suoi sodali&lt;/a&gt;, nel nostro ente l&amp;rsquo;interesse per queste vicende ripugnanti è altissimo.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://www.ilmattino.it/photos/PANORAMA/57/11/4875711_2103_parco_giochi_gonfiabile_2.jpg&#34; alt=&#34;&#34;&gt;&#xA;&amp;ndash; &lt;em&gt;Fonte: &lt;a href=&#34;https://www.ilmattino.it/napoli/cronaca/napoli_consiglio_nazionale_delle_ricerca_cnr_scandalo_consulenze_arresti-4875711.html&#34;&gt;Il Mattino, 20 novembre 2019&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;h4 id=&#34;aggiornamenti-inattesi&#34;&gt;Aggiornamenti inattesi&lt;/h4&gt;&#xA;&lt;p&gt;Entro quindi in quello che è un po&amp;rsquo; il &lt;em&gt;retrobottega&lt;/em&gt; del sito, la cosiddetta &lt;em&gt;dashboard&lt;/em&gt;, l&amp;rsquo;interfaccia di gestione dei contenuti e delle funzionalità di WordPress, per scrivere un post sulla notizia di Repubblica e come al solito trovo alcuni &lt;em&gt;plugin&lt;/em&gt; da aggiornare (i plugin sono dei pezzetti di codice che estendono le funzioni del sito). Succede praticamente ogni volta che accedo alla &lt;em&gt;dashboard&lt;/em&gt;, e senza pensarci più di tanto clicco sul pulsante di aggiornamento. È una procedura assolutamente sicura e comunque, anche se uno dei plugin non dovesse più funzionare bloccando il resto del sistema, mi basterebbe modificare i nomi di qualche file per disattivarlo e recuperare la piena operatività del sito.&lt;/p&gt;&#xA;&lt;p&gt;Questa volta invece, per qualche motivo incomprensibile, insieme all&amp;rsquo;aggiornamento dei plugin parte anche l&amp;rsquo;aggiornamento dell&amp;rsquo;intero codice di WordPress dalla versione 4.x all&amp;rsquo;ultima versione disponibile, la 5.qualcosa. Aggiornamento che per tanti motivi non volevo ancora fare, e soprattutto che non avrei mai fatto senza prima eseguire un backup affidabile di tutto il sito.&lt;/p&gt;&#xA;&lt;p&gt;Non riesco ancora a capacitarmi di cosa possa essere successo, ma sono sicuro al 100% di non averlo fatto io stesso per errore. I pulsanti per aggiornare i plugin o il codice di WordPress sono ben distinti e non possono essere premuti contemporaneamente (lo vedete qui sotto), e poi ricordo benissimo di aver letto i messaggi che elencavano i plugin in corso di  aggiornamento. Ma, quando alla fine del processo ho cliccato per tornare alla pagina principale, ho visto partire anche l&amp;rsquo;aggiornamento del codice di WordPress, e a quel punto non potevo più far niente per interromperlo.&lt;/p&gt;&#xA;&lt;img src=&#34;https://melabit.files.wordpress.com/2020/01/aggiornamento-sito-e-plugin.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;È possibile che l&amp;rsquo;aggiornamento del codice sia partito da solo per qualche baco di Wordpress o di un plugin, del resto i bachi del software sono inevitabili. Una cosa seccante, ma ancora niente di preoccupante.&lt;/p&gt;&#xA;&lt;h4 id=&#34;un-backup-è-per-sempre&#34;&gt;Un backup è per sempre?&lt;/h4&gt;&#xA;&lt;p&gt;Una volta concluso l&amp;rsquo;aggiornamento non voluto di WordPress, apro una nuova scheda del browser per controllare cos&amp;rsquo;è successo al sito. Compare solo una pagina completamente bianca. Il sito in effetti funziona ancora, ma non carica correttamente le pagine, e anche la &lt;em&gt;dashboard&lt;/em&gt; appare completamente vuota. Per fortuna i file che costituiscono il sito  ci sono ancora tutti, e anche il database usato da WordPress per memorizzare i dati variabili del sito è ancora al suo posto.&lt;/p&gt;&#xA;&lt;div style = &#34;border: 4px dotted lightgray; padding: 1em;&#34;&gt;&#xA;Un sito web dinamico come WordPress è costituito in genere da due componenti ben distinte: la prima comprende tutti file che costituiscono il sito web vero e proprio e che vengono modificati di rado, in particolare il codice WordPress e le personalizzazioni dell&#39;utente, i plugin, i temi grafici, le immagini e tutti i documenti collegati alle pagine del sito (questa componente sarà denominata da ora in poi &#34;file del sito&#34; o semplicemente &#34;sito&#34;). La seconda componente è costituita da un database nel quale vengono memorizzati i dati variabili del sito, fra cui i testi degli articoli e degli interventi sul forum, le informazioni relative agli utenti registrati, i dati di accesso e moltissimo altro.&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Quando succedono queste cose nel 99% dei casi la colpa è di qualche plugin che funziona male o non funziona affatto. Non c&amp;rsquo;era del resto da stupirsi, uno dei motivi per decidere di non aggiornare alla versione più recente di WordPress era legato proprio al fatto che almeno due plugin piuttosto importanti non erano ancora stati aggiornati per funzionare con le nuove versioni di WordPress e di &lt;a href=&#34;https://www.php.net/&#34;&gt;PHP&lt;/a&gt;, il linguaggio di programmazione per il web con il quale è sviluppato WordPress.&lt;/p&gt;&#xA;&lt;p&gt;Per correggere il problema della pagina bianca ci sono sostanzialmente due metodi: il primo richiede di disattivare i plugin uno ad uno, fino a scoprire quello che non funziona. Richiede ore ed ore di lavoro certosino e non avrebbe comunque risolto il problema dell&amp;rsquo;aggiornamento indesiderato del sito. Nonostante tutto, ho provato a disattivare i due, tre plugin più critici ma non cambiava niente.&lt;/p&gt;&#xA;&lt;p&gt;Il secondo metodo prevede di ripristinare il sito da un backup recente e, in questo caso specifico, ha l&amp;rsquo;enorme vantaggio di poter tornare alla versione precedente di WordPress. E dato che il &lt;a href=&#34;https://melabit.wordpress.com/2018/05/21/da-melabit-a-melabit-la-scelta-dell-hosting/&#34;&gt;&lt;em&gt;provider&lt;/em&gt; scelto per ospitare il sito&lt;/a&gt; fa un backup ogni ora, mi sembrava più che naturale scegliere la seconda soluzione.&lt;/p&gt;&#xA;&lt;p&gt;Ed è qui che sono cominciati i guai.&lt;/p&gt;&#xA;&lt;p&gt;Apro un &lt;em&gt;ticket&lt;/em&gt;, cioè una richiesta di supporto tecnico, presso il provider e chiedo come ripristinare il sito da un backup eseguito intorno alle 9 del mattino, ora alla quale ero sicuro di non aver fatto ancora niente. Purtroppo non posso fare da solo, l&amp;rsquo;assistenza tecnica mi avvisa che la procedura di ripristino del database di WordPress deve essere effettuata dal provider, altrimenti dà errore.&lt;/p&gt;&#xA;&lt;img src=&#34;https://melabit.files.wordpress.com/2020/01/ticket-01.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;Ovviamente li lascio fare, indicando il backup da ripristinare, il &lt;code&gt;#687&lt;/code&gt; eseguito alle 8:53, e ribadendo che volevo un ripristino totale, &lt;em&gt;pulito&lt;/em&gt;, sia del sito che del database su cui si appoggia (la conversazione qui sotto, così come tutte le conversazioni successive, vanno lette dal basso verso l&amp;rsquo;alto).&lt;/p&gt;&#xA;&lt;img src=&#34;https://melabit.files.wordpress.com/2020/01/ticket-02.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;Non funziona, anzi è peggio, i file del sito sembrano a posto, ma il database viene ripristinato solo in parte e quindi in pratica non serve a niente.&lt;/p&gt;&#xA;&lt;p&gt;Intanto mi sono fatto dare l&amp;rsquo;intero backup del sito e del database delle ore 8:53 in formato standard e in questo backup il database sembra completo. Però ogni volta che l&amp;rsquo;assistenza tecnica prova a ripristinarlo la procedura fallisce. Secondo loro perché il database è corrotto, secondo me perché la loro procedura di ripristino non funziona bene.&lt;/p&gt;&#xA;&lt;img src=&#34;https://melabit.files.wordpress.com/2020/01/ticket-03.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;Provo allora a chiedere il ripristino da un backup di un paio di giorni prima, ma non cambia niente. È già passato un giorno, il sito è ancora giù e io faccio una pessima figura con i colleghi che lo frequentano.&lt;/p&gt;&#xA;&lt;img src=&#34;https://melabit.files.wordpress.com/2020/01/ticket-04.png&#34; alt=&#34;&#34;&gt;&lt;h4 id=&#34;andare-sul-cloud&#34;&gt;Andare sul cloud&lt;/h4&gt;&#xA;&lt;p&gt;A questo punto decido di lasciar perdere l&amp;rsquo;assistenza tecnica e di fare da solo, usando il backup del sito e del database che mi sono fatto dare per ricostruire il sito da zero. Potrei usare come al solito una macchina virtuale, dove installare una versione server di Linux con tutto quello che serve per far funzionare WordPress, ma questa volta preferisco di andare sul cloud in modo da poter lavorare, se serve (e servirà molto spesso!), anche da casa.&lt;/p&gt;&#xA;&lt;p&gt;Scelgo &lt;a href=&#34;https://aws.amazon.com/cloud9/?origin=c9io&#34;&gt;AWS Cloud9&lt;/a&gt; di Amazon, funziona bene, costa poco e mi sembra più affidabile di altri servizi che ho usato in passato, come &lt;a href=&#34;https://codeanywhere.com/&#34;&gt;Codeanywhere&lt;/a&gt;, &lt;a href=&#34;https://www.koding.com/&#34;&gt;Koding&lt;/a&gt; o &lt;a href=&#34;https://pilvia.com/&#34;&gt;Pilvia&lt;/a&gt;, che cambiano continuamente modello di &lt;em&gt;business&lt;/em&gt;. Accedo al mio account e creo una nuova istanza di AWS Cloud9, dove installo la versione 18.04/Bionic LTS di Ubuntu Linux.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#xA;&lt;img src=&#34;https://melabit.files.wordpress.com/2020/01/aws-cloud9.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;Potrei scegliere anche &lt;a href=&#34;https://aws.amazon.com/amazon-linux-ami/&#34;&gt;Amazon Linux&lt;/a&gt;, una versione di Linux specifica per Amazon AWS e basata su &lt;a href=&#34;https://www.redhat.com&#34;&gt;RedHat&lt;/a&gt; e &lt;a href=&#34;https://centos.org/&#34;&gt;CentOS&lt;/a&gt;, ma preferisco andare sul sicuro, in fondo Ubuntu deriva sempre da &lt;a href=&#34;https://www.debian.org/&#34;&gt;Debian&lt;/a&gt;, e nel mondo Linux non c&amp;rsquo;è niente di meglio di Debian.&lt;/p&gt;&#xA;&lt;p&gt;Tralascio i dettagli dell&amp;rsquo;installazione di tutto quanto serve per far funzionare WordPress su Linux (ma se richiesto potrebbe essere argomento di un prossimo articolo). Il server web &lt;a href=&#34;http://httpd.apache.org&#34;&gt;Apache&lt;/a&gt;, il linguaggio di programmazione &lt;a href=&#34;https://www.php.net&#34;&gt;PHP&lt;/a&gt; e il sistema di database relazionale &lt;a href=&#34;https://mariadb.org&#34;&gt;MariaDB&lt;/a&gt;,&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; sono già installati di &lt;em&gt;default&lt;/em&gt; in Ubuntu LTS, si tratta solo di configurare opportunamente tutto per &lt;a href=&#34;https://lucidar.me/en/aws-cloud9/how-to-run-apache-on-aws-ec2-cloud9-server/&#34;&gt;girare su AWS Cloud9&lt;/a&gt; e di creare il database per WordPress. Già che ci sono, installo anche &lt;a href=&#34;https://www.phpmyadmin.net&#34;&gt;phpMyAdmin&lt;/a&gt;, un programma comodissimo che permette di gestire un database MySQL (e quindi anche MariaDB) tramite una interfaccia web.&lt;/p&gt;&#xA;&lt;p&gt;A questo punto basta scaricare il &lt;a href=&#34;https://wordpress.org/download/&#34;&gt;codice di WordPress&lt;/a&gt; ed effettuare la famosa &lt;a href=&#34;https://wordpress.org/support/article/how-to-install-wordpress/&#34;&gt;installazione in 5 minuti&lt;/a&gt; per essere a posto.&lt;/p&gt;&#xA;&lt;p&gt;Beh, magari fosse così semplice! Tutto quello che ho in questo momento è un sito funzionante ma vuoto, invece a me serve ripristinare tutto il contenuto de &lt;a href=&#34;https://ilnostrocnr.it&#34;&gt;Il nostro CNR&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Per farlo, sostituisco i file del sito e il database di WordPress con quelli contenuti nel backup fornito dal provider. Sembra difficile, ma avendo pieno accesso al terminale di Linux ed essendo l&amp;rsquo;amministratore onnipotente del sistema su cui gira WordPress diventa un gioco da ragazzi. Riavvio MariaDB ed Apache per fargli &lt;em&gt;rileggere&lt;/em&gt; i nuovi dati su cui operare, ma non funziona.&lt;/p&gt;&#xA;&lt;p&gt;Naturale, il database contiene l&amp;rsquo;indirizzo web (URL) del sito originale, &lt;code&gt;https://ilnostrcnr.it&lt;/code&gt;, ma ora sono su Amazon AWS e l&amp;rsquo;URL del sito che ho creato è completamente diverso, è qualcosa tipo &lt;code&gt;https://b0ef0914612e145f8fad9237c0dabd8a.vfs.cloud9.us-east-2.amazonaws.com&lt;/code&gt;. Non ho intenzione di combattere con i DNS o il file &lt;code&gt;hosts&lt;/code&gt;, per cui entro nel database con phpMyAdmin, seleziono la tabella &lt;code&gt;wp_options&lt;/code&gt; e sostituisco l&amp;rsquo;URL originale contenuto nei record &lt;code&gt;siteurl&lt;/code&gt; e &lt;code&gt;home&lt;/code&gt; con quelli forniti da Amazon AWS.&lt;/p&gt;&#xA;&lt;p&gt;Riavvio di nuovo MariaDB ed Apache e finalmente il sito torna a vivere. Con phpMyAdmin controllo se il database ha degli errori, e in effetti ci sono, ma niente di così grave che possa impedirne il ripristino (e del resto a me funziona tutto perfettamente).&lt;/p&gt;&#xA;&lt;p&gt;A questo punto è quasi routine, ed è anche l&amp;rsquo;occasione per dare una bella rinfrescata alle funzionalità del sito. Entro nella dashboard e rimuovo il plugin &lt;code&gt;All-in-One WP Migration&lt;/code&gt;, che usavo per fare i backup personali del sito ma che che non è compatibile con le ultime versioni di PHP 7.x, e cancello dal terminale la directory relativa. Rimuovo anche il plugin &lt;code&gt;Count per Day&lt;/code&gt;, ottimo per analizzare le statistiche di accesso al sito ma che non è aggiornato da un anno e non è stato testato con le versioni più recenti di WordPress. E dato che &lt;a href=&#34;https://wordpress.org/plugins/count-per-day/&#34;&gt;ha violato le linee guida di WordPress&lt;/a&gt; è stato pure rimosso dall&amp;rsquo;archivio (&lt;em&gt;repository&lt;/em&gt;) ufficiale dei plugin di WordPress.&lt;/p&gt;&#xA;&lt;p&gt;Controllo di nuovo il database usando sia una funzione seminascosta di WordPress&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt; che il solito phpMyAdmin ed ora è tutto a posto, dopo la rimozione dei due plugin problematici anche gli errori del database sono scomparsi.&lt;/p&gt;&#xA;&lt;h4 id=&#34;ritorno-al-provider&#34;&gt;Ritorno al provider&lt;/h4&gt;&#xA;&lt;p&gt;A questo punto mi rimane solo da fare un backup del sito e del database, che il provider potrà usare (o meglio &amp;ldquo;dovrà usare&amp;rdquo;, visto che finora non ha fatto niente di significativo) per ripristinare il sito originale.&lt;/p&gt;&#xA;&lt;img src=&#34;https://melabit.files.wordpress.com/2020/01/ticket-05.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;Ma la cosa si rivela più difficile del previsto e l&amp;rsquo;interazione fra il supporto tecnico e me sembra un dialogo fra sordi,&lt;/p&gt;&#xA;&lt;img src=&#34;https://melabit.files.wordpress.com/2020/01/ticket-06.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;che sfocia rapidamente nella incomunicabilità totale. Il sito è &lt;em&gt;giù&lt;/em&gt; da ben 11 giorni ma al servizio tecnico importa pochissimo. Inutile provare ancora a ricevere un supporto degno di questo nome.&lt;/p&gt;&#xA;&lt;img src=&#34;https://melabit.files.wordpress.com/2020/01/ticket-07.png&#34; alt=&#34;&#34;&gt;&lt;p&gt;Prima di tagliare i ponti con il servizio tecnico ho preparato un Piano B. Ore di ricerche sul web mi hanno fatto trovare &lt;a href=&#34;https://wordpress.org/plugins/duplicator&#34;&gt;Duplicator&lt;/a&gt;, un plugin che sembra perfetto per le mie esigenze. In apparenza è uno dei soliti plugin di backup/ripristino di una installazione di WordPress, che alla fine richiedono sempre l&amp;rsquo;acquisto della versione Pro per essere davvero utili. Duplicator invece è diverso, la &lt;a href=&#34;https://snapcreek.com/duplicator/&#34;&gt;versione Pro&lt;/a&gt; aggiunge delle funzioni molto interessanti per chi gestisce dei siti web per professione, ma la versione base gratuita fa tutto quello che mi serve, è solo leggermente più complicata da utilizzare.&lt;/p&gt;&#xA;&lt;p&gt;In previsione del piano B ho già provato a fondo Duplicator, usandolo per fare un backup completo del sito e per ripristinarlo in una nuova istanza di AWS Cloud9, e funziona in modo spettacolare. Mi piace soprattutto il fatto che lavori a bassissimo livello, sembra quasi di usare il terminale, che è poi quello che farei io stesso se il provider mi concedesse un accesso pieno e senza limitazioni via &lt;code&gt;ssh&lt;/code&gt; al mio sito e soprattutto al database associato.&lt;/p&gt;&#xA;&lt;p&gt;Entro quindi nel pannello di controllo del mio sito web e di tutti i tool collegati, il notissimo &lt;a href=&#34;https://en.wikipedia.org/wiki/CPanel&#34;&gt;cPanel&lt;/a&gt;, cancello tutti i file del sito e anche il database che ha creato tanti problemi, e già che ci sono aggiorno PHP alla versione 7.2, la stessa versione disponibile in AWS Cloud9. Mi tremano un po&amp;rsquo; i polsi, da ora in poi se sbaglio non posso più tornare indietro, ma ho delle alternative migliori?&lt;/p&gt;&#xA;&lt;p&gt;A differenza degli altri plugin di backup/ripristino che conosco, Duplicator non ha bisogno di una installazione preesistente di WordPress per funzionare, ma insieme al backup del sito genera un programma in &lt;code&gt;PHP&lt;/code&gt; che effettua da solo il processo di ripristino del sito e del database associato. Anche l&amp;rsquo;URL che ho modificato a mano diretatmente nel database vengono aggiornati correttamente. Bastano pochi minuti e il sito &lt;a href=&#34;https://ilnostrocnr.it&#34;&gt;torna a vivere&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;È il 2 gennaio, sono passati ben 14 giorni dal disastro.&lt;/p&gt;&#xA;&lt;h4 id=&#34;conclusioni&#34;&gt;Conclusioni&lt;/h4&gt;&#xA;&lt;p&gt;Quando dicevo all&amp;rsquo;inizio che la lettura di questo articolo non è adatta a chi si spaventa facilmente o è ansioso, stavo scherzando, ma non troppo. Questa esperienza ha davvero messo a dura prova le mie capacità tecniche, nonché la mia pazienza nell&amp;rsquo;interagire con chi dovrebbe fornire un supporto tecnico decente.&lt;/p&gt;&#xA;&lt;p&gt;Ma dopo un paio di giorni era diventata una sfida personale, una specie di esame fuori tempo massimo, &lt;em&gt;sei capace di risolvere questo problema difficile&lt;/em&gt;? E poi, naturalmente, c&amp;rsquo;era la necessità di non fare brutta figura con tanti colleghi&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;Ovvio che alla scadenza del contratto bisognerà cambiare provider, tutto sommato questo finora non è stato male, ma finché va tutto bene sono buoni tutti, le differenze si vedono solo &lt;a href=&#34;https://www.youtube.com/watch?v=lIxUKbV0UEM&#34;&gt;quando il gioco si fa duro&lt;/a&gt;. Avevo già pensato di farlo per altri motivi, ma il dover &lt;em&gt;traslocare&lt;/em&gt; il sito su un&amp;rsquo;altro spazio web mi preoccupava un po&amp;rsquo;. Ora, con l&amp;rsquo;esperienza che mi sono fatta, sarà uno scherzetto.&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;A differenza delle versioni normali di Ubuntu Linux, che vengono rilasciate ogni sei mesi, le versioni LTS, &lt;em&gt;Long Term Support&lt;/em&gt;, vengono rilasciate solo nella primavera degli anni pari e sono particolarmente indicate per un sistema server.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:2&#34;&gt;&#xA;&lt;p&gt;MariaDB è un derivato (&lt;em&gt;fork&lt;/em&gt;) del notissimo database &lt;a href=&#34;https://www.mysql.com/&#34;&gt;MySQL&lt;/a&gt;, prodotto dagli sviluppatori originali di MySQL e &lt;a href=&#34;https://mariadb.com/kb/en/mariadb-vs-mysql-compatibility/&#34;&gt;compatibile praticamente al 100%&lt;/a&gt; con la versione corrispondente di MySQL. L&amp;rsquo;origine del &lt;em&gt;fork&lt;/em&gt; sta nell&amp;rsquo;introduzione da parte di &lt;a href=&#34;https://www.oracle.com/index.html&#34;&gt;Oracle&lt;/a&gt;, che nel 2010 ha acquisito la ormai decaduta &lt;a href=&#34;https://it.wikipedia.org/wiki/Sun_Microsystems&#34;&gt;Sun Microsystems&lt;/a&gt; con tutto il suo parco software fra cui Java e proprio MySQL, di estensioni proprietarie disponibili solo per la versione a pagamento di MySQL.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:3&#34;&gt;&#xA;&lt;p&gt;Bisogna aggiungere nel file &lt;code&gt;wp-config.php&lt;/code&gt; la riga &lt;code&gt;define(&#39;WP_ALLOW_REPAIR&#39;, true);&lt;/code&gt;, andare all&amp;rsquo;URL di amministrazione &lt;code&gt;YOURSITE.com/wp-admin/maint/repair.php&lt;/code&gt; (dove &lt;code&gt;YOURSITE.com&lt;/code&gt; deve essere sostituito con l&amp;rsquo;indirizzo web del sito) e seguire le istruzioni.&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;</description>
    </item>
  </channel>
</rss>
