Ultimi 100
Java - Creare un loading dialog in JavaFX
Creare un loading dialog in JavaFX

Creare un loading dialog in JavaFX

Parliamo del classico dialog che deve essere visualizzato quando eseguiamo operazioni per le quali l'utente deve aspettare. Creare un loading dialog in JavaFX è piuttosto semplice.

Ruby - Ridimensionare immagini in Ruby
Ridimensionare immagini in Ruby

Ridimensionare immagini in Ruby

Per ridimensionare le immagini in Ruby, ho usato il modulo rmagick! Si tratta di una interfaccia tra ImageMagick. Quindi do per scontato che sia installato sul vostro sistema.

Kotlin - Introduzione alle Data classes in Kotlin
Introduzione alle Data classes in Kotlin

Introduzione alle Data classes in Kotlin

Le Data classes in Kotlin sono classi che vengono usate solo come contenitori di dati. Possiamo paraganorarle ai classici JavaBean, con una differenza enorme sulla sintassi.

Linux - Identificare quale versione di Fedora stiamo usando
Identificare quale versione di Fedora stiamo usando

Identificare quale versione di Fedora stiamo usando

Oggi stavo maneggiando con la mia Fedora (installata in virtuale ovviamente), e stavo seguendo un pò di tutorial sull'installazione di alcuni programmi. C'erano differenti comandi a seconda della versione, ed io, che non sono esperto di Fedora, non ricordavo quale versione avessi installato.

Java - Applicare un watermark ad una immagine in Java
Applicare un watermark ad una immagine in Java

Applicare un watermark ad una immagine in Java

Lo scopo del codice che vedremo oggi nasce da una esigenza reale: mettere un watermark, corrispondente al nome del file, su tante immagini risiedenti tutte nella stessa cartella. Facendolo in Java ci ho messo relativamente poco tempo. Nel programma non è prevista una gui; il path viene dato tramite riga di comando. Voi, ovviamente, fate tutte le modifiche che volete / vi servono.

Kotlin - L'ereditarietà in Kotlin
L'ereditarietà in Kotlin

L'ereditarietà in Kotlin

L'editarietà in Kotlin è abbastanza diversa da quella a cui siamo abituati in Java. Cominciando dalla classe base: open class Person constructor(var name: String, var age: Int) { open fun isAdult(): Boolean { return this.age >= 18 } }

Linux - Eseguire comandi in coda su Linux
Eseguire comandi in coda su Linux

Eseguire comandi in coda su Linux

Supponiamo di avere diversi comandi da eseguire uno di fila all'altro, senza voler aspettare che finiscano uno per uno per lanciare a mano quello seguente. Come possiamo fare su Linux?

Java - Identificare riga selezionata di una TableView in JavaFX
Identificare riga selezionata di una TableView in JavaFX

Identificare riga selezionata di una TableView in JavaFX

Partiamo dal presupposto che riempiamo una TableView in JavaFX usando oggetti custom. Non mi metterò a spiegare come riempire una lista; potete vedere in un precedente articolo per come riempirla da database. Qui vederemo come intercettare la riga selezionata, e come prendere i dati del relativo oggetto custom.

Database & Server - Strumenti per monitorare MariaDB
Strumenti per monitorare MariaDB

Strumenti per monitorare MariaDB

Per monitorare un database MariaDB (e MySQL ovviamente) ci sono diversi strumenti a disposizione. Il primo in assoluto è ovviamente mysqladmin, che fa parte dei tools di base di MariaDB. Solo che non è facilissimo da usare, nel senso che bisogna conoscere molto bene dove andare a prelevare i dati, le query, ecc.

News - Nuovo strumento 'Colori dei brands'
Nuovo strumento 'Colori dei brands'

Nuovo strumento 'Colori dei brands'

Ho creato un altro strumento, comodo principalmente ai grafici e web designer: Colori brands!

Windows - Sbloccare gli aggiornamenti in Windows 7
Sbloccare gli aggiornamenti in Windows 7

Sbloccare gli aggiornamenti in Windows 7

Poi dici che odi Windows (e questo è solo uno dei motivi): ogni volta che reinstallo Windows 7 da zero, ho Windows Update che carica all'infinito e mi scarica gli aggiornamenti. Una volta l'ho lasciato un giorno e una notte.... Per fortuna c'è un rimedio a questa rottura atomica.

Java - Impostare la versione di Java in Maven
Impostare la versione di Java in Maven

Impostare la versione di Java in Maven

Ci sono alcuni IDE che non impostano l'ultima versione di Java come default in Maven. Ad esempio IntelliJ, che mi ha fatto penare per una mezz'ora abbondante. Volendo possiamo impostarlo noi nel pom.xml; io lo farei sempre a scanso di equivoci.

Ruby - L'ereditarietà in Ruby
L'ereditarietà in Ruby

L'ereditarietà in Ruby

Come sappiamo, Ruby è un linguaggio che ha pieno supporto alla OOP. Oggi vediamo come implemente il concetto di ereditarietà.

Kotlin - Listare file e directory in Kotlin
Listare file e directory in Kotlin

Listare file e directory in Kotlin

Sono rimasto sorpreso dal poco codice che ho dovuto scrivere per listare file e directory in Kotlin. Vediamo tre esempi, con tre funzioni diverse: list() -> ritorna un array di String, e quindi stampa solo il nome dei file listFiles() -> ritorna un array di File, e quindi è possibile accedere a tutte le varie funzioni e proprietà di un oggetto File walk() -> che produce un FileTreeWalk, e lista i file in maniera ricorsiva; ci sono anche le funzioni walkBottomUp() e walkTopDown(), che si differenziano solo per il verso un cui eseguono la scansione (poetet vedere su Stack Overflow la mia domanda)

Linux - Impostare lo SWAP file in Linux
Impostare lo SWAP file in Linux

