Molto spesso ci vengono forniti dei file PDF che possono solamente essere letti. Volendo stamparli bisogna conoscere la password. Molti cercano tra diversi servizi online o programmi a pagamento. Ma c’è un semplice programma che può servire al caso:

QPDF http://qpdf.sourceforge.net/

Si tratta tra l’altro di un programmino che si installa semplicemente copiando la cartella in cui è contenuto, per cui si può installare e trasportare dovunque. Una volta installato per togliere la password da un file basta dare il comando:

qpsf.exe --decrypt <percorso al file da sbloccare> <percorso al file di uscita>

Tutto qui.

JWT is a well know open standard to share information among several services in a secure way. Information are signed with some signing key, so information in the payload are protected against tampering.

Most of samples are based on HS256 encryption scheme. With this encryption scheme two service the want to share some token, must share a secret key, for generate and validate token. This option is useful if you want share token between different service of your application. But if you want share information with application from third party or more? You need to share a secret password with every service, a nightmare of (password,service) to remember. But there is a simple solution: RSA private/public key. With RSA encryption, keys came in couple, if you sign with private key, the verification can be done with the public key, or the other way round. In JWT this means that after generating the couple (private key,public key), the private key must be stored in a safe place and can be used to generate every token. The public key can be made public available and used to verify JWT toke integrity. 

Following this sample, i have extended the library to use RS256 signing scheme. The library is complete:

  1. generation of (private key,public key), the private key is stored in a encrypted file with BlowFish cipher. Public key is stored in XML format and PEM format;
  2. Generation of JWT token with username and userid identifier;
  3. verification of token end claims extraction from JWT token;

 The source code for the library is here, is based on Microsoft JWT implementation fo .Net and Net Core.

For an introduction on JWT with Python see here.

JSON Web Tokens è una tecnologia per scambiare token autorizzativi tra due parti. Ogni token può contenere le informazioni che si desiderano e l’integrità è assicurata dal fingerprint presente sul token stesso. Per la generazione del token esistono librerie praticamente in ogni linguaggio.

Ottimo sistema da tener presente se si ha bisogno di scambiare autorizzazione tra due sistemi diversi, o per realizzare un sistema di Single Sign On.

Una buona guida alla libreria .Net è questo esempio.

Io sto ricevendo strani squilli dal numero tunisino +21697239302. Molto probabilmente si tratta di una truffa. Questa. Si basa sul fatto che l’utente richiami il numero, dall’altra parte risponde un numero a pagamento, che non fa altro che farvi perdere tempo per tenervi attaccati alla chiamata e succhiarvi euro.

Hands-On è un ottimo testo per imparare le tecniche di machine learning più utilizzate. Il testo non presuppone nessuna conoscenza pregressa. Infatti si parte da un capitolo introduttivo per introdurre la parte teorica del machine learning: che cos’è il machine learning, perché usarlo, tipi di machine learning, tipi di utilizzo del machine learning. Una parte considerevole del capitolo teorico è dedicato a descrivere l’importanza della scelta appropriata del training set dei dati e della parte da utilizzare per testare il modello costruito.

Il libro prosegue con una serie di capitoli pratici che realizzano un serie di progetti finiti, che introducono le due librerie presentate nel libro. Scikit-Learn e Tensorflow. I progetti sono realizzati, naturalmente, in Python. Anche qui non è richiesta una conoscenza del linguaggio, nel primo capitolo pratico vengono date tutte le indicazioni pratiche per impostare un ambiente adatto alle esercitazioni.

Azure Data Studio

Azure Data Studio (ADS) è un nuovo ambiente di sviluppo database multi piattaforma in fase di sviluppo da parte di Microsoft. Infatti esiste nella versione Windows, MacOS e Linux. L’interfaccia e la modalità di interazione è la stessa di VSCode. L’ultima release, porta in dote diverse novità. Tra queste l’inclusione del concetto del Notebook. Un Notebook, non è un semplice documento di query, ma è composto da una serie di oggetti attivi, che possono essere “attivi” nello stesso momento, inframmezzati da testo o altro. In pratica è come avere un “quaderno” in cui scrivere tutto. Il Notebook più famoso e Jupiter Notebook, che serve ad eseguire script Python inframezzato da testo, grafici e altro.

Ed infatti in questa release di ADS un Notebook può avere un backend di codice SQL o Python. E qui iniziano i guai. Provando un nuovo Notebook con backend Python, ADS parte immediatamente con l’installazione di un proprio ambiente Python. Come risultato mi sono ritrovato con il mio ambiente Python/Anaconda “piallato”. È vero che ADS è in fase di sviluppo, ma sarebbe meglio prevedere un rilevamento di un ambiente già installato ed usare quello.

Per il resto i Notebook funzionano perfettamente, e sono perfettamente compatibili con quelli Jupiter (non so se si tratta di un’integrazione proprio di questi ultimi o solo compatibilità di file). Infatti avevo un Notebook in cui stavo seguendo gli esercizi del libro Hands-On Machine Learning with Scikit-Learn and TensorFlow e sono riuscito ad aprirlo senza problemi e proseguire lo sviluppo da ADS.

Yesterday i decided to upgrade my installation of SQL Server 2012 (on Windows 10 professional) with the most recent serivice pack, the sp4. Everything works fine, until the at some step before completation, the setup ended wid the error:

Wait on the Database Engine recovery handle failed. Check the SQL Server error log for potential causes.

This error, leaved the sql server in a unstartable state. None work to recover the installation.

At this point, i decided to download and install a fresh copy o SQL Server 2016 developer edition. But also this setup failed with the same error. Every suggested solution do not works. At some point reading the SQL Server installation log, i found this line:

The code page 65001 is not supported by the server

What the hell?

After some search, i discovered that there is a new (beta) option in Windows 10 April 2018 update:
Beta: Use Unicode UTF-8 for worldwide language support

Basically this option force to use UTF-8 (65001 character set) in every windows function. But the secondary effect is that old(?) setup do not works anymore. To disable this option:

control panel->regional settings->administrative->change system locale

uncheck the option.

After that every setup works with no problem.

Da “Il dilemma dell’onnivoro (Gli Adelphi Vol. 431)” di Michael Pollan, L. Civalleri –

“La macinazione a umido, dunque, è un processo molto dispendioso dal punto di vista energetico: per ogni caloria prodotta, ne brucia circa dieci di combustibile fossile.”

Inizia a leggere questo libro gratuitamente: http://amzn.eu/8GSVwWn