Come correggere l’errore 1136 di MySQL

Se mentre state cercando di aggiornare MySQL vi dovesse comparire questo errore:

mysql_upgrade: [ERROR] 1136: Column count doesn't match value count at row 1

Direi che la soluzione più veloce è modificare questo file:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

E dopo la riga [mysqld] aggiungete la voce:

skip-grant-tables

Salvate ed eseguite l’upgrade forzato:

sudo mysql_upgrade -uroot -p --force

Inserite la password e aspettate che si aggiorni! Poi riprovate ad eseguire un sudo apt upgrade e vedrete che non dovrebbe più l’errore!

Nel caso non riusciate a loggarvi con l’account root reimpostatela seguendo questa guida.
Una volta aggiornato, togliete la riga da quel file (e nel caso non sia in quel path, cercate quello corretto del processo mysqld che potrebbe essere nella cartella precedente a quella da me indicata).

Cosa sono gli errori soft 404

Qualche anno fa avevo fatto un articolo su come rimuovere i soft 404 da Google ma senza specificare come mai apparissero e di come sia possibile che Google interpreti male gli url (ovvio, non è una persona).

Sembra che l’URL inviato restituisca un errore soft 404

Secondo la documentazione di Google che potete trovare qui, sono errori fittizi, cioè che non sono veramente dei 404 come risultato dal server ma bensì pagine che non sembrano riportare a una pagina web con contenuto reale. Sono ovviamente da correggere nel sito webmaster di Google, però non sono gravi quanto dei veri e propri errori 404.

Come creare una pendrive bootable con macOS

Qualche anno fa avevo scritto una guida veloce in cui spiegavo come rendere una pendrive bootable con El Capitan. Per fortuna oggi esistono software come Etcher che semplificano la vita e permettono di creare delle pendrive bootabili in modo molto user friendly.

Apple però d’altro canto permette di scaricare i sistemi operativi tramite l’App Store e non da accesso alle iso come fa Microsoft, bisogna quindi o usare il terminale come la guida sopra, oppure usare software come Disk Creator.

Il funzionamento è molto semplice, scaricate il sistema operativo da App Store (Mojave è l’ultima versione), inserite una pendrive vuota e in automatico vi selezionerà l’installer corretto. Cliccate su Create Installer e attendete. Voilà!

Come verificare velocità di connessione di una GPU su Mac

Dopo aver visto come controllare la velocità di una GPU, interna o esterna (qua potete trovare le migliori eGPU su Amazon) che sia, su Windows. Ecco a voi il software che giunge in nostro aiuto per calcolare la velocità di connessione (lettura e scrittura) su macOS.

CL!ng, detto anche CLING è disponibile su App Store.

Similmente come AIDA64, anche questa utility vi darà preziose informazioni riguardanti la vostra scheda video e non solo. Comoda se volete testare i vostri dispositivi Thunderbolt 3 in quanto da sistema non si può capire l’effettiva velocità di connessione.

Come verificare velocità di connessione di una GPU su Windows

I miei titoli come al solito sembrano molto generici o troppo specifici, però hey, da qualche parte dovrò pur iniziare.

Sia se avete una GPU interna, quindi una iGPU, sia se ne avete una esterna (quindi una eGPU) connessa in Thunderbolt 3, per verificare la velocità di connessione che avete, quindi misurata in MB/s, non è così immediato.
Se la volete acquistare, ecco qui le migliori su Amazon.

In nostro supporto arriva AIDA64, un fantastico tools per fare benchmark di questo genere.

Come potete vedere c’è una differenza abbastanza considerevole tra un cavo Thunderbolt 3 a 20gbps in fase di lettura (la scrittura non è abilitata se avete la trial version):

E uno a 40gbps:

Come potete notare fornisce anche tante altre informazioni inerenti alla vostra scheda video e al tipo di connessione. Fa anche dei benchmark, calcolando precisione singola, doppia, AES-256, SHA-1 Hash e altro.