Impostare lo SWAP file in Linux

In Linux siamo abituati a creare una partizione dedicata allo SWAP. Ma ad oggi, con gli hard disk sempre più veloci e capienti, e RAM sempre più grandi, possiamo anche cambiare rotta: invece di usare una partizione possiamo usare un file! A meno che non usiate BTRFS, che non ha nessun supporto per lo swap-file.

Java - Intercettare il doppio click su una TableView in JavaFX
Intercettare il doppio click su una TableView in JavaFX

Intercettare il doppio click su una TableView in JavaFX

Quando si hanno dati in forma tabellare, quasi sicuramente abbiamo bisogno di intercettare qualche evento per recupare i dati. Qui vediamo come intercettare il doppio click del mouse su una TableView in JavaFX. Cominciamo dal layout FXML: <BorderPane xmlns="http://javafx.com/javafx/8.0.112" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.mp.book.ControllerMain"> <center> <TableView fx:id="tblBooks" BorderPane.alignment="CENTER" onMouseClicked="#onTblDoubleClick"/> </center> </BorderPane>

Java - Creare grafici in JavaFX
Creare grafici in JavaFX

Creare grafici in JavaFX

JavaFX arriva già con strumenti per la creazione di grafici senza usare librerie esterne. Sono anche abbastanza semplici da usare. Vediamo un esempio di PieChart.

Python - Usare Singleton in Python
Usare Singleton in Python

Usare Singleton in Python

Per creare classi Singleton in Python, abbiamo parecchie alternative. Non saprei dirvi quale sia la migliore, visto che tra tutte quelle trovate in giro mi sono trovato bene con il codice che vedete più sotto. E semplicemente perchè è un codice più simile a quello con cui sono abituato in Java o PHP. (Devo essere sincero: la sintassi Python la digerisco ancora poco).

Software - Modificare i PDF con PDFsam
Modificare i PDF con PDFsam

Modificare i PDF con PDFsam

Ho scoperto per caso questo programma, e devo dire che lo trovo ottimo: PDFsam! E' disponibile per diverse piattaforme, anche se lo sto usando solo su Linux. Per installarlo su Archlinux: # pacman -Sy pdfsam

HTML - CSS - Creare grafici in HTML usando i Canvas
Creare grafici in HTML usando i Canvas

Creare grafici in HTML usando i Canvas

Per creare grafici nelle nostre pagine web, siamo abituati ad usare librerie esterne in Javascript. Anche giustamente, visto che ce ne sono alcune spettacolari. Ma in verità possiamo creare grafici anche per conto nostro, usando HTML, Canvas e Javascript (ovviamente).

Kotlin - Copiare file in Kotlin
Copiare file in Kotlin

Copiare file in Kotlin

Per copiare file, Kotlin mette a disposizione una funzione apposita: copyTo! La funzione accetta tre parametri, di cui solo il primo è obbligatorio: il file di destinazione se sovrascrivere il file di destinazione nel caso in cui già esista la dimensione del buffer

C - C++ - Selezionare la data in Qt con QDateEdit
Selezionare la data in Qt con QDateEdit

Selezionare la data in Qt con QDateEdit

Anche Qt, come molti framework per la costruzione di gui, ha un widget apposito per le date: QDateEdit. Usarlo è abbastanza semplice; nel caso più banale basta questo: QDateEdit calendar = new QDateEdit();

Javascript - AJAX - Utilizzare Mustache.js con AJAX
Utilizzare Mustache.js con AJAX

Utilizzare Mustache.js con AJAX

Ho cominciato a studiarmi un pò Mustache per Javascript, caricando i dati tramite AJAX. Oltre a Mustache.js, avremmo bisogno anche di jQuery; infine useremo un file di template esterno (giusto per fare un esempio più completo. Mustache.js lo potete scaricare da GitHub (ho dovuto copiarlo in locale, il caricamento remoto non mi funzionava).

Software - Registrare il desktop con FFmpeg
Registrare il desktop con FFmpeg

Registrare il desktop con FFmpeg

Ogni tanto scopro delle nuove cose che si possono fare con FFmpeg, e rimango sempre positivamente impressionato. Ad esempio, ho scoperto che è possibile registrare il dekstop; screencast in pratica. Vediamo qualche esempio su Linux, Windows e macOS. Considerate, però, che io l'ho testato solo su Linux.

Javascript - AJAX - Effettuare richieste AJAX con Vue.js
Effettuare richieste AJAX con Vue.js

Effettuare richieste AJAX con Vue.js

Specifichiamo cha parliamo della versione di 2 di Vue.js. Lo sto cominciando a vedere adesso, quindi non so quante differenze ci siano con la versione 1. Comunque, vediamo come effettuare richieste AJAX e di conseguenza riepire una tabella.

Java - JavaFX ListView con oggetti custom
JavaFX ListView con oggetti custom

JavaFX ListView con oggetti custom

Per certi versi, JavaFX, mi ricorda un pò la programmazione Android. E' tutto molto diverso da come si fa in Swing. Vediamo un esempio di ListView con oggetti custom.

Javascript - AJAX - Inviare messaggi a tutti i client in Socket.io
Inviare messaggi a tutti i client in Socket.io

Inviare messaggi a tutti i client in Socket.io

Socket.io ha la possibilità di inviare messaggi a tutti i client connessi (broadcasting) in maniera veramente easy. Penso sia più facile visualizzare un esempio; partiamo dal Javascript: var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); var clients = 0; app.get('/', function (req, res) { res.sendFile('index.html', {root: __dirname}); }); io.on('connection', function (socket) { clients++; io.sockets.emit('broadcast', {description: clients + ' clients connected!'}); socket.on('disconnect', function () { clients--; io.sockets.emit('broadcast', {description: clients + ' clients connected!'}); }); }); http.listen(3000, function () { console.log('listening on *:3000'); });

