CSS è in continua evoluzione, e sta prendendo anche spunto dai più tradizionali linguaggi di programmazione.

Oggi vediamo come usare le variabili, per riutilizzare un determinato valore in tutto il documento.

Supponiamo di voler usare il font nero ovunque, tranne che nei componenti h1, dove vogliamo usare il rosso.

Windows 10 non mi dispiace, ma ci sono alcune che non sopporto per quanto riguarda la gestione delle app predefinite.

Ad esempio il visualizzatore foto.

Cerco di aprire un'immagine, e rimane il cursore a caricare senza che accada nulla.

Provo ad aprirlo con un altro programma, e non ho altre opzioni se non scaricarne uno dallo store o usare quello predefinito (che non funziona).

Vim è uno degli editor più usati in assoluto su Linux, ed è pieno di opzioni.

Oggi vediamo come aprire file in sola lettura, in modo da evitare sovrascritture di file importanti.

Il primo modo è usando il comando view:

$ view test.txt

Le modifiche sono permesse, ma non è possibile salvare il file modificato.

Ho trovato una libreria che permette di manipolare file ZIP in Javascript: JSZip!

E' possibile usarla sia in Node.js che in un browser "classico" (quindi lato client).

Noi vedremo un esempio per il secondo caso.

Ad essere sincero ci ho messo un pò a capirne il funzionamento, in quanto la documentazione non è molto chiara.

Devo dire che le immagini a disposizione di default su Windows 10, sono molto belle.

Escono dei bei desktop con quelle immagini, tanto più che qualcuna me la volevo copiare.

Ma non è facilissimo trovarle, a meno che non si voglia spulciare tutte la cartelle manualmente.

Per cercare all'interno di un file PDF, possiamo tranquillamente usare grep.

Ma esiste un programma più specifico, che per certi versi possiamo considerare un'estensione di grep stesso: pdfgrep!

Per installarlo su Debian:

# aptitude installa pdfgrep

Su Archlinux:

# pacman -Sy pdfgrep

La programmazione multi-threading in Python è abbastanza semplice usando il modulo threading!

Oggi vediamo qualche esempio in Python 3; ma dovrebbe essere abbastanza simile anche per la versione 2.

Nel primo esempio, i threads non sono sincronizzati, ed infatti l'output sarà una cosa del genere:

Inizio Thread 1
Inizio Thread 2
Thread 1: Mon Apr 24 14:04:58 2017
Thread 2: Mon Apr 24 14:04:59 2017
Thread 1: Mon Apr 24 14:04:59 2017
Thread 1: Mon Apr 24 14:05:00 2017
Thread 2: Mon Apr 24 14:05:01 2017
Thread 1: Mon Apr 24 14:05:01 2017
Thread 1: Mon Apr 24 14:05:02 2017
Fine Thread 1
Thread 2: Mon Apr 24 14:05:03 2017
Thread 2: Mon Apr 24 14:05:05 2017
Thread 2: Mon Apr 24 14:05:07 2017
Fine Thread 2
Fine del main thread

Unirest è un libreria per creare richieste HTTP in maniera molto semplice e veloce.

E' disponibile per diversi linguaggi, ed oggi vedremo un esempio con PHP.

Per installare la libreria possiamo usare composer:

$ composer require mashape/unirest-php

Verrà scaricato tutto dentro una directory vendor.

Se vogliamo impostare l'autocomplete di un form a off, in modo che non visualizzi eventuali dati salvati, ci basta fare questo:

<form method="post" action="" autocomplete="off">
    <div>
        <label>Email:</label>
        <input type="email" name="email" value="" placeholder="Email">
    </div>
    <div>
        <label>Password:</label>
        <input type="password" name="password" value="">
    </div>
    <button type="submit" name="btn">Salva</button>
</form> 

Oppure possiamo impostarlo un campo specifico:

 <form method="post" action="">
    <div>
        <label>Email:</label>
        <input type="email" name="email" value="" placeholder="Email" autocomplete="off">
    </div>
    <div>
        <label>Password:</label>
        <input type="password" name="password" value="">
    </div>
    <button type="submit" name="btn">Salva</button>
</form> 

Il problema è che su Chrome (e Chromium) questo non funziona benissimo.

Ho trovato un plugin per jQuery che permette di creare pannelli dentro una pagina web in maniera veramente easy: jsPanel!

Se guardate gli esempi e la documentazione, potete notare che le possibilità sono veramente tante.

C'è anche l'integrazione con la prossima versione di Bootstrap, ed è possibile creare pannelli espandibili, finestre modali, toolbar, menu contestuali, ecc.

Insomma tanta roba.