Archivi autore: Valerio Guaglianone

Creare automaticamente il file requirements.txt

Spesso si scarica del codice sorgente Python da github, oppure da altre sorgenti simili, e non si conosce come installare velocemente tutte le dipendenze necessarie per la sua esecuzione se non è presente un file requirements.txt creato dallo sviluppatore. Di norma lo si deve creare manualmente.

La domanda dunque è:
Data la directory del codice sorgente Python, lo sviluppatore,  può creare automaticamente il file requirements.txt per indicare i moduli usati/presenti nella sezione import di uno script?

ebbene si, il comando seguente crea il file requirements.txt che successivamente potrà essere usato, da altri utenti, per installare i moduli necessari all’esecuzione del codice Python.

  • pip3 freeze > requirements.txt # in Python3
  • pip freeze > requirements.txt # in Python2

ecco il risultato:

Una volta creato il file basterà includerlo nel repository del codice, in maniera tale che gli utilizzatori dello script potranno importare/installare tutte le dipendenze necessarie per lavorare velocemente.

Android oppure iOS?

Il dibattito iOS versus Android è in corso da quando le due piattaforme sono state create, oltre un decennio fa. Premessa: non odio Android, ho uno smartphone Android-based; credo davvero che entrambe le piattaforme abbiano i loro punti di forza e di debolezza. La decisione su quale sia la scelta migliore per ognuno di noi è una decisione effettivamente personale. Le esigenze di tutti gli utenti, che usano degli smartphone, sono diverse; per cui ci si orienta in modo diverso secondo necessità. Appare evidente quindi che nessuno può dire che una piattaforma sia oggettivamente, ed esclusivamente, migliore dell’altra ma penso sia giusto sottolineare i punti di forza specifici che iOS offre rispetto ad Android.

Is-Android-Really-Better-Than-iOS

Bene, quindi iniziamo con quello che penso sia il motivo numero uno per cui le persone scelgono iOS/Apple rispetto Android. Sicuramente è l’esperienza d’uso che offre all’utente medio. Apple è eccezionale nel realizzare prodotti altamente tecnologici per persone non orientate alla tecnologia. E penso che il team di sviluppo di iOS faccia un lavoro fantastico nel mantenere le cose abbastanza semplici, tanto da consentire alle persone comuni di prendere un iPhone (o un iPad) senza essere intimiditi da un’interfaccia grafica eccessivamente complicata; piaga che affligge molti dispositivi Android.

Posso già sentire i fanatici di Android dire quanto stupidi dobbiamo essere tutti noi, utenti iPhone (Apple in generale), se non riusciamo a capire come funzioni Android. Si deve capire che non è una questione di essere stupidi oppure meno intelligenti degli altri.
Dipende dal fatto che alla gente piace usare prodotti convenienti dal punto di vista dell’usabilità. E se riescono a capire come iOS funziona, molto più velocemente di un dispositivo Android, potete scommetterci che vedranno quel prodotto come il più adeguato per loro e il meno frustrante da usare (anche se più caro). Inoltre, quasi tutti i produttori di smartphone possono applicare la propria skin personalizzata ad Android. Ciò significa che la sua interfaccia appare diversa a seconda dell’hardware su cui è in esecuzione o a seconda del vendor. Questa disomogeneità grafica, per la maggior parte delle persone, rende l’intero ecosistema ancora più contorto e confuso e non permette un’immediata familiarità d’uso. Una molteplicità di skin di Android, a volte molto diverse tra loro, diventano un incubo per le persone comuni che vogliono semplicemente usare qualcosa che funzioni facilmente (e sempre) in modo coerente

ONTAP 8.x e 9.x – Come leggere i log files via Clustershell