Kotlin - Cancellare file in Kotlin
Cancellare file in Kotlin

Cancellare file in Kotlin

La cancellazione dei file in Kotlin, consiste in una riga di codice usando la funzione File.delete. Questa funzione non cancella le directories, e ritorna true/false a seconda che l'operazione è avvenuta con successo o no.

Database & Server - Splittare una stringa in Oracle
Splittare una stringa in Oracle

Splittare una stringa in Oracle

Sul mio db Oracle, ho una funzione (non fatta da me) che restituisce i valori in questo modo: '49;50;30;0;0;0;0;0;' Di tutto ciò, mi serve prendere solo il terzo valore; quindi dovrei spezzare la stringa in corrispondenza del punto e virgola, e poi prendere il terzo pezzo.

Javascript - AJAX - Intercettare gli eventi in Socket.io
Intercettare gli eventi in Socket.io

Intercettare gli eventi in Socket.io

Con Socket.io è possibile intercettare / emettere eventi, ed agire di conseguenza. Ne vediamo tre esempi. Il primo riguarda l'evento message, che è un evento built-in del framework: var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); app.get('/', function (req, res) { res.sendFile('index.html', {root: __dirname}); }); io.on('connection', function (socket) { console.log('A user connected'); setTimeout(function () { socket.send("Messaggio dopo 3 secondi"); }, 3000); socket.on('disconnect', function () { console.log('A user disconnected'); }); }); http.listen(3000, function () { console.log('listening on *:3000'); });

PHP - Impostare il formato celle in PHPExcel
Impostare il formato celle in PHPExcel

Impostare il formato celle in PHPExcel

Anche se uso da tanto PHPExcel (varie versioni comprese), ancora oggi ogni tanto mi esce qualcosa che non ho mai fatto. Ad esempio impostare il formato di una cella. Nel mio caso, dovevo forzare la cella al formato numerico.

Java - Riempire una TableView da databse in JavaFX
Riempire una TableView da databse in JavaFX

Riempire una TableView da databse in JavaFX

Ho deciso di eseguire il porting di un mio vecchio programma scritto in Java, da Swing a JavaFX. Uno dei problemi che ho riscontrato è come rimpire una TableView da database. Ovviamente le tabelle funzionano in maniera completamente diverse da Swing. Qua vediamo proprio questo; però tenete in considerazione che: come db uso SQLite (anche se cambia poco) non spiegherò per filo e per segno come usare e installare il driver JDBC per SQLite; vi posterò direttamente il codice Cominciamo dal db; la tabella che interroghiamo ha questa struttura: 0|id|INTEGER|1||1 1|title|VARCHAR|1||0 2|released|VARCHAR|0||0 3|genre|VARCHAR|0||0 4|director|VARCHAR|0||0 5|writer|VARCHAR|0||0 6|actors|VARCHAR|0||0 7|plot|VARCHAR|0||0 8|poster|VARCHAR|0||0 9|runtime|VARCHAR|0||0 10|imdb_id|VARCHAR|0||0

Linux - Termsaver: uno screensaver per il terminale in Linux
Termsaver: uno screensaver per il terminale in Linux

Termsaver: uno screensaver per il terminale in Linux

Chi ha detto che il nostro cari terminale su Linux non può avere un salvaschermo quando ci alziamo dalla nostra postazione? Nessuno, anche perchè in effetti esiste: termsaver! Per installarlo su Debian e Ubuntu: # aptitude install termsaver

Javascript - AJAX - Introduzione a Socket.io
Introduzione a Socket.io

Introduzione a Socket.io

Socket.io è un framework per Node.js per la costruzione di applicazioni realtime. Il suo uso di base non è molto difficile, ed è tutto in linea con il modo di programmare di Node.js. Oggi vediamo un'introduzione. Iniziamo con il creare il progetto: $ mkdir TestSocket $ cd TestSocket $ npm init

Database & Server - Cancellare un utente in MariaDB
Cancellare un utente in MariaDB

Cancellare un utente in MariaDB

Facendo dei test, mi sono ritrovato con tutti questi utenti di root nella mia installazione di MariaDB (valido anche per MySQL): root % No USAGE root 127.0.0.1 Sì  ALL PRIVILEGES   root ::1 Sì  ALL PRIVILEGES root localhost Sì  ALL PRIVILEGES

Kotlin - Leggere file in Kotlin
Leggere file in Kotlin

Leggere file in Kotlin

Per leggre un file in Kotlin, abbiamo diverse modalità, tutte con pochissime righe di codice. Vi mostro tre modi.

Ruby - Programmazione multi-threading in Ruby
Programmazione multi-threading in Ruby

Programmazione multi-threading in Ruby

Utilizzare i thread in Ruby non è particolarmente difficile. Oggi vediamo qualche esempio basico da cui partire.

Java - Creare un client HTTP in Java con Unirest
Creare un client HTTP in Java con Unirest

Creare un client HTTP in Java con Unirest

Unirest è un libreria per creare richieste HTTP in maniera molto semplice e veloce. E' disponibile per diversi linguaggi, ed oggi vedremo un esempio con Java. Se usate Maven, aggiungete questa dipendenza al vostro pom.xml: <dependency> <groupId>com.mashape.unirest</groupId> <artifactId>unirest-java</artifactId> <version>1.4.9</version> </dependency>

Java - Identificare lo Stage corrente in JavaFX
Identificare lo Stage corrente in JavaFX

Identificare lo Stage corrente in JavaFX

JavaFX ha una struttura un pò particolare quando si parla di layout e controller. Quando siamo appunto nel controller, di default, non sappiamo nulla dello Stage corrente. E' possibile recepirlo in diversi modi.

Windows - Abilitare il tema dark in Windows 10 automaticamente
Abilitare il tema dark in Windows 10 automaticamente

