1

Vuoi aprire o stai per aprire uno shop on line?

8 consigli utili per evitare gli errori che potrebbero costarti caro!

 

Il boom delle vendite on line non è finito con la pandemia, ma ha determinato il cambiamento di abitudini dei consumatori. Solo nel 2021 l’aumento registrato è stato del 68%!
Molte aziende possono incrementare le loro vendite con l’apertura di un e-commerce.
Vediamo però insieme quali sono le trappole e gli errori che si nascondono dietro la non corretta valutazione del progetto.

 

1) Il più comune: affidarsi a chi si improvvisa. Andare per tentativi, tramite il cugggino, o il vicino che è bravino col computer, vi costerà in termini di tempo e danno di immagine. Avere un e-commerce che non funziona o funziona male è il modo migliore per presentarsi come venditore inaffidabile. Selezionate professionisti con esperienza nel settore.

 

2) Creare un assortimento “minestrone della valle degli orti”. Alcune persone pensano di buttare dentro il proprio e-commerce diverse categorie senza un progetto reale. Si parte ad esempio dai prodotti per bambini, passando per la bigiotteria creata dalla sorella e la compagna di banco, per finire con avanzi di magazzino di un amico che vende elettrodomestici. Scegliete con cura il settore, i prodotti e l’identità che volete dare all’azienda.

 

3) Utilizzare foto e immagini di pessima qualità. E’ un errore che compromette l’aspetto del sito e quindi rende poco gradevole la navigazione e certamente allontana la vendita. Esistono molte risorse per i siti aziendali, gratuite o a pagamento. Faranno la differenza.  Valutate anche la possibilità di contattare un grafico e un  fotografo commerciale per i prodotti.

 

4) Avere schede prodotto prive di contenuti essenziali. Qualche esempio: omettere formule INCI dei cosmetici, le misure di elementi d’arredo, le certificazioni, ingredienti e allergeni dei prodotti alimentari.  Inutile dire che l’utente che non trova le informazioni, abbandona il carrello e acquista altrove. Scrivete tutto ciò che è essenziale per presentare e vendere il prodotto.

 

5) Nascondere contatti, elementi identificativi e dati obbligatori per legge. Mi è capitato di vedere diverse volte siti che non avevano partita iva in home page o con i contatti telefonici nascosti. Prestate la massima attenzione a tutti gli aspetti legali del sito e presentatevi con la massima trasparenza.

 

6) Pensare che si possa gestire nel tempo libero. Un e-commerce richiede tempo e tutte le risorse necessarie per funzionare bene. Un’assistenza clienti adeguata, una particolare attenzione alla logistica, un aspetto grafico curato, testi di descrizione e contenuti, conoscenza, adeguamento e rispetto della normativa, marketing….Investite in formazione e affidatevi a professionisti.

 


7) Fermarsi e sedersi una volta terminato. Alcune persone sono convinte che terminata la realizzazione del sito, inseriti grafica, testi e prodotti, ci si possa fermare e attendere le vendite.   E’ l’errore di valutazione più comune che vanifica tutto il lavoro svolto. Un shop on line non va avanti da solo. E’ bene esserne consapevoli fin dall’inizio.

 

8) Alla bersagliera. Spesso si parte con l’idea del “più ce n’è meglio è”. Allora tutto dentro: blog, profili Instagram, Facebook, Twitter, Pinterest, poi Whatsapp, TelegramSe poi manca la competenza e/o il tempo per la creazione dei contenuti, è certo il risultato finale. Scegli i social e i canali di comunicazione più adatti al tuo brand e al tuo target. Se non hai le competenze contatta un social media manager.




Client LDAP CentoOS/RHEL 8

Da tempo orami CentOS, ovvero “Community ENTerprise Operating System”, è alla versione 8 in upstream mode, dunque anche RHEL “Red Hat Entrprise Linux” è alla medesima versione.

Vediamo nell’articolo come integrare un server CentOS 8 o RHEL 8 con OpenLDAP per abilitarlo ad accedervi con autenticazione centralizzata. Tra le prime cose che notiamo “sparisce” nscd in favore di SSSD.

