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.

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.

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.

Non parleremo dei tab intesi come QTabWidget, ma l'ordine di quando usiamo il tab per navigare tra i componenti della gui.

In sostanza, come suppongo già sappiate, quando state in una gui, potete usare il tasto tab per navigare tra i componenti.

L'ordine in cui si naviga viene scelto dal Qt Designer man mano che si aggiungo i componenti nella finestra.

Per effettuare l'hashing delle stringhe in Python, possiamo avvalerci di un modulo apposito: hashlib!

Il suo utilizzo è molto semplice, e ci mette anche a disposizione delle funzioni per capire cosa è supportato a sistema, e cosa è sicuramente supportato dal modulo.

Mi sono imbattutto per sbaglio in questa libreria, ed ho deciso che dovrò assolutamente usarla: List.js!

In pratica permette di impostare filtri, ordinamenti e ricerche su liste e tabelle; il tutto in Javascript standard, senza usare altre librerie esterne (tipo jQuery).

Inoltre il suo utilizzo è veramente semplice, oltre ad essere leggerissimo.

Criptare stringhe, o anche interi file, con Ruby è abbastanza semplice usando il modulo digest!

Questo modulo ci mette a disposizione diversi algoritmi e diversi tipo di encoder.

Noi faremo esempi con SHA256; sulla documentazione potete verificare glialtri disponibili.