Come installare Arch Linux

Prima di tutto scaricate l’iso e create una pendrive bootabile o nel caso di una macchina virtuale, semplicemente trascinate il file durante la creazione (nel caso non ci sia Arch selezionate Linux Kernel 4 a 64bit).

Appena l’iso fa il boot, selezionate Boot Arch Linux (x86_64) dall’elenco per selezionare la versione a 64 bit.

Una volta dentro, provate a vedere se internet funziona facendo un semplice:

ping 1.1.1.1

Iniziamo con i primi check, eseguite:

fsdisk -l

E controllate d’avere il /dev/sda disponibile con almeno 20 GB.
Ora formattiamo con:

cfdisk

Selezionate dos dall’elenco e poi selezionate il Free space che vedete. Scrivete 10G e poi cliccate su [primary].

Successivamente su [bootable] e poi su [write]. Scrivete a parole yes per confermare.

Effettuate la stessa operazione per altre 2 volte ma con 2G e il restante (quindi teoricamente 8G se ne avete dedicati almeno 20) per la seconda.

Ora formattiamo le tre partizioni con:

mkfs.ext4 /dev/sda1
mkfs.ext4 /dev/sda3
mkswap /dev/sda2

Attiviamo lo swap per la seconda:

swapon /dev/sda2

Montiamo la prima partizione:

mount /dev/sda1 /mnt
mkdir /mnt/home
mount /dev/sda3 /mnt/home

E iniziamo con l’installazione:

pacstrap /mnt base base-devel

Appena ha finito, eseguite questo (serve per il mounting automatico):

genfstab /mnt>> /mnt/etc/fstab

Ora configuriamo il locale (spostandoci nel percorso di installazione):

arch-chroot /mnt /bin/bash
nano /etc/locale.gen

E togliete il commento alla riga:

en_US.UTF-8 UTF-8

Salvate con il classico CTRL+X, Y. Ed eseguite:

locale-gen

Poi modifichiamo la lingua con:

nano /etc/locale.conf

Ed incollate:

LANG=en_US.UTF-8

Sincronizziamo le modifiche con:

ls /usr/share/zoneinfo

E selezionate la vostra zona, ad esempio:

ln –s /usr/share/zoneinfo/Europe/Rome /etc/localtime

Modifichiamo l’ora con:

hwclock --systohc --utc

Ora modifichiamo la password con il classico:

passwd

Se volete, modificate l’hostname con:

nano /etc/hostname

Apportate le modifiche salvando. Ora abilitiamo il DHCP con:

systemctl enable dhcpcd

Adesso installiamo il grub (ci permetterà di scegliere il sistema operativo all’avvio):

pacman –S grub os-prober

Premete yes ed eseguite:

grub-install /dev/sda

Poi configuratelo con:

grub-mkconfig –o /boot/grub/grub.cfg

Ora uscite e riavviate:

exit
reboot

Non è stato difficile, veeero? BTW I don’t use Arch.

Come installare Boot Camp su USB

Normalmente Boot Camp Assistant vi fa installare Windows 10 su una partizione del vostro hard disk o SSD. Ma se questo non fosse abbastanza capiente per mantenere entrambi i sistemi operativi?

O se voleste installarlo su un hard disk, pendrive o SSD esterno tramite USB? Beh, ecco a voi una bella guida, facile e veloce, per installare Windows 10 su USB.

Prima di tutto installate Windows 10 su una macchina virtuale, ho scritto una guida per farlo con WMware Fusion.

Poi formattate il vostro supporto (SSD o pendrive che sia) in Mac OS Extended (Jurnaled) e selezionate GUID Partition Map.

Continua a leggere

Come utilizzare l’app News di Apple su tutti i Mac

Quindi anche se non siete in America, in UK o in Australia.

I passaggi sono davvero veloci e non ci va nulla. Andiamo subito al dunque, aprite le impostazioni e cliccate su Language & Region:

Cliccate su Region e cambiatela in Americas, poi selezionate United States:

Confermate e riavviate il Mac:

Cliccate su Restart Now

Una volta riavviato andate nella cartella Applicazioni e troverete finalmente l’app News di Apple:

Apple News su macOS Mojave

Come modificare qualsiasi pagina web con JavaScript

Ovviamente si intende solo in locale e solo da un browser supportato (Chrome o Firefox).

Mi spiego meglio: se volete modificare visivamente una pagina web, magari cambiando o aggiungendo delle scritte, vi basterà visitarla caricando tutti i suoi contenuti e successivamente eseguire nella barra di navigazione questi 3 comandi, semplicemente incollandolo:

javascript:document.body.contentEditable = 'true'; document.designMode='on'; void 0

Un modo più veloce è anche salvare questi comandi come preferito, così da averlo sempre a portata di mano.
Ovviamente dovrete prima salvare un preferito qualunque e poi incollare questo come campo degli indirizzi… e voilà, comodo e veloce.

Come installare Windows 10 su Mac con VMware

VMware è un software che spesso consiglio quando si tratta di virtualizzare dei sistemi operativi in quanto è molto stabile, veloce e intuitivo. Ogni anno viene aggiornato e quest’anno siamo arrivati alla versione 11 con addirittura il supporto a DirectX 10.1!

Potete scaricarlo direttamente da qua (vi metto il link perché spesso può essere confuso dove trovare la versione trial): http://vmware.com/go/getfusion

Dato che vogliamo installare Windows 10 (e non con Boot Camp), ovviamente dovete prima scaricare l’iso.

Una volta che avete sia installato VMware che l’iso di Windows 10 pronta, create una nuova macchina virtuale.

Trascinate l’iso su questa finestra

Continua a leggere

Come mandare una mail se un host è irraggiungibile

E per raggiungibile si intende che non risponde al ping. Quindi vediamo subito come fare:

sudo nano script.sh

Incollate dentro qualcosa di simile:

#!/bin/sh

ip='192.168.1.1'

if ! ping -c1 -w3 $ip; then
	echo "Non pinga" | mail -s "Non pinga" destinatario@hostname.com
fi

Questo invierà una mail nel caso l’host in questione (che ha come IP 192.168.1.1) non risponda al ping.

Se volete farlo eseguire ogni 5 minuti, quindi nel caso vi serva che vi avvisi non appena l’host non risponde, vi basterà configurarlo con crontab:

sudo crontab -e

E incollate:

*/5 * * * * sudo /home/script.sh > /dev/null

Ah ovviamente date i permessi di esecuzione con sudo chmod 777 script.sh.

Come importare grandi database MySQL con BigDump

Per importare grandi dump di database, esiste oramai da qualche anno (e devo anche dire che non è più stato aggiornato) una bella utility chiamata BigDump.

È molto semplice e vi basterà caricare questo file: https://raw.githubusercontent.com/marcotini/bigdump/master/bigdump.php nella directory in cui avete PHP funzionante.

Ovviamente dovrete fare spazio per il vostro database e/o tabelle che avete da importare (se queste non sono già contenute nel file di dump).

Per il resto l’utility è molto intuitiva e spesso potrebbe bloccarsi, quindi fate prima un backup di tutto (se avete già tabelle inserite).

Come controllare se una colonna di MySQL è codificata in UTF8

Similmente come visto per le tabelle, sarà necessario controllare che:

SELECT character_set_name FROM information_schema.`COLUMNS` C WHERE table_schema = "dbname" AND table_name = "tablename" AND column_name = "column_name";

Dia come risultato utf8 o utf8mb4.

Se così non fosse, vi basterà eseguire questa query per convertirla in utf8 o utf8mb4:

ALTER TABLE tablename CHANGE columnname columnname VARCHAR(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Come controllare se una tabella di MySQL è codificata in UTF8

Molto semplicemente eseguendo (cambiando ovviamente dbname e tablename) questa query potete capire la codifica:

select c.character_set_name
from information_schema.tables as t,
     information_schema.collation_character_set_applicability as c
where c.collation_name = t.table_collation
  and t.table_schema = "dbname"
  and t.table_name = "tablename";

Tabella in utf8

Se vi rendete conto che non è in utf8, vi basta eseguire (prima fate un backup):

ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Altrimenti se la volete in utf8mb4:

ALTER TABLE tablename CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER DATABASE databasename CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Altri suggerimenti su come fare conversioni potete trovarne qui, oppure qui.

Come convertire un database di MySQL da utf8 a utf8mb4

Se avete finalmente reso compatibile il vostro database a utf8mb4 e lo avete anche configurato correttamente, che ne dite di convertirlo anche? Comprese le tabelle e colonne?

Ovviamente prima fatevi un bel backup di tutto quanto… ora andiamo alla conversione!

Per ogni database (cambiate dbname):

ALTER DATABASE dbname CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

Per ogni tabella (cambiate tablename):

ALTER TABLE tablename CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Per ogni colonna (cambiate nome e grandezza delle colonne):

ALTER TABLE tablename CHANGE column_name column_name VARCHAR(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Voilà, ora dovreste essere fully compatible con utf8mb4.

Come configurare MySQL con utf8 o utf8mb4 correttamente

Se utilizzate un database a utf8mb4 (come vi ho spiegato qui) ma nel client, come ad esempio PhpStorm o altri servizi simili, non vi funziona correttamente la codifica dei caratteri… probabilmente è perché la versione in locale che viene scaricata per gestire tutti gli schemes non è correttamente funzionante.

Potete verificarlo facendo:

show variables like "%collation%";
show variables like '%character%';

Oppure con:

SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';

Database configurato correttamente a utf8mb4

E se per caso character_set_database o collation_database non risulta utf8, eseguite (modificando il dbname):

ALTER DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;

Se invece volete utf8mb4 come vi avevo indicato nella guida precedente, vi basterà eseguire:

ALTER DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Ora rieseguendo la query precedente dovreste avere tutto correttamente configurato.

Come rendere MySQL compatibile con utf8mb4

Di default MySQL supporta utf8 solo a 3 byte, in realtà per avere massima compatibilità con tutte le tipologie di caratteri (quali ad esempio emojis e altri caratteri non latini) bisogna utilizzare utf8mb4 invece di utf8 normale.

E per farlo dovete semplicemente incollare queste righe all’interno del file di configurazione, che potete trovare qui:

sudo nano /etc/mysql/mysql.cnf oppure dentro /etc/my.cnf.

Al fondo inserite:

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

Poi riavviate il servizio semplicemente con sudo service mysql restart.

Come esportare un db in latin 1 ed importare in utf8 su MySQL

Come spiegato anche in questa guida su come convertire un database da latin 1 a utf8, le chance di successo non sono granché e dipende molto dalla tipologia di database, dalla complessità (quindi anche dal sistema che state utilizzando) e dalla mole di dati che avete da convertire.

Un’altra tecnica può essere quella di esportare il db e di reimportarlo con una codifica diversa. Vediamo come fare…

Come al solito ho supposto che il database si chiami dbname, l’utente con permessi si chiami root e che abbia come password password. I quattro comandi da eseguire sono i seguenti (tutti eseguiti come amministratore):

sudo su

mysqldump --user=root --password=password --default-character-set=latin1 --skip-set-charset dbname > dump.sql

sed -r 's/latin1/utf8/g' dump.sql > dump_utf.sql

mysql --user=root --password=password --execute="DROP DATABASE dbname; CREATE DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;"

mysql --user=root --password=password --default-character-set=utf8 dbname < dump_utf.sql

Mi ripeto nel dirvi che la probabilità che questo funzioni non è altissima ma dipende sempre da caso a caso, voi effettuate comunque un backup di tutto.