Nei sistemi ONTAP 8.x e ONTAP 9.x esistono più file di log. Se si intende esaminare i log di ONTAP il miglior posto in cui cercare è il registro EMS. L’Event Management System(o EMS) raccoglie, in pratica, tutti gli eventi notificati dal sistema operativo ONTAP (https://en.wikipedia.org/wiki/ONTAP).

L’EMS fornisce, inoltre, anche un meccanismo di filtraggio per una facile revisione. Gli eventi EMS possono essere visualizzati direttamente dalla clustershell; di seguito qualche comando utile:

  • event log show

Il comando presentato sopra mostra l’elenco degli ultimi eventi, possiamo anche scegliere di visualizzare gli eventi indicando un range temporale espresso in minuti, come ad esempio tutti gli eventi degli ultimi 15 minuti:

  • event log show -time >15m

Oppure, per essere ancora più precisi nella ricerca, possiamo indicare un periodo temporale ben preciso con:

  • event log show -time “2/1/2018 13:00:00″..”2/1/2018 14:00:00″

da notare che l’output parte dal valore indicato nella parte destra, cioè mostra gli eventi a partire dalle 14:00:00 in ordine decrescente.

Se, ad esempio, desiderassimo vedere solo tutti gli errori basterà invece indicare esplicitamente la severity corrispondente come segue:

  • event log show -severity ERROR

Le voci di severity utilizzabili, per questo livello di filtraggio, sono le seguenti:

  1.       emergency
  2.       alter
  3.       critical
  4.       error
  5.       warning
  6.       notice
  7.       informational
  8.       debug

Otto piccole regole da seguire quando si lavora con un team di programmatori

In questo breve post espongo le otto migliori pratiche di gestione di un progetto, apprese strada facendo. Qualora riteneste valide queste indicazioni potreste attuarle presso la vostra azienda, credo vi potrebbero aiutare a mantenere un flusso di lavoro snello, adeguato ed a motivare i vostri dipendenti.

Sono semplici riflessioni, nulla di accademico; ho infatti rivolto semplicemente, ai miei colleghi, una domanda: cosa odiano i programmatori? In pratica cosa li manda fuori di testa?

(1) I requisiti del software non chiari

Spesso il primo problema riscontrato è il gap dei requisiti. Un progetto non ben chiaro oppure una comunicazione non chiara tra il cliente, i responsabili di progetto e gli sviluppatori, conducono alla creazione di software difettosi oppure incompleti.

Se cliente ed il responsabile del progetto non sono abbastanza specifici sul prodotto richiesto, non dovrebbero aspettarsi che gli altri leggano le loro menti e facciano il lavoro che loro non hanno svolto correttamente. I programmatori non sono legilimens.

È il compito di un manager raccogliere le specifiche del progetto e renderlo più completo possibile, per cui gli sviluppatori non hanno bisogno di indovinare oppure chiedere più volte le specifiche.

(2) Le attività ripetitive

Il problema qui può essere, ad esempio, far lavorare un programmatore molto su un progetto per un lungo periodo. Può anche essere il caso di un cliente che cambi spesso la propria idea su una o più funzioni dello stesso software. In entrambi i casi, se uno sviluppatore si sente bruciato dalle attività ripetitive che sta facendo, forse è giunto il momento di parlarne.

Se possibile, spostare il dipendente in un altro progetto. A volte un semplice cambiamento dei task su cui uno sta lavorando può essere defaticante e serve a mantenere il dipendente motivato.

(3) L’entropia del software da debito di progettazione

Il debito di progettazione è l’effetto causato dall’adozione di una semplice soluzione senza però tener conto della futura scalabilità del progetto. In sintesi, riflette il lavoro di sviluppo aggiuntivo che si presenta quando viene utilizzato codice facile da implementare nel breve periodo anziché applicare la migliore soluzione a lungo termine. La ragione per cui gli sviluppatori odiano questo tipo di debito è semplice: proprio come il caso di un debito finanziario, ci sarà un momento per “restituirlo”, che in termini di sviluppo significa affrontare nuovamente lo stesso problema.

Per risolvere il problema, gli sviluppatori spesso devono riscrivere il codice per terminare “il lavoro non completato”. Inoltre, causa scadenze mancate, in quanto è chiaramente difficile stimare quanti lavori sono necessari per pagare il debito stesso maturato.

La soluzione da applicare è semplice: non cadere nella scelta più semplicistica solo perché più facile quando si pianifica. Pensate alla soluzione valida una volta per tutte. Questo debito non è necessariamente una cosa negativa, talvolta il debito di progettazione (o debito tecnico se preferite) è positivo e necessario per far evolvere i progetti.

Come controllare la versione di Bash in uso

Questo breve articolo vi fornirà utili informazioni su come controllare la versione di Bash presente sul vostro sistema operativo. Potrà sembrarvi banale ma al sottoscritto è capitato un paio di volte di dover risalire alla versione in uso della shell per adattare degli script.

1 – Controllo della versione utilizzando il comando bash

Il modo più semplice ed immediato per controllare la versione di Bash è eseguire il comando shell bash con l’opzione di comando –version:

bash1

dal comando appena usato si evince che la versione della Bash presente nel sistema è la 4.4.20, direi un metodo veloce ma con un output prolisso se vogliamo.

The differences between MongoDB and Redis

A fleeting glance between MongoDB and Redis
Storage

MongoDB
Disk, memory-mapped files, index should fit in RAM.

Redis
Typically in-memory.

Data model

MongoDB
Document oriented, JSON-like. Each document has unique key within a collection. Documents are heterogenous.

Redis
Key-value, values are:

  • Lists of strings
  • Sets of strings (collections of non-repeating unsorted elements)
  • Sorted sets of strings (collections of non-repeating elements ordered by a floating-point number called score)
  • Hashes where keys are strings and values are either strings or integers

Querying

MongoDB
By key, by any value in document, Map/Reduce.

Redis
By key

PHP (CLI) e percorso del file di configurazione

A volte capita di dover eseguire uno script PHP da command line; ed è ancora più frequente il dover ritoccare alcuni parametri del file di configurazione del PHP prima di eseguire il comando stesso. Per stabilire dove e quale sia il file da modificare basterà inserire in un terminale il comando:
php -r ‘phpinfo ();’| grep “Configuration File”
come output vedremo qualcosa di simile:
Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /etc/php5/cli/php.ini.

Buon PHP a tutti!

Come viene sviluppato Linux

In questo video la Linux Foundation spiega il processo di sviluppo del kernel Linux. Per prima cosa, ci viene spiegato che molti usano Linux, anche inconsapevolmente: difatti vengono venduti ogni giorno circa 850.000 cellulari che usano Linux come sistema operativo (Android vi dice qualcosa?), come se non bastasse ben 8 scambi commerciali su 10 sfruttano Linux, il 90% dei supercomputer del mondo usano Linux e la maggior parte dei colossi del web (google, facebook, twitter ed amazon) hanno Linux installato sui propri server.

Vi pare poco?

Xfce 4.10 – il mio DE

Altro che Gnome o KDE, Xfce funziona alla grande ed è più intuitivo e leggero degli altri desktop environment. Xfce è, in sintesi, una collezione di programmi che nella loro totalità forniscono un ambiente grafico molto ricco di funzionalità.

I seguenti programmi fanno parte del core di Xfce:

Gestore di finestre (xfwm4)
Gestisce il posizionamento delle finestre sullo schermo

Pannello (xfce4-panel)
Avviatori di programmi, pulsanti delle finestre, menu delle applicazioni, selettore degli spazi di lavoro e molto altro.

Gestore della scrivania (xfdesktop)
Imposta il colore o l’immagine di sfondo della scrivania, fornisce un menu delle applicazioni opzionale e le icone per le applicazioni minimizzate, per gli avviatori, per i dispositivi e per le cartelle.

Gestore di file (thunar)
Un moderno gestore di file per l’ambiente Unix/Linux, veloce e facile da usare.

Gestore della sessione (xfce4-session)
Ripristina la propria sessione all’avvio e permette di spegnere il computer da Xfce.

Impostazioni del sistema (xfce4-settings)
Sistema di configurazione per controllare vari aspetti dell’ambiente grafico quali l’aspetto e le impostazioni di schermo, tastiera e mouse.

Trova applicazioni (xfce4-appfinder)
Mostra le applicazioni installate nel proprio sistema suddividendole per categoria in modo da poterle facilmente trovare e avviare

Demone delle impostazioni (xfconf)
Sistema di immagazzinamento della configurazione basato su D-Bus.

Un ambiente desktop pulito, veloce, essenziale e stabile.

xfce4-10