SSSDè l’acronimo di  System Security Services Daemon  (link: https://sssd.io/), ovvero il demone dei servizi di sicurezza del sistema, un software originariamente sviluppato per il sistema operativo Linux che fornisce un set di demoni per gestire l’accesso ai servizi di directory services e ai meccanismi di autenticazione. Gli inizi di SSSD risiedono nel progetto software open-source FreeIPA (Identity, Policy and Audit).

Aggiornare il sistema tramite dnf o yum

Per prima cosa bisogna aggiornare il sistema operativo, per farlo, usare i seguenti comandi:

dnf update -y
oppure
yum update -y

Installazione SSSD su CentOS/RHEL 8

Dopo che l’aggiornamento è andato a buon fine installare SSSD e gli SSSD tools.

dnf install sssd sssd-tools -y
oppure
yum install sssd sssd-tools -y

Configurazione SSSD per autenticazione OpenLDAP su CentOS/RHEL 8

Prossimo passo è configurare SSSD per abilitare l’autenticazione OpenLDAP sul sistema locale.

SSSD non usa una sua configurazione di default, il file quindi non esisterà, crearne uno manualmente:

vim /etc/sssd/sssd.conf

Copiare il contenuto seguente nel file sssd.conf. Assicuriamoci di aver sostituito i parametri con i valori corretti del nostro ambiente.

[sssd]
services = nss, pam, sudo
config_file_version = 2
domains = default

[sudo]

[nss]

[pam]
offline_credentials_expiration = 60

[domain/default]
ldap_id_use_start_tls = True
cache_credentials = True
ldap_search_base = dc=ldap,dc=acme,dc=com
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
access_provider = ldap
sudo_provider = ldap
ldap_uri = ldap://ad.acme.com
ldap_default_bind_dn = cn=readonly,ou=system,dc=ldap,dc=acme,dc=com
ldap_default_authtok = hjsd4Rtsd
ldap_tls_reqcert = demand
ldap_tls_cacert = /etc/openldap/cacerts/ca.cert.pem
ldap_tls_cacertdir = /etc/openldap/cacerts/
ldap_search_timeout = 50
ldap_network_timeout = 60
ldap_sudo_search_base = ou=SUDOers,dc=ldap,dc=acme,dc=com
ldap_access_order = filter
ldap_access_filter = (objectClass=posixAccount)

Salvare ed uscire dal file. Nota che abbiamo anche configurato il nostro server OpenLDAP per fornire i diritti sudo come mostrato dalle configurazioni;

services = nss, pam, sudo
...

[sudo]
...

ldap_sudo_search_base = ou=SUDOers,dc=acme,dc=com

Se non usi OpenLDAP per le regole di sudo, puoi rimuovere queste configurazioni.

ldap_tls_cacert nel file sssd.conf sopra.

Ora scarica il certificato CA del server OpenLDAP e salvalo nel file specificato dalla direttiva  ldap_tls_cacert del file sssd.conf.

openssl s_client -connect ldap.acme.com:636 -showcerts < /dev/null | openssl x509 -text

copia il certificato ed incollalo nel file /etc/openldap/cacerts/ca.cert.pem.

vim /etc/openldap/cacerts/ca.cert.pem
-----BEGIN CERTIFICATE-----
MIIFxzCCA6+gAwIBAgIUV+l4aOvMCLlNQRKOpt9YfxcxA8MwDQYJKoZIhvcNAQEL
BQAwczELMAkGA1UEBhMCS0UxEDAOBgNVBAgMB05haXJvYmkxDDAKBgNVBAcMA05h
...
...
5deiMlJkrYv7wZ0prq0QO5lduGBuD9UJvRa8LBV0GEAiHZL5PJOnREHObbAH907E
eixIJpkcC4wguMaXDNqIv6WGdQtRUyIP8tdByXYJGrbRW0K/K9qEaIZhJiAES1Qy
8U96RdYBpLvDctRch1kIfvnAVffTxmObAGI9n64O89p48kocJwNI/XQNRg==
-----END CERTIFICATE-----

Ora apriamo il file /etc/openldap/ldap.conf e configuriamo le linee seguenti:

vim /etc/openldap/ldap.conf

Fondamentalmente, devi definire la posizione del certificato CA, la base di ricerca OpenLDAP, l’URI e se stai fornendo le direttive SUDO tramite OpenLDAP anche la base SUDOers.

BASE    dc=ldap,dc=acme,dc=com
URI     ldaps://ldap.acme.com:636
SUDOERS_BASE    ou=SUDOers,dc=ldap,dc=acme,dc=com
...
...
TLS_CACERT      /etc/openldap/cacerts/ca.cert.pem
...

Salva ed esci dal file di configurazione.

Configurare il Name Service Switch e PAM su CentOS/RHEL 8

Successivamente, è necessario aggiornare NSS e PAM per utilizzare SSSD per gestire le risorse di autenticazione

Nelle precedenti versioni di  CentOS potevamo usare il tool authconfig ma è stato sostituito da authselect.

Authselect è un’utilità che semplifica la configurazione dell’autenticazione dell’utente, soprattutto durante l’utilizzo dell’SSSD.

Configurare il profilo SSSD.

Il comando Authselect quando viene utilizzato per creare un profilo SSSD modificherà i seguenti file:

  • /etc/pam.d/system-auth
  • /etc/pam.d/password-auth
  • /etc/pam.d/fingerprint-auth
  • /etc/pam.d/smartcard-auth
  • /etc/pam.d/postlogin
  • /etc/nsswitch.conf

Pertanto, esegui un backup di questi file nel caso in cui le cose non funzionino. Dopo aver salvato il backup di questi file rimuovili in modo che il comando successivo li possa ricostruire.

Crea un profilo SSSD. Questo comando avrà esito positivo solo se hai rimosso i file sopra.

authselect select sssd

In caso contrario, puoi sovrascrivere i file aggiungendo l’opzione  --force.

authselect select sssd --force
Backup stored at /var/lib/authselect/backups/2022-03-23-11-52-12.yMO4TA
Profile "sssd" was selected.
The following nsswitch maps are overwritten by the profile:
- passwd
- group
- netgroup
- automount
- services

Make sure that SSSD service is configured and enabled. See SSSD documentation for more information.

Quindi, affinché il sistema possa recuperare i diritti sudo da SSSD/OpenLDAP modifica il file /etc/nsswitch.conf inserendo la riga seguente:

echo "sudoers:    files sss" >> /etc/nsswitch.conf

Configurae la creazione automatica della Home Directory

 

Per abilitare la creazione automatica della home directory al primo accesso dobbiamo installare oddjob-mkhomedir il quale fornisce il modulo pam_oddjob_mkhomedir.

dnf install oddjob-mkhomedir -y
o
yum install oddjob-mkhomedir -y

Avviare oddjobd ed inserirlo per essere avviato allo start del sistema

systemctl enable --now oddjobd

Carica il modulo pam_oddjob_mkhomedir nel file di autenticazione PAM /etc/pam.d/system-auth  per abilitare la creazione automatica della home directory.

echo "session optional pam_oddjob_mkhomedir.so skel=/etc/skel/ umask=0022" >> /etc/pam.d/system-auth

Restart oddjobd.

systemctl restart oddjobd

Running SSSD

Before you can start SSSD, you need to check configuration for any typos or permissions;

Prima di avviare SSSD verifica che la confiugrazione non abbia errori nei file o permessi sbagliati:

sssctl config-check
File ownership and permissions check failed. Expected root:root and 0600.

Come suggerisce l’output diamo l’accesso in read/write (600) al file  /etc/sssd/ al solo proprietario del file (root).

chown -R root: /etc/sssd
chmod 600 -R /etc/sssd

La configurazione è ora corretta, possiamo impostare SSSD per essere avviato al boot.

systemctl enable --now sssd

Controliamo lo stato

systemctl status sssd
● sssd.service - System Security Services Daemon
   Loaded: loaded (/usr/lib/systemd/system/sssd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2019-12-08 16:57:07 EAT; 42min ago
 Main PID: 779 (sssd)
    Tasks: 3 (limit: 5073)
   Memory: 60.6M
   CGroup: /system.slice/sssd.service
           ├─779 /usr/sbin/sssd -i --logger=files
           ├─800 /usr/libexec/sssd/sssd_be --domain implicit_files --uid 0 --gid 0 --logger=files
           └─801 /usr/libexec/sssd/sssd_nss --uid 0 --gid 0 --logger=files

Test autenticazione OpenLDAP via SSSD

Supponendo che tu abbia già creato i tuoi utenti e gruppi OpenLDAP, verifichiamo di poter accedere, prima di tutto, vediamo se  il tuo nome utente LDAP sul sistema venga riconosciuto con il comando id.

id domenico.tricarico

Dovresti ottenere una voce simile a;

uid=1002(domenico.tricarico) gid=1002(domenico.tricarico) groups=1002(sysadmin)

Se non riesci a trovare l’utente assicurati di controllare i log syslog e i log sssd. Altrimenti, puoi riavviare sssd

systemctl restart sssd

Controlla di nuovo l’utente con il comando  id.

Se tutto va bene, esegui un accesso ssh locale per testare l’autenticazione LDAP

ssh -l domenico.tricarico 127.0.0.1
oppure
ssh domenico.tricarico@127.0.0.1
The authenticity of host '127.0.0.1(::1)' can't be established.
ECDSA key fingerprint is SHA256:iMRNJQa8gU0t6fHx6nzmAU+ZygA/3J2BC6zzwzqfY4o.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '127.0.0.1' (ECDSA) to the list of known hosts.
domenico.tricarico@localhost's password: 
[domenico.tricarico@ldapserver ~]$ pwd
/home/domenico.tricarico

Verifica diritti sudo.

Innanzitutto, se hai assegnato all’utente i diritti sudo, puoi verificare eseguendo il comando seguente sul tuo server OpenLDAP:

export SUDOERS_BASE=ou=SUDOers,dc=ldap,dc=acme,dc=com
ldapsearch -b "$SUDOERS_BASE" -D cn=admin,dc=ldap,dc=acme,dc=com -W -x
...
# sudo, SUDOers, ldap.acme.com
dn: cn=sudo,ou=SUDOers,dc=ldap,dc=acme,dc=com
objectClass: top
objectClass: sudoRole
cn: sudo
sudoUser: domenico.tricarico
sudoHost: ALL
sudoRunAsUser: ALL
sudoCommand: ALL
...

Ora proviamo il sudo:

[domenico.tricarico@ldapserver ~]$ sudo su -
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for domenico.tricarico: Last login: Wed Mar 23 13:49:47 EAT 2022 from 172.16.0.15 on pts/0 [root@ldapserver ~]#



Schwa: l’inclusività passa anche attraverso l’HTML

Oggi, tra le tante richieste mi arriva un ticket per la pubblicazione di un articolo. Nel leggere il contenuto trovo il carattere Ə, ovvero lo “schwa”.

Bene. La procedura è sempre la stessa: preparazione titolo, paragrafo, HTML e… Già al titolo il primo problema: come si fa il simbolo “Ə” sulla tastiera? Non oso immaginare in HTML! Certo prima dell”HTML bisogna partire dalla tastiera, quindi dall’UNICODE.

Prima di procedere vale la pena approfondire.

Cosa è lo Schwa Ə?

Schwa: Origine e significato

La lingua italiana è il risultato di una continua trasformazione che dura da secoli, ma da qualche tempo un semplice simbolo grafico ha scatenato l’opinione pubblica, la stampa, ha acceso il dibattito tra linguisti e richiesto l’intervento dell’Accademia della Crusca.

Sto parlando dello “schwa” o scevà (italianizzato), la desinenza finale neutra che sostituisce plurali maschili per una comunicazione più inclusiva a partire dalle parole. Perché lo sappiamo, le parole sono importanti.
Per quanto riguarda la sua origine ci sono diverse teorie. I linguisti concordano che le prime tracce del suo utilizzo risalgano all’ebraico medievale. Secondo quanto riporta la Treccani, lo “schwa” è il nome di un simbolo grafico ebraico che indica l’assenza di vocale seguente o la presenza di una vocale senza qualità e quantità. Lo scevà appare anche in diversi dialetti del Centro e del Sud d’Italia, ad esempio in quelli di Napoli e Bari, e nella lingua piemontese.

Soluzioni, proposte, critiche
La lingua italiana prevede che, in caso di moltitudine mista, anche in presenza di un solo maschio, si utilizzi il maschile sovraesteso. Lo “schwa” diventa dunque un tentativo, un obiettivo, una possibilità che mira a creare un linguaggio che rappresenti anche le persone appartenenti alla comunità Lgbtq+ e che sia adeguato a descrivere una realtà socioculturale mutata nel tempo.

Alma Sabatini nelle sue “Raccomandazioni per un uso non sessista della lingua italiana”, già nel 1987 proponeva come criterio quello del genere prevalente, per poi scegliere se usare il maschile o il femminile sovraesteso.
Più recente invece l’utilizzo dell’asterisco o della chiocciola, inseriti nelle parole per definire una pluralità di persone con diversa identità sessuale. Questo uso, però, ha un limite: non ha una pronuncia nella lingua parlata. La sociolinguista Vera Gheno, specializzata in comunicazione digitale che ha collaborato per venti anni con l’Accademia della Crusca, ritiene lo schwa preferibile all’asterisco. Un esperimento, lo definisce, che ha raccolto consensi ma anche critiche: il direttore di MicroMega, Paolo Flores D’Arcais, ha definito un’“ennesima idiozia spacciata per progressista” la scelta annunciata sui social del comune di Castelfranco Emilia sull’utilizzo dello schwa (ə) al posto del maschile sovraesteso nei post istituzionali.

Ancora, la linguista Anna M. Thornton sottolinea come l’introduzione dello schwa non risolva affatto il problema dell’inclusione.
L’Accademia della Crusca ai quesiti pervenuti sui temi legati all’utilizzo dell’asterisco e dello schwa ha risposto che il genere grammaticale è una questione del tutto diversa dal genere naturale.
Ha espresso contrarietà all’uso di asterischi o di altri segni estranei all’ortografia italiana, poiché la forma non ha nulla a che vedere con la sostanza. Esplicitando: anche chi non gradisce “schwa” e asterischi si manifesta contrario al sessismo linguistico e rispettoso nei confronti delle persone che si definiscono non binarie.
L’unica certezza è che educazione linguistica e educazione emotiva devono andare di pari passo.

Come si fa lo Ə “Schwa” sulla tastiera?

Chi non ha mai lavorato con la fonetica o è la prima volta che si trova a scrivere simboli fonetici si porrà la domanda: “Come si fa lo schwa sulla tastiera?”.

E sulla tastiera dello smartphone? Si fa allo stesso modo su Microsoft Windows, su Linux, Apple, Andorid e iOS?“.

C’è uno standard internazionale? La risposta è sì, l’UNICODE.

ASCII e UNICODE

Partiamo dicendo che l’UNICODE, o Unicode Consortium, è il consorzio internazionale di aziende interessate alla interoperabilità nel trattamento informatico dei testi in lingue diverse, i custodi delle nostre lettere, dei nostri caratteri. Al 14 settembre 2021 Unicode 14.0 aggiungeva 838 caratteri, per un totale di 144.697. Queste aggiunte includono 5 nuove scritture, per un totale di 159, oltre a 37 nuovi caratteri emoji.

Prima di arrivare all’UNICODE, ovvero il sistema che “integra le lingue” che potremmo chiamare quindi l’inclusivo dell’informatica, dobbiamo dare uno sguardo all’ASCII. Tutto parte dall’ASCII (American Standard Code for Information Interchange) che fu pubblicato dall’American National Standards Institute (ANSI) nel 1968. I caratteri a disposizione dell’ASCII sono solamente 256, tutti quelli rappresentabili con solo 8 bit, ovvero 1 byte, il primo carattere è 0000 0000 e l’ultimo 1111 1111. Perché tutto quello che facciamo si traduce in BIT.

ASCII BINARY TABLE

 

 

Guardando la tabella ci rendiamo subito conto che mancano molti caratteri che ogni giorno vediamo sui nostri dispositivi, dai simboli di lingue non latine alle emoji, per questo motivo era necessario un set di caratteri comprensivo che includesse tutte le lingue. Così è arrivato Unicode nel 1991, per poter codificare più caratteri in modo standard e permettere di utilizzare più set di caratteri estesi.

Siamo quasi arrivati alla tastiera, ora bisogna “codificare” ciò che digitiamo, le due codifiche più note sono UTF-8 (Unicode Transformation Format, 8 bit) e UTF-16 (Unicode Transformation Format, 16 bit).

UTF-8 usa da 1 a 4 byte per rappresentare un carattere Unicode quindi con 1 byte, ovvero 8 bit, abbiamo a disposizione 256 combinazioni, sufficienti per rappresentare i primi 128 (cioè da 0 a 127) caratteri dell’ASCII. Nella tabella qui sopra sono indicati quelli dal binario 00000000 al binario 01111111. Quattro byte possono sembrare veramente troppi per un solo carattere, tuttavia questo è richiesto solo per i caratteri che stanno fuori dal Basic Multilingual Plane.

  • UTF-8:
    • 1 byte: ASCII standard
    • 2 byte: arabo, ebraico, la maggior parte degli script europei
    • 3 byte: BMP (Basic Multilingual Plane)
    • 4 byte: tutti i caratteri Unicode
  • UTF-16:
    • 2 byte: BMP
    • (Basic Multilingual Plane)
    • 4 byte: tutti i caratteri Unicode

Bene, ora siamo pronti per impostare le nostre tastiere in modo da scrivere anche noi lo ə. Lo schwa minuscolo ha codice U+0259 mentre il maiuscolo ha codice U+018F.

Carattere Schwa Unicode

Carattere Schwa Unicode

UNICODE TABLE

Come facciamo lo schwa con la tastiera (Microsoft,  Apple e Linux)

Lo ə su Microsoft Windows

Come creare una scorciatoia da tastiera per scrivere ə su Windows

  1. Scarica e installa il programma gratuito AutoHotkey;
  2. Durante l’installazione,  scegliere UNICODE;
  3. Conclusa l’installazione, vai sul Desktop;
  4. Clicca con il tasto destro del mouse sullo sfondo e clicca su Nuovo e, infine, seleziona AutoHotkey Script;
  5. Chiamalo come preferisci, schiaccia Invio e dopodiché clicca con il tasto destro del mouse sul nuovo file, infine dal menù a tendina clicca su Edit script;
  6. Si aprirà una finestra con alcune stringhe di testo. Non toccarle e aggiungi sotto la seguente stringa:
+!a::
Send, ə
return

Attraverso questa stringa verrà impostata una scorciatoia da tastiera per cui, premendo Shift Alt + il tasto a, apparirà lo ə.

SCHWA SU APPLE

L’utente “restuccia” di GitHub ci viene in soccorso con un pacchetto pronto, ho testato la procedura su un MacBook Air 2021 aggiornato al sistema MacOS Monterey.

Al termine della procedure potremo digitare lo schwa ə con il nuovo layout tastiera premendo i tasti option (⌥) + a, per lo schwa maiuscolo Ə, la combinazione di tasti sarà option (⌥) + shift (maiuscolo) + a.

Di seguito i passaggi, oppure puoi seguire la guida su GitHub:

  1. Scarica il layout cliccando qui;
  2. Apri il file italiano+schwa.dmg;
  3. Nella finestra che apparirà, apri “Keyboard Installer”;
  4. Trascina il file “italiano+schwa.bundle” sulla finestra di Keyboard Installer;
  5. Clicca su “Install for current user”;
  6. Riavvia il computer;
  7. Clicca sul menu Apple () > Preferenze di Sistema, poi su Tastiera, quindi sulla scheda “Sorgenti di input”;
  8. Clicca sul bottone “+”, seleziona “Italiano” nel menu a sinistra;
  9. Seleziona il layout “Italiano+schwa” e clicca su aggiungi;
  10. Una icona con la bandiera italiana apparirà nella barra dei menu, in alto a destra nello schermo. Clicca sulla bandiera per scegliere il nuovo layout.
  11. Per digitare lo schwa ə con il nuovo layout tastiera, basta premere i tasti option (⌥) + aPer lo schwa maiuscolo Ə, la combinazione di tasti è option (⌥) + shift (maiuscolo) + a.

Linux il più inlcusivo

Per scrivere lo shwa su Linux è sufficiente usare una combinazione di tasti:

ctrl shift u + 0259

questo metodo indica alla tastire di usare il carattere idenitficato con il codice UNICODE U+01DD 

oppure usare il tasto “compose”, solitamente è il tasto ALT GR + SHIFT ma potrebbe cambiare da Desktop a Dektop.
compose + e +e

Quindi nessuna installazione particolare, Linux sa,!

Come lo facciamo su Word

Se il nostro sistema operativo non ha il simobolo shwa  possiaomo andare su “inserisci” e poi il tasto “simboli” e poi su “altri simboli”

Si apre l’elenco dei simboli gestiti dal nostro software, ora non ci resta che andarlo a cercare e selezionarlo.

Una volta individuato possiamo usare gli “shortcut key” , ovvero i tasti di selezione rapida, in questo caso mentre scriviam il nostro documento possiamo scrivere 0259 e poi premere ALT+X:

0259, ALT+X

Come lo facciamo su Open Office Writer

Simile alla procedura per Microsoft Word, andiamo sul menù inserisci e clicchiamo su “carattere speciale”

Ora nella finestra di dialogo selezioniamo “Estenzioni fonetiche”, qui la ricerca sarà più veloce avendo già “scremato” per i caratteri di nostro interesse.

come lo facciamo in HTML

Schwa HTML

TOPTAL DESIGNERS HTML

Abbiamo visto come possiamo farlo con sistemi operativi e software di scrittura, non resta che comprendere come farlo con il linguaggio di markup sviluppato da Tim Berners-Lee nel 1990: l’HTML, Hypertext Markup Language, lo standard usato per strutturare i documenti del World Wide Web.

Dall’immagine qui sopra vediamo che il codice html è “ə“, un esempio di html è il seguente:

<span>ə</span>

Se invece abbiaomo la necessità di  CSS (Cascading Style Sheets,ovvero fogli di stile a cascata), usato per definire la formattazione di documenti HTML, possiamo usare il codice “\0259”, di seguito un esempio:

<!DOCTYPE html>
<html>
<style>
h2:after {
content: ' \0259';
}
</style>
<body>
<h2>Vi presenoto lo </h2>
</body>
</html>

 

Sugli smartphone

Andorid

Sui dispositivi Andorid, il metodo più veloce è quello di scaricare la tastiera Gboard, quella di Google. Una volta installata ed impostata come predefinita, seleziona come lingua “Alfabeto fonetico internazionale (IPA)” e come layout “QWERTY” in questo modo ci sarà una fila di tasti in più per i simboli fonetici fra cui lo schwa.

Non ho trovato, purtroppo, una soluzione per la famosa tastiera SwiftKey di Microsoft per Android.

Apple iOS

Su iPhone la faccenda è più complicata, partiamo copiando lo schwa, andiamo su “Impostazioni > Tastiera > Sostituzione testo > +”, a questo punto incolliamo il simbolo schwa nel campo Frase. Nel campo Abbreviazione invece inseriamo una combinazione di caratteri comoda o un tasto che non viene suato mai.

Per gli utenti iOS 15 nessuna manovra da fare, il carattere è già inserito di default.

Articolo di Domenico Tricarico e Leila Delle Case.




vmdk not found – Ripristino del descriptor file vmdk

Recreating a missing VMDK (VMware virtual machine disk descriptor file)

Cosa accade se accidentalmente viene cancellato il descrittore dei dischi virtuali di VMware? Semplicemente si rende il disco illegibile compromettendo la partenza della virtual machine.

Diamo il caso che una delle nostre VM non parta più e che riceviamo l’errore “vmdk not found “. Prima di allarmarci verifichiamo che sia presente il “disco”.
Per comodità entriamo nella directory della VM

cd /vmfs/volumes/CT500MX/VM_LBIT_TEST

Cerchiamo il tipo di controllo SCSI della virtual machine nel file .vmx

grep scsi VM_LBIT_TEST.vmx

Ora dobbiamo vedere l’esatta dimensione del file -flat:

ls -l VM_LBIT_TEST-flat.vmdk
-rw------- 1 root root 171798691840 Oct 11 12:30 VM_LBIT_TEST-flat.vmdk

Andiamo a creare un file temporaneo usando il tool vmkfstools:

vmkfstools -c 171798691840 -d thin temp.vmdk

Eliminiamo il file -flat.vmdk che ci ha creato

rm -i temp-flat.vmdk

Ed ora andiamo a rinominare il nostro Mware virtual machine disk descriptor file temp.vmdk in VM_LBIT_TEST.vmdk:

mv -i temp.vmdk VM_LBIT_TEST-flat.vmdk

Ora apriam il nostro VMDK e andiamo a sostituire i paramentri temp con il nome del nostro file -flat, nel nostro caso è VM_LBIT_TEST-flat.vmdk
Ecco come si presenta il file generato dal comando vmkfstools:

# Disk DescriptorFile
version=3
encoding="UTF-8"
CID=3bc86a12
parentCID=ffffffff
createType="vmfs"
#
# Extent description
RW 335544320 VMFS "temp.vmdk"
#
# Change Tracking File
changeTrackPath="temp-ctk.vmdk"
#
# The Disk Data Base
#DDB
#
ddb.adapterType = "lsilogic"
ddb.geometry.cylinders = "20886"
ddb.geometry.heads = "255"
ddb.geometry.sectors = "63"
ddb.longContentID = "df24793fbf5a3e5ba49813303bc86a12"
ddb.thinProvisioned = "1"
ddb.toolsInstallType = "2"
ddb.toolsVersion = "10346"
ddb.uuid = "60 00 C2 90 3f 7b d4 cb-98 bb 90 11 81 8c 3d 91"
ddb.virtualHWVersion = "14"

E questo modificato con il nome del nostro disco virtuale
# Disk DescriptorFile
version=3
encoding="UTF-8"
CID=3bc86a12
parentCID=ffffffff
createType="vmfs"
#
# Extent description
RW 335544320 VMFS "VM_LBIT_TEST.vmdk"
#
# Change Tracking File
changeTrackPath="VM_LBIT_TEST-ctk.vmdk"
#
# The Disk Data Base
#DDB
#
ddb.adapterType = "lsilogic"
ddb.geometry.cylinders = "20886"
ddb.geometry.heads = "255"
ddb.geometry.sectors = "63"
ddb.longContentID = "df24793fbf5a3e5ba49813303bc86a12"
ddb.thinProvisioned = "1"
ddb.toolsInstallType = "2"
ddb.toolsVersion = "10346"
ddb.uuid = "60 00 C2 90 3f 7b d4 cb-98 bb 90 11 81 8c 3d 91"
ddb.virtualHWVersion = "14"

Possiamo verificare che il file sia “consistente” con il seguente comando:

vmkfstools -e VM_LBIT_TEST.vmdk

Non ci reste che avviare la VM ed abbiamo finito.
Buon lavoro.




“Who Objects” bulk import in ProxMox Mail Gateway

Importare in modalità massiva una lista di indirizzi mail nella “WHO rule” di PROXMOX Mail Gateway

Credo che sia l’incubo di tutti gli amministratori di sistema trovarsi una richiesta con centinaia di indirizzi di posta da inserire in una “allow list” o “deny list” già esistente, ed è qui che la command line interface viene in nostro soccorso.

Per prima cosa dobbiamo identificare la l’identificativo numerico della rule nella quale vogliamo importare la lista di email.

pmgsh get /config/ruledb/who

pmgsh get per visualizzare le rule

pmgsh get per visualizzare le rule

Creiamo il nostro file contenente tutte le caselle di posta

vim lista.list

A questo punto è sufficiente creare un ciclo in modo da passare al comando “pmgsh create /config/ruledb/who/<rule number>/email –email <nome@dominio.tld>” la lista appena creata

cat lista.list |while read line; do pmgsh create /config/ruledb/who/33/email --email $line; done

Ciclo while per inserire i dati nella WHO RULE PROXMOX

Ciclo while per inserire i dati nella WHO RULE PROXMOX

Ora non ci resta che attendere con pazienza la fine del ciclo, al termine di quest’ultimo possiamo andare a controllare da interfaccia grafica il nostro lavoro ed essere felici per aver evitato un “data entry” allucinante!




Installare MySQL su Debian 10 e non MariaDB

MySQL e non Maria DB

Installare MySQL e non MariaDB su Debian 10.

Nel 2008 la SUN Microsystem ha acquistato MySQL AB, la società finlandese proprietaria del codice sorgente di MySQL che veniva però distribuito con la licenza GNU GPL oltre che con una licenza commerciale.  Michael “Monty” Widenius è il programmatore finlandese che ha iniziato e guidato per molti anni MySQL. Quando, all’inizio del 2008, la Sun Microsystems ha acquistato MySQL AB, Widenius si è trovato a disagio nella nuova situazione lavorativa, criticando la gestione dello sviluppo della versione 5.1 di MySQL e da vita a MariaDB, ovvero un fork della comunità del progetto MySQL.  Sebbene MariaDB funzioni bene nella maggior parte dei casi, se hai bisogno di funzionalità trovate solo in Oracle MySQL, puoi installare e utilizzare i pacchetti da un repository gestito dagli sviluppatori di MySQL.

Installando il pacchetto mysql attraverso i repository debian verrà proposto in modalità predefinita MariaDB, per questo per utilizzare Oracle MySQL è necessaria una installazione a parte.

LAMP/LEMP e la M di MySQL

MySQL è la M nello stack LAMP, un insieme di software open source comunemente usato che include anche Linux, il server Web Apache e il linguaggio di programmazione PHP.

A differenza di Apache nel LAMP nello stack LEMP troviamo il Web Server NginX.

Installazione Oracle MySQL

Per installare l’ultima versione di MySQL, aggiungeremo questo repository, installeremo il software MySQL stesso, proteggeremo l’installazione e infine verificheremo che MySQL sia in esecuzione e risponda ai comandi.

Iniziamo installando gnupg:

apt-get install gnupg

spostiamoci nella directory temporanea, scarichiamo l’ultimo pacchetto .deb di MySQL e installiamo i repositry

cd /tmp
wget https://dev.mysql.com/get/mysql-apt-config_0.8.19-1_all.deb
dpkg -i mysql-apt-config_0.8.19-1_all.deb

a questo punto avremo il seguente contenuto nel file /etc/apt/sources.list.d/mysql.list

### THIS FILE IS AUTOMATICALLY CONFIGURED ###
# You may comment out entries below, but any other modifications may be lost.
# Use command 'dpkg-reconfigure mysql-apt-config' as root for modifications.
deb http://repo.mysql.com/apt/debian/ buster mysql-apt-config
deb http://repo.mysql.com/apt/debian/ buster mysql-8.0
deb http://repo.mysql.com/apt/debian/ buster mysql-tools
#deb http://repo.mysql.com/apt/debian/ buster mysql-tools-preview
deb-src http://repo.mysql.com/apt/debian/ buster mysql-8.0

 

durante l’installazione verrà proposta una finestra di dialogo con la possibilità di personalizzare l’installazione

procediamo ora con l’aggiornamento del package manager e l’installazione del pacchetto mysql-server:

apt-get update && apt-get install mysql-server -y

Potremmo ricevere l’errore di “importazione della chiave PGP”, in questo caso non ci resta che scaricarla:

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 467B942D3A79BD29

e ora ripetere il comando per aggiornare la lista dei pacchetti tramite APT e poi l’installazione del nostro RDBMS

ultimo passo per completare l’installazione  è l’inserimento della password dell’utente root del RDBMS Oracle MySQL. Prestiamo attenzione a questa password in quanto ci servirà per la gestione amministrativa del nostro database.

 

 

Verifichiamo che il demone sia attivo:

systemctl status mysql

e ora lanciamo il comando per mettere in sicurezza la nostra installazione di MySQL

mysql_secure_installation

Si conclude l’installazione di MySQL, da questo momento in poi è possibile gestire il nostro database da command line con il seguente comando:

mysql -u root -p

Abilitiamo il demone all’avvio del sistema

systemctl enable mysql

Tutto pronto, possiamo ora inziare a creare i nostri database e i relativi utenti.




CentOS 7 YUM DB_RUNRECOVERY: Fatal error, run database recovery

Misteriosamente il comando yum smette di funzionare e riceviamo il seguente errore:

[root@00 ~]# yum upgrade
errore: rpmdb: BDB0113 Thread/process 12664/139742821894208 failed: BDB1507 Thread died in Berkeley DB library
errore: db5 errore(-30973) da dbenv->failchk: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
errore: impossibile aprire l'indice Packages utilizando db5 - (-30973)
errore: impossibile aprire il database dei pacchetti in /var/lib/rpm
CRITICAL:yum.main:

Error: rpmdb open failed

Per risolvere è sufficiente rimuovere  database RPM , eseguire il rebuild e scaricare tutta la lista dei mirrors.

Creiamo una directory temporanea dove appoggiare i file del DB, così in caso di insuccesso potremo ripristinare il database:

[root@00 ~]# mv /var/lib/rpm/__db* /tmp/

Ora lanciamo la ricostruzione:

[root@00 ~]# rpm --rebuilddb

E per finire facciamo pulizia:

[root@00 ~]# yum clean all

A questo punto possiamo provare lo yum update o upgrade per vedere se tutto è tornato nella norma.




Upgrade Zabbix 5.2 to Zabbix 5.4 Debian 10

Questa guida descrive i passaggi per eseguire l’aggiornamento di Zabbix dalla versione 5.2 alla 5.4.

Il primo step è fermare Zabbix.

# systemctl stop zabbix-server

Creiamo un backup del database e dei file della release 5.2

# mysqldump -u user_zabbix -ppassword_zabbix db_zabbix > zabbix_server.sql
# mkdir /opt/zabbix-backup/
# cp /etc/zabbix/zabbix_server.conf /opt/zabbix-backup/
# cp /etc/nginx/conf.d/zabbix.conf /opt/zabbix-backup
# cp -R /usr/share/zabbix/ /opt/zabbix-backup/
# cp -R /usr/share/doc/zabbix-* /opt/zabbix-backup/

Installiamo il repostory per la versione 5.0:

# rm -Rf /etc/apt/sources.list.d/zabbix.list
# wget https://repo.zabbix.com/zabbix/5.4/debian/pool/main/z/zabbix-release/zabbix-release_5.4-1+debian10_all.deb
# dpkg -i zabbix-release_5.2-1+debian10_all.deb
# apt-get update

Passiamo all’upgrade dei pacchetti:

# apt-get install --only-upgrade zabbix-server-mysql zabbix-frontend-php zabbix-agent -y

Per finire la configurazione di Apache, anche se potrebbe non essere necessaria:

# apt-get install zabbix-apache-conf

Abbiamo terminato, avviamo Zabbix 5.4

# systemctl start zabbix-server
# systemctl start zabbix-agent

A questo punto parte l’upgrde del DB, possiamo seguire lo stato di aggiornamento direttamente dal file di log:

tail -f /var/log/zabbix/zabbix_server.log

Nota importante, dovremo aggiornare tutti i proxy, la procedura è identica solo che il comando di upgrade è il seguente:

# apt-get install --only-upgrade zabbix-proxy-mysql zabbix-agent -y

Aggiornamento completato, nuova release in funzione!




Glusterfs Read only file system (read only)

il problema che si è presentato oggi è trovare il file system distribuito con “gluster” sul nodo 1 aveva un funzionamento anomalo: scriveva correttamente sugli altri nodi ma non riceveva le scritte dagli altri nodi, una sorta di file system read only.

Inutile riavviare glusterd ed eseguire il umount/moun del device.

Per ripristinare la scrittura il primo passo è “uccidere” i processi di brick, individuiamo eventuali processi con il comando “ps -ef” e passiamo i “PID” al “kill”:

ps -ef|grep brick
kill -9 PID

Il secondo passaggio è resettare il “quorum-type” del device:

gluster volume reset <device> quorum-type

A questo punto glusterd è tornato “attivo” e la distribuzione dei dati è nuovamente “on line”. Accertiamoci che tutti i brick siano connessi:

gluster peer status
gluster volume info all

Procedura completata!




Upgrade Zabbix 5.0 to Zabbix 5.2 Debian 10

Questa guida descrive i passaggi per eseguire l’aggiornamento di Zabbix dalla versione 5.0 alla 5.2.

Il primo step è fermare Zabbix.

# systemctl stop zabbix-server

Creiamo un backup del database e dei file della release 5.0

# mysqldump -u user_zabbix -ppassword_zabbix db_zabbix > zabbix_server.sql
# mkdir /opt/zabbix-backup/
# cp /etc/zabbix/zabbix_server.conf /opt/zabbix-backup/
# cp /etc/nginx/conf.d/zabbix.conf /opt/zabbix-backup
# cp -R /usr/share/zabbix/ /opt/zabbix-backup/
# cp -R /usr/share/doc/zabbix-* /opt/zabbix-backup/

Installiamo il repostory per la versione 5.0:

# rm -Rf /etc/apt/sources.list.d/zabbix.list
# wget https://repo.zabbix.com/zabbix/5.2/debian/pool/main/z/zabbix-release/zabbix-release_5.2-1+debian10_all.deb
# dpkg -i zabbix-release_5.2-1+debian10_all.deb
# apt-get update

Passiamo all’upgrade dei pacchetti:

# apt-get install --only-upgrade zabbix-server-mysql zabbix-frontend-php zabbix-agent -y

Per finire la configurazione di Apache, anche se potrebbe non essere necessaria:

# apt-get install zabbix-apache-conf

Abbiamo terminato, avviamo Zabbix 5.2

# systemctl start zabbix-server
# systemctl start zabbix-agent

A questo punto parte l’upgrde del DB, possiamo seguire lo stato di aggiornamento direttamente dal file di log:

tail -f /var/log/zabbix/zabbix_server.log

Nota importante, dovremo aggiornare tutti i proxy, la procedura è identica solo che il comando di upgrade è il seguente:

# apt-get install --only-upgrade zabbix-proxy-mysql zabbix-agent -y

Aggiornamento completato, nuova release in funzione!