Abilitare il tema dark in Windows 10 automaticamente

Windows 10 arriva con la modalità tema light e dark. Per cambiare tema, non c'è bisogno dei permessi avanzati, in quanto si tratta di impostazioni grafiche desktop. Ma se volessimo fare in modo che Windows applichi il tema dark da una certa ora in poi (cosa consigliata per la vista)? Possiamo farlo creando dei file da lanciare da PowerShell.

Javascript - AJAX - Costruire siti single-page con Mithril
Costruire siti single-page con Mithril

Costruire siti single-page con Mithril

Mithril è un framework per Javascript per la costruzione di siti single-page. E' un framework completo e al contempo molto leggero. Vediamo qualche esempio, cominciando dal classico Hello world: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Mithril</title> </head> <body> <script src="//unpkg.com/mithril/mithril.js"></script> <script> var root = document.body; m.render(root, "Hello world"); </script> </body> </html>

Java - Richiamare componente da controller in JavaFX
Richiamare componente da controller in JavaFX

Richiamare componente da controller in JavaFX

Sto iniziando a dare un'occhiata a JavaFX, visto che dovrebbe essere il toolkit grafico del futuro in Java. Un primo problema che ho riscontrato è come richiamare un componente FXML dal controller. Anche banalmente per cambiare il testo (giusto per fare un esempio).

Kotlin - Come creare file in Kotlin
Come creare file in Kotlin

Come creare file in Kotlin

Per creare file in Kotlin, abbiamo più "metodi", usando praticamente gli stessi oggetti di Java. Vediamo tre esempi usando: writeText bufferedWriter printWriter In tutti e tre i casi useremo use, per fare in modo che il blocco di codice si auto-chiuda e liberi risorse automaticamente, anche nel caso di eventuali eccezioni.

Linux - Gestire i preferiti da terminale con Linux e Buku
Gestire i preferiti da terminale con Linux e Buku

Gestire i preferiti da terminale con Linux e Buku

Per gli amanti della riga di comando e di Linux, ho trovato un bookmark manager da usare da terminale: Buku! Per installarlo su Archlinux dobbiamo usare AUR: $ yaourt -Sy buku

Python - Creare un client HTTP in Python con Unirest
Creare un client HTTP in Python con Unirest

Creare un client HTTP in Python con Unirest

Unirest è un libreria per creare richieste HTTP in maniera molto semplice e veloce. E' disponibile per diversi linguaggi, ed oggi vedremo un esempio con Python. Da quanto ho capito, al momento la libreria è compatabile solo con Python 2. Prima di tutto, installiamo la libreria con pip: # pip install unirest

Kotlin - Usare gli switch in Kotlin
Usare gli switch in Kotlin

Usare gli switch in Kotlin

In Kotlin, in verità, l'istruzione switch viene sostituita dall'istruzione when. Ma non è l'unica differenza che troviamo al riguardo rispetto a Java.

Mondo Web - Creare sondaggi online
Creare sondaggi online

Creare sondaggi online

Per determinate tipi di attività, può essere interessante creare dei sondaggi per raccogliere feedback dagli utenti. Esistono diversi servizi online per crearli; vediamone qualcuno. JD ESURVEY Applicazione web basata su Java con supporto al mobile friendly. Al giorno d'oggi è un requisito quasi fondamentale. Permette di creare sondaggi anche di una certa complessità.

C - C++ - Accettare solo numeri in una QLineEdit
Accettare solo numeri in una QLineEdit

Accettare solo numeri in una QLineEdit

Qt mette a disposizione diversi validatori da usare anche nelle caselle di input. Ad esempio, in una QLineEdit, dovevo impostare l'accettazione di solo numeri. Quindi, se si scrive una lettera, questa non deve essere scritta nella casella di testo. Per fare questo possiamo usare QIntValidator.

Linux - Come trovare il processo che consuma più CPU in Linux
Come trovare il processo che consuma più CPU in Linux

Come trovare il processo che consuma più CPU in Linux

Per trovare il processo che consuma più CPU in Linux, abbiamo diverse alternative. Già usando semplicemente HTOP possiamo ordinare i processi come vogliamo. Se invece vogliamo usare il più "classico" TOP, possiamo fare cosi: $ top -o +%CPU

Java Android - Schedulare attività in Android con JobScheduler
Schedulare attività in Android con JobScheduler

Schedulare attività in Android con JobScheduler

Con le API 21, in Android sono state introdotte delle API per schedulare le attività. Oggi ne vediamo un esempio basico, che può essere un punto di partenza.

Software - Eseguire ricerche per nome con PIP
Eseguire ricerche per nome con PIP

Eseguire ricerche per nome con PIP

PIP è un package manager per Python (sia versione 2 che 3) edè molto utilizzato. Solo che la ricerca delle librerie è un pò "strana" e a volte da risultati non proprio precisi. Ad esempio: $ pip search PIL

Linux - Recuperare i dati da un hard disk danneggiato con Linux
Recuperare i dati da un hard disk danneggiato con Linux

Recuperare i dati da un hard disk danneggiato con Linux

Poco tempo fa, mi è capitato di avere sotto mano due hard disk danneggiati, e di dover (cercare) di recuperare i dati. Se siamo su Linux, abbiamo molteplici alternative. Quella che mi ha funzionato meglio è stata usando ddrescue.

Python - Invertire una stringa in Python
Invertire una stringa in Python

Invertire una stringa in Python

Per invertire le stringhe, Python non mette a disposizione nessuna funzione. Però è comunque molto facile, utilizzando la "sintassi slice". In sostanza è come se trattassimo la stringa come una lista.

Kotlin - Esempi di funzioni in Kotlin
Esempi di funzioni in Kotlin

Esempi di funzioni in Kotlin

