? #howto – Installazione e configurazione di MongoDB su Centos 7

MongoDB è un database non relazionale, basato su documenti. La sua struttura lo colloca nella classifica dei database NoSQL.

In questa guida vediamo come installarlo su Centos 7.

Preparazione repository

Per prima cosa aggiungiamo la repository ufficiale, in modo da ottenere una versione aggiornata.

Creiamo il file mongodb-org.repo in locazione /etc/yum.repos.d/ col nostro editor preferito:

sudo nano /etc/yum.repos.d/mongodb-org.repo

col seguente contenuto:

[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

infine salviamo il file.

Installazione

Procediamo all’installazione come con qualunque altro pacchetto, via package-manager yum:

sudo yum install mongodb-org

in questo modo verranno installati i seguenti pacchetti:

  • mongodb-org-server
  • mongodb-org-mongos
  • mongodb-org-shell
  • mongodb-org-tools

Una volta installato avviamo il servizio con systemctl:

sudo systemctl start mongod

Inizialmente mongodb rimarrà in ascolto sulla porta 27017, possiamo esserne sicuri digitando:

sudo tail /var/log/mongodb/mongod.log

subito dopo aver avviato il processo con systemctl, in questo modo otteniamo un output simile:

[initandlisten] waiting for connections on port 27017

In questo momento mongodb è installato e pronto all’uso.

Configurazione

Possiamo modificare le impostazioni di mongodb dal file in locazione /etc/mongod.conf.

Normalmente la configurazione base è ottima per qualunque scopo generale, ciò che consiglio è di attivare la sezione security, eliminandone il commento:

security:
  authorization: enabled

in questo modo entrerà in gioco il sistema di gestione dei ruoli, senza questo qualunque utente potrà accedere ai vostri database senza necessità di permessi speciali.

Una volta modificata la configurazione, riavviamo semplicemente:

sudo systemctl restart mongod

 

Per dubbi e chiarimenti, utilizzate il nostro gruppo Telegram.

Good *nix _Mirko

 

? #howto – Cifrare file e cartelle con CryFS e ECryptFS

In questa guida vediamo due metodi per tenere al sicuro i nostri file, nello specifico CryFS e ecryptfs.

Personalmente, consiglio il primo metodo poiché permette l’interazione con i servizi cloud (come Dropbox), tuttavia se volete sapere ad esempio come cifrare la vostra intera home con il secondo metodo, su github trovate una sezione nella mia guida di installazione di Archlinux (dovrebbe valere anche per altre distro).

Consiglio di fare le prime prove con dati di poco rilievo per evitare di comprometterne il contenuto.

ecryptFS

Iniziamo con ecryptfs e supponiamo di dover cifrare la cartella /percorso/SegretiDiStato.

Installiamo dunque i pacchetti necessari dal package manager di sistema:

# Debian/Ubuntu e derivate
sudo apt install ecryptfs-utils keyutils rsync lsof

# RHEL/Centos e derivate
sudo yum install ecryptfs-utils keyutils rsync lsof

# Fedora e derivate
sudo dnf install ecryptfs-utils keyutils rsync lsof

Procediamo con l’abilitazione del modulo con modprobe:

sudo modprobe ecryptfs

rendiamo privata la nostra cartella di interesse:

chmod 700 /percorso

e procediamo con ecryptfs:

sudo mount -t ecryptfs /percorso /percorso

questo comando servirà anche a decifrare la cartella ogni qual volta vorrete usarla.

Per cifrare e rendere quindi inaccessibile la locazione, digitiamo:

sudo umount /percorso

Possiamo rendere più semplice l’operazione prendendo l’ultima riga del file /etc/mtab:

tail -1 /etc/mtab

copiamo tutte le opzioni che terminano per ecryptfs (tranne ecryptfs_sig) e creiamo il seguente script:

sudo mount -t ecryptfs /percorso /percorso -o <tutte le opzioni separate da ,>

dopo di ché usate questo script per montare la cartella!

CryFS

Procediamo con l’installazione di cryfs:

# Debian/Ubuntu e derivate
sudo apt install cryfs

# RHEL/Centos e derivate
sudo yum install cryfs

# Fedora e derivate
sudo dnf install cryfs

Facciamo chiarezza ad alcune definizioni prima di procedere:

  • mountpoint è dove scriverete e leggerete i vostri file
  • basepoint è dove cryfs salverà le informazioni riguardanti i dati e la cifratura.

Supponendo sempre di dover cifrare /percorso, creiamo un’altra locazione da usare come basepoint (consiglio di crearla nascosta)

mkdir .SDSb 

Possiamo comunque avviare Cryfs senza creare il percorso in anticipo, la creerà lo strumento stesso.

procediamo con:

cryfs cartellabase cartellamount

e nel nostro caso specifico:

cryfs /percorso

ci verrà chiesto se vogliamo le impostazioni di default e quale password vogliamo. Tra le opzioni disponibili ci sono metodo di cifratura, a quanti bit e altro.

Possiamo smontare la locazione con:

cryfs-umount /percorso

Se utilizzate cryfs in combinazione a dropbox, ricordate di inserire dentro la cartella del cloud la directory base e non quella di mount!

cryfs Dropbox/.cartellabase Altropercorso/cartellaMount

così facendo eviterete inutili problematiche di sincronizzazione continua.

Esistono comunque dei tool grafici (come vault di plasma) che consentono di usare questi tool senza doversi appoggiare al terminale, ma conoscere come funzionano e come configurare questi tool vi renderà possibile correggere eventuali errori delle GUI.

? #howto – Gesture meravigliose e come crearle

Invidiabili le gesture di MacOS?
Vediamo come ottenere la stessa esperienza sulla nostra distribuzione Linux preferita!

In ambienti Linux possiamo trovare (nel bene e nel male) degli strumenti per la configurazione delle gesture del nostro touchpad. Nel particolare quello di cui vi vorrei parlare oggi è libinput-gestures, usato oltretutto da GNOME nella sua configurazione base (anche su Wayland).

Installazione

Per prima cosa installiamo libinput e libinput-gestures:

# Debian/Ubuntu e derivate
sudo apt install libinput libinput-gestures

# Fedora e derivate
sudo dnf install libinput libinput-gestures

è inoltre consigliata l’installazione di wmctrl e xdotool:

# Debian/Ubuntu e derivate
sudo apt install wmctrl xdotool

# Fedora e derivate
sudo dnf install wmctrl xdotool

Preparazione

Prima di procedere con la pratica, vediamo quali sono i risultati che vogliamo ottenere, condivido quelle che sono le mie intenzioni ed i risultati che ho ottenuto:

  • swipe alto con 4 dita: nascondi desktop
  • swipe basso con 4 dita: nascondi desktop
  • swite a sinistra con 4 dita: prossimo desktop 
  • swite a destra con 4 dita: desktop precedente
  • swipe in alto con 3 dita: mostra i desktop
  • swite in basso con 3 dita: mostra le finestre aperte in questo desktop
  • swite a sinistra con 3 dita: prossimo desktop 
  • swite a destra con 3 dita: desktop precedente
  • pinch verso l’esterno con due dita: ingrandisci il desktop
  • pinch verso l’interno con due dita: rimpicciolisci il desktop

Da tenere in considerazione che le vostre possibilità sono altamente influenzate dal DE che userete. Infatti con xfce4 ad esempio non vi è modo di presentare i desktop, e per presentare le finestre avrete bisogno di altri tool come skippy-xd.

Quindi scegliete in base alle possibilità offerte dal vostro DE.

Configurazione

Procediamo con la creazione (o modifica) del file:

$(HOME)/.config/libinput-gestures.conf

associando ad ogni azione un comando, nel seguente formato:

<azione touchpad> <comando>

Il mio file di configurazione, in base alle intenzioni precedentemente citate, è il seguente:

gesture swipe up 4 wmctrl -k on
gesture swipe down 4 wmctrl -k off
gesture swipe left 4 xdotool key ctrl+alt+n
gesture swipe right 4 xdotool key ctrl+alt+p

gesture swipe up 3 xdotool key super+w
gesture swipe down 3 xdotool key super+s
gesture swipe left 3 xdotool key ctrl+alt+n
gesture swipe right 3 xdotool key ctrl+alt+p


gesture pinch out 2 xdotool key super+shift+p
gesture pinch in 2 xdotool key super+shift+m

possiamo trovare maggiori informazioni e combinazioni dal file fornito di base al percorso:

/etc/libinput-gestures.conf

Nell’esempio qui sopra di configurazione, il comando xdotool key, consente sotto Xorg di inviare una determinata combinazione di tasti, come se li aveste realmente premuti, è importante quindi impostare delle shortcut nel caso in cui voleste sfruttare questa configurazione.

Concludo questa guida con alcune considerazioni:

  • Prima di tutto:
    libinput-gestures va avviato con il sistema. quindi scrivetevi un file .desktop ( o usate le impostazioni di avvio del vostro DE) richiamando lininput-gestures come comando.
  • non è purtroppo possibile con xorg e libinput in coppia variare le impostazioni in base all’accelerazione (ad esempio “pizzicare” maggiormente per ingrandire), esistono comunque altri gestures-manager come “fusuma” che permettono di farlo.
  • per capire se funziona o no libinput, potete usare libinput-debug-events e libinput-debug-gui, il loro utilizzo è abbastanza semplice.
  • consiglio inoltre ad ogni riavvio da sospensione o ibernazione di digitare libinput-gestures-setup restart per riavviare il servizio, poichè è normale che smetta di funzionare.

 

? #howto – Installazione e uso di gtop

In questa guida vediamo come installare gtop oltre che ad una breve introduzione a questo sistema di monitoraggio basato su NodeJS.

Installazione di NodeJS

Inanzitutto è essenziale installare NodeJS per il funzionamento di gtop.
Abbiamo scritto una guida semplificata in merito a cui vi rimando qui.

Installazione

L’installazione è semplice grazie all’utilizzo di npm, il package manager affiancato a NodeJS, procediamo quindi all’installazione in questo modo:

npm install gtop -g

Utilizzo

Una volta installato, possiamo banalmente avviarlo da comando:

gtop

a questo punto dovremmo ricevere un output simile al seguente:

gtop

Vediamo ora qualche opzione interessante per sfruttare al meglio questa dashboard, digitando:

  • p filtriamo i processi dal loro ID
  • c filtriamo per uso della CPU
  • m per memoria usata

digitiamo infine q per uscire dal programma.

 

☕ #pausacaffé – La nave del 32 bit sta per affondare! Riflessioni, storia e analisi (parte 2)

L’articolo che segue rappresenta la seconda parte della #pausacaffè presente qui.
Settimana prossima seguirà l’articolo finale.

Introduzione

Ci si tiene a sottolineare che la maggior parte delle analisi deriva da un flusso logico personale maturato attraverso gli studi effettuati e attraverso l’esperienza, nessun opinione vuole quindi essere presa in modo oggettivo, assolutamente per vera o inequivocabilmente così.
Buona lettura.

Spero che, chi di voi abbia letto l’articolo settimana scorsa, abbia maturato una propria opinione (che sottolineo, non deve essere in linea con la mia, ognuno deve essere libero di pensare ciò che vuole o ciò che gli conviene) perché oggi invece vi esporrò la mia.

Parte 2

È normale che lo sviluppo di software commerciale a 64 bit non potesse iniziare 30 anni fa, da un punto di vista del rapporto guadagno/lavoro era sconveniente, e non si sapeva quanti vantaggi poteva davvero portare l’adozione di questa architettura, ne quando si sarebbero visti questi vantaggi.

Quindi parliamo degli anni che vanno dal 2003 ( ovvero quando uscirono i primi athlon64 ed apple introdusse i primi 64 bit basati su architettura powerpc di ibm) in poi. Al tempo tuttavia i sistemi operativi non erano pronti a questa innovazione e visto che anche windows XP due anni prima sviluppò un sistema di compatibilità che permetteva di avviare applicativi a 32 bit, si decise quindi che la strada da percorrere fino a stabilità fosse quella di sfruttare la retrocompatibilità.

Il mio pensiero

Ecco ora che introduco il mio pensiero: questo fu il più grande accomodamento dei grossi sederoni da programmatori.

Infatti anche volendo aggiungere altri sei anni per la diffusione dei sistemi operativi compatibili ( nel 2009 usciva windows 7 64 bit pienamente stabile) nei 10 anni successivi lo sviluppo di software con la nuova architettura pur avendo subito un accelerazione non ha sostituito lo sviluppo dei 32 bit. Ancora oggi vi sono team  che ci sviluppano, questo è giustificato spesso dallo svantaggio che provocano i puntatori a 64 bit, che occupano più spazio e saturano prima la cache (problemi che possono essere facilmente aggirati sfruttando più tipi di base rispetto a puntatori).

Prelevare un vantaggio significativo dalla nuova architettura richiede un maggiore sforzo di sviluppo e sicuramente una manutenzione più difficile del software che diventa anche meno modulare. 

La mia opinione è quindi che la comodità dovuta alla retrocompatibilità dei processori abbia reso l’abbandono del 32 bit una realtà che ancora oggi non si è verificata, anche causa di una grande mole di librerie e programmi attualmente molto usati e mai aggiornati alle versioni a 64 bit.

Non solo: parte della colpa deriva sicuramente da due tipologie di utenti: quelli che ancora oggi sperano di riesumare ed utilizzare vecchi calcolatori precedenti a questa tecnologia ( o comunque nati in un periodo in cui non era diffusa su tutti i pc) e quelli che ciechi di fronte al fatto che il loro computer è estremamente ottimizzato a girare software con nuova architettura sono troppo attaccati a quei software ancora non aggiornati e alle giustificazioni di chi li produce. Questi utenti hanno incoraggiato giocoforza la resistenza sul mercato di queste vecchie tecnologie.

Oggi però, finalmente, il 32 bit sta affondando. Tanti sono i casi dell’abbandono dei relativi progetti, che richiedevano sforzi e risorse inutili da parte di chi li manteneva (tempo tolto all’incremento delle performance o delle features di nuovi prodotti). Mi chiedo però quando si arriverà ad uno stacco completo senza essere intralciati da aziende e utenti nostalgici che promuovono giochi e software che per necessitano ancora delle vecchie librerie…

Nel prossimo, e ultimo, articolo vi introdurrò in maniera più tecnica degli esempi con tempi di esecuzione di codici c, asm a 32 e asm a 64 che dovrebbero chiarire quali sono i pro e i contro di sviluppare con una o l’altra architettura

? #howto – Montare un file system remoto con sshfs

Sono molti i casi che vedono la necessità, di dover accedere a percorsi remoti da un’altra postazione. Con sshfs possiamo “collegare” una posizione remota da un server/pc ad un altro.

Installazione

Per prima cosa installiamo il pacchetto sshfs (in alcune distribuzioni viene fornito con l’installazione di sistema), di norma questo è presente nelle repository di sistema:

# Debian/Ubuntu e derivate
sudo apt install sshfs

# RHEL/Centos e derivate
sudo yum install sshfs

# Fedora e derivate
sudo dnf install sshfs

# Arch linux e derivate
sudo pacman -S sshfs

una volta installato controlliamo il suo funzionamento, restituendone la versione con la flag -V:

sshfs -V

il risultato sarà simile al seguente:

Version 2.8
FUSE library version: 2.9.7
fusermount version: 2.9.7
using FUSE kernel interface version 7.19

Creazione del percorso locale

Creiamo ora un percorso locale dove posizionare quello remoto. Cerchiamo di usare una locazione a cui abbiamo accesso per evitare conflitti, nel nostro caso creiamo il percorso server_docs nella home:

mkdir $HOME/server_docs

Montare il percorso remoto

Procediamo col montare il percorso remoto in quello locale appena creato, per farlo:

sshfs utente@INDIRIZZO_IP:/percorso/ $HOME/server_docs

dove:

  • utente è il nome dell’utente a cui abbiamo accesso sul server remoto
  • INDIRIZZO_IP è l’indirizzo IP del server remoto
  • /percorso/ è il percorso remoto a cui vogliamo accedere
  • $HOME/server_docs il percorso locale dove posizionare quello remoto

possiamo inoltre usare la flag -p per specificare una porta differente:

.. -p PORTA

Nel caso in cui il server richieda autenticazione via chiave, possiamo fornire la chiave via flag -o e parametro IdentityFile:

.. -o IdentityFile=~/percorso/chiave

Una volta effettuata la connessione, possiamo accedere al contenuto del percorso remoto, da quello locale. Ovviamente ogni modifica al suo contenuto verrà effettuato in remoto.

Montare in modo permanente

Nel caso in cui vogliamo montare il percorso remoto in modo permanente nel sistema, possiamo sfruttare il file fstab, apriamolo col nostro editor preferito:

sudo nano /etc/fstab

ed aggiungiamo alla fine:

sshfs#utente@INDIRIZZO_IP:percorso/ $HOME/server_docs

Smontare il percorso remoto

Nel momento in cui vogliamo rimuovere la posizione remota, sfruttiamo il comando umount:

sudo umount $HOME/server_docs

 

Good *nix
 – Mirko

☕ #pausacaffé – La nave del 32 bit sta per affondare! Riflessioni, storia e analisi (parte 1)

L’articolo che segue sarà suddiviso in più parti, ognuna della quale uscirà ogni settimana.

Introduzione

Ci si tiene a sottolineare che la maggior parte delle analisi deriva da un flusso logico personale maturato attraverso gli studi effettuati e attraverso l’esperienza, nessun opinione vuole quindi essere presa in modo oggettivo, assolutamente per vera o inequivocabilmente così.
Buona lettura.

Immagine sfocata circolarmente di un codice asm di mia proprietà insieme ad un circuito

Storia

Era il 1991 quando la MIPS lanciò the first true 64-bit RISC microprocessor. L’azienda scelse un set di istruzioni ridotto (RISC) poichè era visione comune al tempo il fatto che il set di istruzioni complesse stesse portando il 32bit ad un blocco delle prestazioni.

Un insieme di queste scelte controcorrente portò però l’innovazione ad essere poi oscurata per parecchi anni, anche quando Intel stesso (insieme ad HP) sviluppò la IA-64 (1993), il primo vero processore destinato anche ad i consumer, ad altissime prestazioni e sviluppato insieme a windows xp a 64-bit. Ebbene si, non è da 10 anni (come molti pensano) che esiste l’architettura a 64bit, ma era stata pensata e sviluppata quasi 30 anni fa.

Il cambiamento

Quale è stato il vero motivo di tanto ritardo nella diffusione di questa nuova tecnologia?
Nient’altro che il cambiamento.

Se domani venisse qualcuno a dirvi che non potete più usare i vostri programmi preferiti, perchè vanno riscritti, che gli dispiace per il disagio ma tutto questo gioverà in seguito alle performance delle vostre macchine, che cosa gli rispondereste? 

E invece se venisse qualcun altro a dirvi che ha rivoluzionato il modo in cui potete svolgere il vostro lavoro, ma dovete riadattare tutto quello che avete fatto in questi anni, riscrivendo tutti quegli appunti e ricostruendo tutte quelle cose che vi facilitano ogni giorno la vita, cosa gli rispondereste? Sareste atti al cambiamento? La risposta di utenti e sviluppatori è stata no!

Facciamo un passo indietro e cerchiamo di capire ora cosa invece ha spinto la diffusione poi delle architetture a 64bit di AMD. Essi, se oggi tale architettura è diffusa come amd64 è perchè le prime CPU a diffondersi di questo genere son state sviluppate da AMD grazie all’Athlon64, i motivi per cui quest’architettura rispetto alle precedenti ha avuto successo si trova nelle due domande sopra, e sulla loro negazione.

L’Athlon era retrocompatibile, nessuno strumento sarebbe stato inutile anche se scritto per processori a 32 bit, athlon l’avrebbe capito. I lavori dei precedenti sviluppatori non erano inutili, si potevano riutilizzare! Questo a discapito però di un enorme aumento di complessità strutturale della cpu stessa a livello progettuale.

L’AMD riusò la sintassi delle istruzioni a 32 bit associandole ad istruzioni a 64 bit, permettendo anche la generazione di una nuova sintassi che dietro le quinte usava, in maniera poco performante ma comunque compatibile, le istruzioni della nuova architettura.
Questo processo però non aiutò la diffusione dei software a 64bit, poiché non si trattava di una traduzione 1-ad-1 dei vecchi programmi e sistemi, ma bisogna ragionarli per sfruttare a pieno le nuove istruzioni e non incombere in cali di performance notevoli. 

Senza entrare troppo nei dettagli tecnici, il numero di bit denominazione dell’architettura si riferisce sia alla dimensione dei registri generali che alla portata delle operazioni native in linguaggio macchina; per chiarezza, un architettura a 32bit gestisce nativamente numeri a 32 bit (anche chiamati int in molti linguaggi di programmazione) ed operazioni sullo stesso numero di bit. Grazie ad i registri multimediali ( comune estensione delle cpu moderne) si possono gestire con la stessa architettura contemporaneamente 4 numeri in virgola mobile a 32 bit alla volta. 

Sulle cpu a 64 bit il ragionamento è diverso, si possono  infatti gestire nativamente 2 numeri interi a 32 bit alla volta oppure uno a 64 bit (chiamato long o long int in alcuni linguaggi), con l’estensione multimediale arriviamo a 8 numeri in virgola mobile a 32 bit alla volta oppure 4 a 64 bit (detti anche virgola mobile a precisione doppia o double). Questo ragionamento lo si può fare sia attraverso mere istruzioni macchina che applicandosi dal punto di vista intellettuale sfruttando le proprietà dei numeri binari. Tra i vantaggi di un architettura a 64 bit c’è anche la possibilità di un indirizzamento RAM maggiore di 4GiB (che va fino ai 256TiB)

L’errore

Passiamo ora a comprendere dove si può sbagliare in una traduzione 1-ad-1: innanzitutto non sfruttando i registri multimediali a dovere, infatti se prima ci si poteva gestire facilmente 4 numeri a 32 bit alla volta, la scelta più sbagliata sarebbe di decidere di gestirne 4 a 64 bit senza alcuna motivazione di raddoppiare la precisione, quando si può raddoppiare la velocità gestendone 8 alla volta.

Un altro errore potrebbe essere quello di lavorare con i puntatori alla memoria e non con i dati, infatti i puntatori a 64 bit pesano esattamente 64bit, quelli a 32 pesano 32bit. Quindi la dimensione di strutture che conservano altre strutture raddoppia, Sarebbe più conveniente invece gestire strutture fatte solo dai così detti tipi di base, la quale dimensione non cambia con il cambiare dell’architettura.

Esistono altri errori in cui si incombe come la pessima gestione della cache o l’uso di istruzioni a 32 bit sulle architetture a 64, ma sono errori di programmazione e non problemi dell’architettura.

 

Perché ancora oggi si usa il 32bit?
Le mie personalissime opinioni nel prossimo articolo.

? #howto – Installare e configurare Oh My Zsh

Oh My Zsh è un framework open source creato per personalizzare la propria configurazione di default di zsh, una delle shell più utilizzate in alternativa alla classica bash, di recente è stata adottata da MacOS.

In questa guida vedremo insieme come installarlo e configurarlo.

Installazione

Vediamo quali sono i passaggi per l’installazione, cominciando da zsh per poi passare a oh-my-zsh.

Installazione di zsh

Come requisito, ovviamente, è necessaria l’installazione della shell zsh:

# Debian/Ubuntu e derivate
sudo apt install zsh

# RHEL/Centos e derivate
sudo yum install zsh

# Fedora e derivate
sudo dnf install zsh

# Arch Linux e derivate
sudo pacman -S zsh

# Void Linux
sudo xbps-install zsh

Per verificare di aver installato correttamente zsh, possiamo usare il parametro –version:

zsh --version

Il risultato dovrebbe essere simile al seguente:

zsh 5.5.1 (x86_64-ubuntu-linux-gnu)

Installazione di Oh My Zsh

Per installare Oh My Zsh, possiamo utilizzare sia curl che wget:

# curl
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

# wget
sh -c "$(wget -O- https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

Se l’output è questo, allora Oh My Zsh è stato installato correttamente:

         __                                     __
  ____  / /_     ____ ___  __  __   ____  _____/ /_
 / __ \/ __ \   / __ `__ \/ / / /  /_  / / ___/ __ \
/ /_/ / / / /  / / / / / / /_/ /    / /_(__  ) / / /
\____/_/ /_/  /_/ /_/ /_/\__, /    /___/____/_/ /_/
                        /____/                       ....is now installed!

Please look over the ~/.zshrc file to select plugins, themes, and options.
p.s. Follow us on https://twitter.com/ohmyzsh
p.p.s. Get stickers, shirts, and coffee mugs at https://shop.planetargon.com/collections/oh-my-zsh

Personalizzazione (Temi e plugin)

Uno dei tanti motivi per quale si installa Oh My Zsh è proprio la personalizzazione: è possibile infatti utilizzare temi e plugin per modificare a piacimento il proprio terminale e anche per velocizzare il proprio lavoro.

Temi

Per utilizzare un tema diverso da quello predefinito (robbyrussell) è necessario modificare il file .zshrc presente nella propria home directory. Se volete cambiare tema e volete sceglierne uno pre-installato, consultate questa lista (sono presenti delle immagini per ciascun tema), scegliete quello che più vi aggrada e modificate il file nominato prima.

Aprendo, dovremo cercare il parametro ZSH_THEME e modificare il nome del tema presente nelle virgolette con quello che abbiamo scelto.

ZSH_THEME="nome-del-tema"

Per applicare il tema, si può chiudere e riaprire il terminale o semplicemente:

source .zshrc

Plugins

I plugins possono tornare molto utili per velocizzare il nostro lavoro, ad esempio omettendo intere frasi.

Proviamo ad usare il plugin di apt. Abilitandolo, per esempio, invece di scrivere a mano “apt install nome-pacchetto”, si può usare direttamente “ai nome-pacchetto”

# Prima
apt install nome-pacchetto

# Dopo
ai nome-pacchetto

In questo modo abbiamo risparmiato dei secondi nel non scrivere apt install, ma si tratta comunque di una funzionalità carina ed interessante.

Per installare un plugin, è necessario modificare il file .zshrc e cercare il parametro plugin. Possiamo abilitare più plugin, non bisogna inserire ne virgolette ne virgole, ma basta semplicemente inserire il nome del nuovo plugin lasciando uno spazio dopo quello precedente:

plugin(nomeplugin1 nomeplugin2)

Per poterli abilitare basterà riavviare la sessione o sfruttare il comando source come già mostrato precedentemente.

La lista dei plugins ufficiale è reperibile qui. È anche possibile installare temi e plugins esterni (quindi non pre-installati), seguendo altri procedimenti, spesso offerti nella documentazione del plugin stesso.

 

Per dubbi e chiarimenti, consultare il nostro Gruppo Telegram.

? #howto – Installazione di PHP 7.3 su Debian

In questa breve guida vediamo come installare php nella versione più recente ed aggiornata (php 7.3 nel momento in cui scrivo questa guida).

È importante tenere aggiornata la versione di php per soddisfare a pieno i requisiti degli applicativi web. Nonostante ciò è importante tenere l’occhio vigile sui requisiti di un nuovo aggiornamento software, non sempre questi sono compatibili con le ultime versioni di php tempestivamente.

Preparazione delle repository

Prima di procedere con l’installazione della repository, installiamo alcuni pacchetti necessari:

sudo apt update
sudo apt install apt-transport-https lsb-release ca-certificates

importiamo la chiave per la repository:

sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg

procediamo quindi con l’aggiunta della repository in cui possiamo trovare le versioni più recenti di php:

sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
sudo apt update

Installazione

Nel momento in cui scrivo, la versione più recente di php è la 7.3, possiamo controllare la sua disponibilità via apt:

sudo apt search php7.3

dovremmo ricevere un output simile:

....
php7.3-sybase-dbgsym/sconosciuto 7.3.6-1+0~20190531112735.39+stretch~1.gbp6131b7 amd64
  debug symbols for php7.3-sybase

php7.3-tidy/sconosciuto 7.3.6-1+0~20190531112735.39+stretch~1.gbp6131b7 amd64
  modulo tidy per PHP

php7.3-tidy-dbgsym/sconosciuto 7.3.6-1+0~20190531112735.39+stretch~1.gbp6131b7 amd64
  debug symbols for php7.3-tidy

php7.3-xml/sconosciuto 7.3.6-1+0~20190531112735.39+stretch~1.gbp6131b7 amd64
  modulo DOM, SimpleXML, WDDX, XML e XSL per PHP

php7.3-xml-dbgsym/sconosciuto 7.3.6-1+0~20190531112735.39+stretch~1.gbp6131b7 amd64
  debug symbols for php7.3-xml

php7.3-xmlrpc/sconosciuto 7.3.6-1+0~20190531112735.39+stretch~1.gbp6131b7 amd64
  modulo XMLRPC-EPI per PHP

php7.3-xmlrpc-dbgsym/sconosciuto 7.3.6-1+0~20190531112735.39+stretch~1.gbp6131b7 amd64
  debug symbols for php7.3-xmlrpc

php7.3-xsl/sconosciuto 7.3.6-1+0~20190531112735.39+stretch~1.gbp6131b7 all
  modulo XSL per PHP (fittizio)

php7.3-zip/sconosciuto 7.3.6-1+0~20190531112735.39+stretch~1.gbp6131b7 amd64
  modulo Zip per PHP

php7.3-zip-dbgsym/sconosciuto 7.3.6-1+0~20190531112735.39+stretch~1.gbp6131b7 amd64
  debug symbols for php7.3-zip
......

Installiamo quindi php7.3 ed alcuni pacchetti comuni, spesso richiesti in qualsiasi applicazione web:

sudo apt install -y php7.3 php7.3-common php7.3-cli php7.3-fpm php7.3-mysql php7.3-xml php7.3-curl php7.3-mbstring php7.3-zip

Controlliamo l’installazione con la flag -v:

php -v

il risultato dovrebbe essere simile al seguente:

PHP 7.3.6-1+0~20190531112735.39+stretch~1.gbp6131b7 (cli) (built: May 31 2019 11:27:35) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.6, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.6-1+0~20190531112735.39+stretch~1.gbp6131b7, Copyright (c) 1999-2018, by Zend Technologies

 

Per dubbi e chiarimenti, potete seguire il nostro Gruppo Telegram.

? #howto – Compressione di un file o di una cartella (gz, tar, bz2, zip, rar, 7z)

Spesso, per diminuire il peso di un file o raggruppare tanti documenti (o cartelle) si ricorre alla compressione in archivi. Sono molti i formati in cui è possibile creare un archivio.

In questa guida vedremo come creare degli archivi utilizzando noti formati. Se volete invece decomprimere degli archivi creati con questi formati, consultate questa guida,

Gz

Per comprimere un file in .gz, possiamo usare il comando gzip:

gzip file

Di norma, durante la compressione i file originali vengono eliminati. Per evitare che ciò accada, basta semplicemente aggiungere la flag -k al comando:

gzip -k file

Con gzip non è possibile creare un archivio comprimendo delle cartelle.

Bzip2

Per comprimere un file in .bz, possiamo usare il comando bzip2:

bzip2 file

Di norma, durante la compressione i file originali vengono eliminati. Per evitare che ciò accada, basta semplicemente aggiungere la flag -k al comando:

bzip2 -k file

Anche con Bzip2 non è possibile comprimere cartelle.

Zip

Uno dei formati più utilizzati per gli archivi è .zip: essi possono essere creati utilizzando il comando zip (in molti sistemi non è pre-installato).

Per installarlo, è sufficiente eseguire il seguente comando (in base alla distribuzione utilizzata è necessario usare il gestore di pacchetti fornito con essa):

# Debian/Ubuntu e derivate
apt install zip

# RHEL/Centos e derivate
yum install zip

# Fedora e derivate
dnf install zip

# Arch Linux e derivate
pacman -S zip

Per creare un archivio in .zip basta semplicemente utilizzare il comando zip (l’asterisco viene usato per aggiungere all’archivio tutti i file presenti nella cartella in cui ci si trova)

zip nome_archivio *

Per includere tutti i file (anche quelli nascosti) e le sottocartelle in un archivio, possiamo usare la flag -r:

zip -r nome_archivio .

Tar

Per archiviare dei file o delle cartelle in un file con estensione .tar è sufficiente utilizzare l’omonimo comando insieme ad una flag:

tar -czvf nome_archivio.tar /path/cartella-o-file

Vediamo cosa significano le lettere presenti nella flag:

  • -c: Crea un archivio
  • -z: Comprime l’archivio con gzip
  • -v: Attiva la verbose mode che ci permette di vedere in tempo reale cosa il nostro sistema sta comprimendo (opzionale)
  • -f: Ci permette di dare un nome all’archivio

Tar.gz

Nel caso si volesse creare un archivio con estensione .tar.gz, invece che .tar, è sufficiente utilizzare questo comando:

tar -czvf nome_archivio.tar.gz /path/cartella-o-file

Tar.bz2

Per creare un archivio con estensione .tar.bz2 la flag è leggermente diversa:

tar -cjvf nome_archivio.tar.bz2 /path/cartella-o-file

Rar

Per creare un archivio con formato .rar, è necessario installare il pacchetto unrar.

# Debian/Ubuntu e derivate
apt install rar

# RHEL/Centos e derivate
yum install rar

# Fedora e derivate
dnf install rar

# Arch Linux e derivate
pacman -S rar

Creare un archivio con rar è molto facile, basta utilizzare il seguente comando:

rar a nome_archivio.rar nome-cartella-o-file

7z

Per creare un archivio con formato .7z è necessario utilizzare il comando 7z, disponibile nel pacchetto p7zip che deve essere installato separatamente:

# Debian/Ubuntu e derivate
apt install p7zip-full

# RHEL/Centos e derivate
yum install p7zip p7zip-plugins

# Fedora e derivate
dnf install p7zip p7zip-plugins

# Arch Linux e derivate
pacman -S p7zip

Creare un archivio con p7zip è molto semplice, basta utilizzare il comando 7z con la flag -a:

7z a nome_archivio.7z nome-cartella-o-file

 

div>