Continuiamo la nostra introduzione in Kotlin; oggi vediamo qualche esempio di funzione. Prima di tutto, dobbiamo dire che non esistono funzioni / metodi statici; però Kotlin permette di creare delle funzioni anche all'inizio del file, fuori dalla classe. E, da quanto ho capito, le funzioni così scritte assumo un significato simile allo static.

Kotlin - Utilizzare i costruttori in Kotlin
Utilizzare i costruttori in Kotlin

Utilizzare i costruttori in Kotlin

Come anche in altri linguaggi, anche Kotlin permette di creare e usare più costruttori. Questo un esempio di costruttore primario: class Person constructor(var name: String, var email: String?) Se non ci sono altri metodi / costruttori, è anche possibile omettere le parentesi graffe.

Software - Impostare l'interfaccia Ribbon in LibreOffice
Impostare l'interfaccia Ribbon in LibreOffice

Impostare l'interfaccia Ribbon in LibreOffice

Dalla versione 5.3 è possibile usare l'interfaccia Ribbon anche in LibreOffice. La Ribbon UI, per chi non lo sapesse, è quella impostata in MS Office dalla versione 2007. Su questa UI ognuno dice la sua, ma vale la pena provarla.

Linux - Monitorare la CPU su Linux con CoreFreq
Monitorare la CPU su Linux con CoreFreq

Monitorare la CPU su Linux con CoreFreq

CoreFreq è un ottimo tool per monitorare la CPU su Linux, ma non è proprio di facile utilizzo. Consiste in: un modulo per il kernel un demone un programma da CLI Inoltre richiede l'installazione dei Development Tools.

Kotlin - Introduzione a Kotlin
Introduzione a Kotlin

Introduzione a Kotlin

Visto che Google introdurrà a breve Kotlin in Android Studio per lo sviluppo su Android, ho pensato fosse giunto il momento di iniziare a studiarlo un pò. Kotlin è uno dei vari linguaggi che si basa sulla JVM, ed è quindi compatibile con Java, ed è in grado di usare le sue librerie. Se volete usare un IDE, vi consiglio Intellij IDEA; ma anche Netbeans ed Eclipse sono compatibili.

PHP - Criptare le password in PHP
Criptare le password in PHP

Criptare le password in PHP

Per salvare l'hash delle password in PHP, e per controllarne la validità in fase di login, ero solito usare solo la funzione sha1. Ma ho scoperto che c'è un modo più sicuro, usando password_hash e password_verify.

Network & Sniffing - Visualizzare le statistiche di curl con httpstat
Visualizzare le statistiche di curl con httpstat

Visualizzare le statistiche di curl con httpstat

Ho trovato questo script Python, che in pratica ci permette di visualizzare in maniera leggibile le statistiche delle richieste fatte con curl: httpstat! Se siamo su Debian, possiamo procedere ad installarlo così: # aptitude install curl python3-pip

Python - L'ereditarietà in Python
L'ereditarietà in Python

L'ereditarietà in Python

L'ereditarietà in Python è leggermente diversa rispetto ad altri linguaggi. Non si usano parole chiave tipo extends, ma si imposta come se fosse un parametro di una funzione. Supponiamo di avere la generica classe Persona: class Persona: nome = '' cognome = '' def __init__(self, nome, cognome): self.nome = nome self.cognome = cognome def getNome(self): print(self.nome) def getCognome(self): print(self.cognome)

Linux - Settare la timezone in Linux
Settare la timezone in Linux

Settare la timezone in Linux

Per gestire la timezone (TZ) in Linux, possiamo usare un comando disponibile con systemd: timedatectl! Per i sistemi che non usano systemd, bisognerà procedere alla vecchia maniera.

HTML - CSS - Utilizzare i manifest nella web app
Utilizzare i manifest nella web app

Utilizzare i manifest nella web app

Ho scoperto che nelle applicazioni web è possibile utilizzare un file manifest, che da determinate informazioni quando si "installano" nelle homescreen dei dispositivi mobili. E' una tecnologia non ancora stabile e pienamente suppoortata, ma sarebbe già il caso di aggiungerla ai nostri siti.

Java - Introduzione a Spark
Introduzione a Spark

Introduzione a Spark

Da non confondere con Apache Spark, Spark è un frameowrk per applicazioni web per Java. L'ho trovato, almeno inizialmente, abbastanza semplice da usare, e anche abbastanza familiare se avete già usato Node.js ed Express. Inoltre, di default, utilizza una versione embedded di Jetty, e quindi non ci sono server da configurare (ma potete comunque usarne un altro se volete). Iniziamo a vedere qualcosa; useremo Maven, e va bene qualsiasi IDE (io uso Netbeans).

Javascript - AJAX - Creare un menu in Electron
Creare un menu in Electron

Creare un menu in Electron

Le applicazioni create con Electron, arrivano già con un menu "pre-confezionato". Ovviamente è possibile crearne uno personalizzato. Vediamo come crearne uno (se volete avere una base su Electron, leggete questo articolo): const {app, BrowserWindow, Menu, dialog} = require('electron'); const path = require('path'); const url = require('url'); let win; const template = [ { label: 'File', submenu: [ { label: 'Apri', click() { dialog.showOpenDialog({properties: [ 'openFile', 'openDirectory', 'multiSelections' ]} ) } } ] }, { label: 'Edit', submenu: [ {role: 'undo'}, {role: 'redo'}, {type: 'separator'}, {role: 'cut'}, {role: 'copy'}, {role: 'paste'}, {role: 'pasteandmatchstyle'}, {role: 'delete'}, {role: 'selectall'} ] }, { label: 'View', submenu: [ {role: 'reload'}, {role: 'forcereload'}, {role: 'toggledevtools'}, {type: 'separator'}, {role: 'resetzoom'}, {role: 'zoomin'}, {role: 'zoomout'}, {type: 'separator'}, {role: 'togglefullscreen'} ] }, { role: 'window', submenu: [ {role: 'minimize'}, {role: 'close'} ] }, { role: 'help', submenu: [ { label: 'My Blog', click() { require('electron').shell.openExternal('https://www.mattepuffo.com') } } ] } ]; if (process.platform === 'darwin') { template.unshift({ label: app.getName(), submenu: [ {role: 'about'}, {type: 'separator'}, {role: 'services', submenu: []}, {type: 'separator'}, {role: 'hide'}, {role: 'hideothers'}, {role: 'unhide'}, {type: 'separator'}, {role: 'quit'} ] }); // Edit menu template[1].submenu.push( {type: 'separator'}, { label: 'Speech', submenu: [ {role: 'startspeaking'}, {role: 'stopspeaking'} ] } ); // Window menu template[3].submenu = [ {role: 'close'}, {role: 'minimize'}, {role: 'zoom'}, {type: 'separator'}, {role: 'front'} ]; } const menu = Menu.buildFromTemplate(template); Menu.setApplicationMenu(menu); function createWindow() { win = new BrowserWindow({width: 800, height: 600}); win.loadURL(url.format({ pathname: path.join(__dirname, 'index.html'), protocol: 'file:', slashes: true })); // win.webContents.openDevTools(); win.on('closed', () => { win = null; }); } app.on('ready', createWindow); app.on('window-all-closed', () => { if (process.platform !== 'darwin') { app.quit(); } }); app.on('activate', () => { if (win === null) { createWindow(); } }); Attivate e disattivate il menu per vedere le differenze con quello base. Ovviamente potete modificarlo a vostro piacimento. Enjoy!

Linux - Gestire gli exiftool su Linux
Gestire gli exiftool su Linux

Gestire gli exiftool su Linux

I visualizzatori immagini hanno già la possibilità di visualizzare i dati EXIF delle immagini. Ma su Linux esiste anche un ottimo tool da riga di comando, che ci permette anche di modificarli. Per installarlo su Archlinux: # pacman -S perl-image-exiftool

Javascript - AJAX - Introduzione a Electron
Introduzione a Electron

Introduzione a Electron

Electron è un framework, basato su Node.js, per la creazione di applicazione desktop usando Javascript e HTML. Se pensate che su questo framework si basano programmi del callibro di Atom.io, Visual Studio Code e GitHub Desktop, vi renderete conto delle sue potenzialità. Oggi vediamo un'introduzione basica. Prima di tutto installiamo Electron (conviene farlo a livello globale): # npm -g install electron

Linux - Avviare le ISO Linux direttamente da hard disk
Avviare le ISO Linux direttamente da hard disk

Avviare le ISO Linux direttamente da hard disk

Siamo abituati ad avviare le distro Linux da CD o USB. Ma in verità con GRUB2 è possibile avviarle direttamente da hard disk. Prima di tutto scarichiamo la ISO che ci interessa (Ubuntu ad esempio, è sempre buona per fare questi test).

C# - Asp.NET - Ridimensionare immagini in C#
Ridimensionare immagini in C#

Ridimensionare immagini in C#

Per effettuare un ridimensionamento delle immagini in C#, non abbiamo bisogno di librerie esterne (anche se sono sicuro che ce ne stanno di ottime). Ci basta usare il namespace System.Drawing. Se siete dentro ad un progetto console, dovete aggiungere il reference.

Network & Sniffing - Monitorare la rete con ngrep su Linux
Monitorare la rete con ngrep su Linux

Monitorare la rete con ngrep su Linux

Possiamo considerare ngrep come una estensione di grep per monitorare il traffico di rete. Dovrebbe essere presente nei repo di praticamente tutte le distro; per installarlo su Archlinux: # pacman -Sy ngrep Ricordate che bisogna lanciarlo con privilegi elevati.

Javascript - AJAX - Utilizzare le mappe in Javascript
Utilizzare le mappe in Javascript

Utilizzare le mappe in Javascript

L'oggetto Map, è un oggetto composto da record key/value, ed esiste in quasi tutti i linguaggi. In Javascript è simile a Object, ma con alcune differenze. Di cui, una delle più importanti, è che in Map è possibile usare valori primitivi, oggetti e funzioni, sia come chiave che come valore. Inoltre dispone di alcuni metodi specifici che Object non ha.

C - C++ - Intercettare il doppio click su una QTableWidget
Intercettare il doppio click su una QTableWidget

Intercettare il doppio click su una QTableWidget

Oggi vediamo come intercettare il doppio click su una QTableWidget. Parto dal presupposto che la QTableWidget sia già aggiunta alla finestra, e che in generale abbiato già creato la vostra GUI.

Javascript - AJAX - Disegnare su Google Maps con Javascript
Disegnare su Google Maps con Javascript

Disegnare su Google Maps con Javascript

Spulciandomi la documentazione ufficiale, ho visto che è possibile disegnare su Google Maps includendo nelle nostre pagina una libreria apposita: drawing! Viene inclusa direttamente con Google Maps, passandolo come parametro: <script src="https://maps.googleapis.com/maps/api/js?libraries=drawing"> </script> Più sotto vi ho messo un esempio di pagina tutto incluso: richiamare la libreria attivare il disegno di: circle rectangle polygon polyline marker settare alcune opzioni generali settare opzioni specifiche per un tipo di disegno (il rettangolo in questo caso) intercettare tre eventi: fine disegno circle fine disegno rectangle fine disegno in generale

Mondo Web - Flightright: servizio web per la richiesta di rimborso aereo
Flightright: servizio web per la richiesta di rimborso aereo

Flightright: servizio web per la richiesta di rimborso aereo

Qualche mese fa, mi è stato cancellato un volo per una città europea. Il volo è stato cancellato per guasto, ed era l'ultimo della giornata per quella compagnia aerea (Vueling) e quella destinazione. Ovviamente, vista la fretta, ne ho comprato un altro low cost e sono partito lo stesso.

Javascript - AJAX - Generare PDF in Javascript con pdfmake
Generare PDF in Javascript con pdfmake

Generare PDF in Javascript con pdfmake

Ho trovato una libreria che permette di generare PDF direttamente in Javascript: pdfmake! Potete scaricarla da GitHub. Includete nella vostra pagina questi due file: <script src="pdfmake.min.js"></script> <script src="vfs_fonts.js"></script> Bene, cominciamo con qualche esempio.

Linux - Unire file PDF in Linux con PDFtk
Unire file PDF in Linux con PDFtk

Unire file PDF in Linux con PDFtk

PDFtk lo abbiamo già visto varie volte: ottimo programma che permette di manipolare i file PDF in Linux. Oggi vediamo come unire più file in uno unico.

Python - Come risolvere l'errore 'If this fails your Python may not be configured for Tk' in Python
Come risolvere l'errore 'If this fails your Python may not be configured for Tk' in Python

Come risolvere l'errore 'If this fails your Python may not be configured for Tk' in Python

Ho iniziato a giocare un pò con Tkinter, il package per la costruzione di GUI di default di Python. In sostanza Tkinter viene già installato con Python (entrambe le versioni).

Windows - Come risolvere l'errore 'Memoria o spazio su disco insufficiente' su Excel
Come risolvere l'errore 'Memoria o spazio su disco insufficiente' su Excel

Come risolvere l'errore 'Memoria o spazio su disco insufficiente' su Excel

L'altro giorno, sul mio pc con 8 GB di RAM, mi è comparso questo errore aprendo un file Excel: Memoria o spazio su disco insufficiente. Impossibile aprire o salvare ulteriori documenti Ovviamente non avevo finito la RAM, e il disco era stravuoto, e la CPU a posto. Si tratta di una spece di bug che si può risolvere facilmente.

C# - Asp.NET - Creare un client HTTP in C# con Unirest
Creare un client HTTP in C# con Unirest

Creare un client HTTP in C# con Unirest

Unirest è un libreria per creare richieste HTTP in maniera molto semplice e veloce. E' disponibile per diversi linguaggi, ed oggi vedremo un esempio con C#. Per installare la libreria potete usare Nuget.

Linux - Installare le Virtualbox Guest Additions in Fedora
Installare le Virtualbox Guest Additions in Fedora

Installare le Virtualbox Guest Additions in Fedora

Ho installato Fedora in VirtualBox, e come ogni dopo installazione, sono andato ad installare le Guest Additions. Solo che non riuscivo, perchè ottenevo una marea di errori abbastanza incomprensibili. Un esempio lo trovate a questo link.

Javascript - AJAX - Introduzione ad Hapi.js
Introduzione ad Hapi.js

Introduzione ad Hapi.js

Una delle cose che mi piace di più di Node.js, è che ci stanno tantissime librerie / framework disponibili! Uno di questi, che trovo molto interessante, è Hapi.js! Vediamo come creare un esempio per fare qualche test.

C - C++ - Impostare una immagine da url in una QLabel
Impostare una immagine da url in una QLabel

Impostare una immagine da url in una QLabel

In una QLabel, dovevo visualizzare una immagine da url. Dove l'url è composto da una parte fissa, e una parte dinamica (che corrisponde all'immagine vera e propria). Vi propongo il QWidget per intero.

News - Omaggio a Robert Miles
Omaggio a Robert Miles

Omaggio a Robert Miles

Children è stata sicuramente una delle canzoni del mio tempo. Ci sono praticamente cresciuto, e mi sembrava doveroso omaggiare il mitico Robert Miles. Sono sicuro che la tua canzone ci accompagnerà per molti anni ancora!  

Software - Introduzione ad Apache Solr
Introduzione ad Apache Solr

Introduzione ad Apache Solr

Da Wikipedia: Apache Solr (pronunciato come /soʊlə/,/soʊlər/, soh-lər) è una piattaforma di ricerca open source del progetto Apache Lucene, in origine creato nel 2004 da Yonik Seeley alla CNET Networks. La sua caratteristica principale è la presenza di ricerca full text, hit highlighting, faceted search, raggruppamento dinamico, integrazione con le basi di dati, gestione di documenti "ricchi" (come documenti word e pdf). Fornisce una ricerca distribuita e la replicazione dell'indice. Solr è altamente scalabile. Visto che di base non è difficile da installare, configurare ed usare, ho deciso di dargli un'occhiata. Inoltre, da quanto ho capito, è anche possibile connetterlo a vari database, oltre al fatto che crea già un servizio REST completo, e questo lo rende ancora più interessante.

Python - Scaricare file da FTP con Pyhon
Scaricare file da FTP con Pyhon

Scaricare file da FTP con Pyhon

Specificando che useremo Python 3, ma anche che non dovrebbe cambiare molto rispetto alla 2, vediamo come scaricare un file tramite FTP. Non useremo librerie esterne, ma useremo ftplib.

Network & Sniffing - Identificare i device connessi alla rete con arp-scan
Identificare i device connessi alla rete con arp-scan

Identificare i device connessi alla rete con arp-scan

Ho trovato un utile programma che scannerizza la rete in cerca di apparati connessi, compresi quelli nascosti: arp-scan! Dovrebbe essere compreso nei repo delle maggiori distro; su Archlinux: # pacman -Sy arp-scan La cosa bella di questo comando, è che identifica tutti gli apparati connessi, anche quelli che hanno un firewall configurato per rimanere nascosti.

Linux - Eliminare pagine dai PDF su Linux con PDFtk
Eliminare pagine dai PDF su Linux con PDFtk

Eliminare pagine dai PDF su Linux con PDFtk

Abbiamo già visto PDFtk, ottimo programma per la minpolazione dei PDF su Linux. Oggi vediamo come usarlo per eliminare delle pagine.

Linux - Trasformare testo da maiuscolo a minuscolo e vicersa in Linux con Geany
Trasformare testo da maiuscolo a minuscolo e vicersa in Linux con Geany

Trasformare testo da maiuscolo a minuscolo e vicersa in Linux con Geany

Geany è uno degli editor più utilizzati in ambito Linux. E' più che un editor di testo, in quanto può essere tranquillamente utilizzato per la programmazione nei linguaggi più disparati.

Ruby - Invertire una stringa in Ruby
Invertire una stringa in Ruby

Invertire una stringa in Ruby

Come dico sempre, fare le cose in Ruby richiede pochissimo codice. Ad esempio, se volessimo invertire una stringa, possiamo farlo in 4 righe di codice (stampa a video compresi).

Windows - Identificare se Windows 10 è un aggiornamento o no
Identificare se Windows 10 è un aggiornamento o no

Identificare se Windows 10 è un aggiornamento o no

Come sappiamo, Windows 10 è stato per un anno un aggiornamento gratuito per gli utenti di Windows 7 e Windows 8. Ad oggi, anche se non gratuitamente, è comunque possibile aggiornare a Windows 10. Volendo è possibile sapere se l'installazione è un aggiornamento o meno. Ed in caso di aggiornamento, è anche possibile sapere da quale versione.

Java - Scaricare un file da internet in Java
Scaricare un file da internet in Java

Scaricare un file da internet in Java

Vi propongo due metodi per scaricare un file da internet in Java. Il primo caso è usando le Java NIO, e quindi non servono librerie esterne: public class Main { public static void main(String[] args) { String remoteFile = "ftp://ftp.arin.net/pub/stats/arin/delegated-arin-extended-latest"; String localFile = "/home/matte/Desktop/file.txt"; try { URL website = new URL(remoteFile); try ( ReadableByteChannel rbc = Channels.newChannel(website.openStream()); FileOutputStream fos = new FileOutputStream(localFile)) { fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); } } catch (IOException ex) { System.out.println(ex.getMessage()); } } }

Apple - Nascondere le icone nella Menu Bar in macOS
Nascondere le icone nella Menu Bar in macOS

Nascondere le icone nella Menu Bar in macOS

La Menu Bar di macOS, per certi versi, può essere paragonata alla barra delle applicazioni di Windows. Anche questa, ad esempio, ha sulla destra una sorta di "system tray" con varie icone per accedere a diverse impostazioni (ad esempio alla batteria o alla rete). Se diventano troppe, può essere fastidioso, e forse sarebbe meglio fare in modo che si "nascondano" (come succede di default anche in Windows).

Python - Controllare la connessione a internet con Python
Controllare la connessione a internet con Python

Controllare la connessione a internet con Python

Per controllare la connessione a internet con Python, non abbiamo un modulo specifico. Dobbiamo effettuare una richiesta ad un url, e verificare che sia andata a buon fine. Per farlo possiamo usare il modulo urllib. Specifico che siamo in Python 3.

Database & Server - Tabelle pivot con MariaDB
Tabelle pivot con MariaDB

Tabelle pivot con MariaDB

Quando si parla di database e query, per tabelle pivot si intende traslare i dati ed incolonnarli in maniera differente dallo standard della tabella. In pratica, facendo un esempio reale, ho questa query: SELECT IF (mov_tipo = "E", "ENTATE", "USCITE") tipo, YEAR(mov_data) anno, SUM(mov_valore) sum_val FROM movimenti WHERE mov_utente_fk = 1 GROUP BY tipo, anno ORDER BY anno DESC, tipo

Java - Usare Font Awesome in Primefaces
Usare Font Awesome in Primefaces

Usare Font Awesome in Primefaces

PrimeFaces è praticamente costruito su jQuery UI, e quindi può usare le sue icone standard. Ma se vi piacciono di più quelle di Font Awesome, come a me, potete usare quelle attivandole.

Javascript - AJAX - Creare un player video e audio in Javascript con Plyr
Creare un player video e audio in Javascript con Plyr

Creare un player video e audio in Javascript con Plyr

Plyr è un'ottima e leggera libreria per Javascript per la creazione di un player audio / video. Non ha dipendenze, in quanto è scritto in vanilla Javascript. Ed è possibile visualizzare / ascoltare file presenti sul server, o usare Youtube e Vimeo. Qui potete vederne una demo.

Linux - Trovare righe duplicate in Linux con uniq
Trovare righe duplicate in Linux con uniq

Trovare righe duplicate in Linux con uniq

Dalla man page: uniq - report or omit repeated lines Quindi, attraverso questo comando, possiamo facilmente filtrare delle righe duplicate dentro ad un file. Supponiamo di avere un file di testo così: RIGARIGARIGA.RIGA BHO.RIGA.RIGA

Java - Utilizzare i template in PrimeFaces
Utilizzare i template in PrimeFaces

Utilizzare i template in PrimeFaces

Essendo PrimeFaces un framework basato su JSF, è possibile utilizzare il sistema dei template. Rispetto a JSF è leggermente diverso, e oggi ne vediamo un esempio.

Software - Inviare file su GitHub
Inviare file su GitHub

Inviare file su GitHub

Specifico che questi comandi li sto usando su Linux, e sinceramente non saprei su Windows e macOS. Su Linux, una volta installato il client git, possiamo eseguire questi comandi una volta che abbiamo fatto le modifiche appropriate.

Ruby - Controllare la connessione a internet con Ruby
Controllare la connessione a internet con Ruby

Controllare la connessione a internet con Ruby

Per controllare se il nostro pc è connesso a internet con Ruby, abbiamo diverse possibilità. Noi useremo il modulo resolv, che fa parte della libreria standard. In questo modo non dovremmo installare nient'altro.