PHP 7.4 – novità

PHP 7.4 è la prossima minor release di PHP 7. Sarà rilasciata alla General Availability a fine novembre 2019.

Si tratta di una minor release della versione 7, non ci aspettiamo quindi grosse novità. La versione PHP 8 sarà la prossima milestone che promette diverse rivoluzioni, in primis l’inclusione di JIT che incrementerà notevolmente le prestazioni di PHP.

Novità di PHP 7.4

Attualmente è già disponibile la beta 1 e ho già fatto diversi test. Il rilascio per la GA è previsto per il 28 nove,bre.

L’elenco completo di tutte le funzionalità della nuova versione è, come sempre, disponibile su php.net in questa pagina.

Le novità principali sono:

  • Core
    • Array Spread Operator
    • Arrow Function (closure) con implicit by-value scope binding
    • Coalesce Operator ??= (finalmente)
    • Type properties
    • WeakReferences (pecl-weakref non serve più)
    • Ritorno covariante
    • Parametro controvariante
  • Nuove funzionalità
  • Deprecazioni
    • cambio di precedenza degli operatori +, -, .
    • deprecato ternary operator con associzione a sinistra
    • FILTER_SANITIZE_MAGIC_QUOTES (usare FILTER_SANITIZE_ADD_SLASHES)
    • is_real() (usare is_float)
    • money_format() (usare NumberFormatter per formattare un numero come valuta)

I benchmark hanno già dimostrato come la versione 7 di PHP è nettamente più performante di tutte le altre versioni. Chi non lo ha fatto, dovrebbe fin da ora passare a PHP 7.x per ottenerne tutti i vantaggi.

Eventuale lavoro di migrazione del codice alla nuova versione, sarà ampiamente ripagato dal guadagno di prestazioni che si otterrà. Inoltre, si sarà già pronti per le succose novità di PHP 8!

Happy coding…

Protocol Oriented Programming (Swift)

Per alcuni il Protocol Oriented Programming è solo un reinventare l’acqua calda, asserendo che le classi astratte e le interfacce non sono nulla di nuovo o che si tratta semplicemente di una buzzword coniata da Apple.

In effetti è stata proprio Apple nel World Wide Developers Conference (WWDC) del 2015 a dire che con Swift hanno “realizzato il primo linguaggio protocol-oriented”. (tradotto testualmente da “we made the first protocol-oriented programming language”).

Cos’è il Protocol Oriented Programming? È davvero così rivoluzionario? Quali sono i suoi punti deboli?

Continua a leggere Protocol Oriented Programming (Swift)

Codable – JSON facile con Swift 4


JSON è ormai utilizzato diffusamente come formato di interscambio dati su internet. È molto comune per uno sviluppatore lavorare con JSON, specie se si tratta di app per smartphone.

In Swift 4 è stato introdotto il protocol Codable come parte del framework Foundation e serializzare o deserializzare un oggetto in JSON richiede tre linee di codice ;).

Le nuove API disponibili nel framework Foundation sono state presentate al WWDC 2017, vi consiglio di guardare il video a questo link: What’s New in Foundation (le API di cui sto parlando vengono illustrate dal minuto 23 in poi).

Vediamo come è diventato immediato e semplice convertire un oggetto in JSON e viceversa.

Continua a leggere Codable – JSON facile con Swift 4

Salvare le preferenze utente in iOS e macOS con Swift

Quando creiamo un’applicazione, spesso desideriamo salvare le preferenze dell’utente per riutilizzarle in esecuzioni successive. Ad esempio, possiamo voler salvare quali notifiche l’utente desidera ricevere, lo schema di colori e altre personalizzazioni. Alcune volte, può essere necessario salvare delle preferenze nascoste (o implicite).

Il framework Foundation rende disponibile la classe UserDefaults. Questa classe permette di accedere ad un “database” nel quale è possibile salvare delle coppie chiave-valore  che vengono persistite nelle diverse esecuzioni dell’app. Continua a leggere Salvare le preferenze utente in iOS e macOS con Swift

Mostrare notifiche all’utente in iOS 8+ Swift 3

Per mostrare un messaggio di alert all’utente è possibile usare la classe UIAlertController (da notare che UIAlertView è ormai considerata deprecata).  UIAlertController è disponibile da iOS 8+ nel framework UIKit. Permette di configurare il controller con le azioni e lo stile desiderato e poi di mostrarlo all’utente.

Sono disponibili due stili nella enum UIAlertControllerStyleactionSheetalert.

La differenza è ben chiara da questa immagine, a sinistra una notifica on stile alert a destra di tipo actionSheet.

Stili UIAlertController

È possibile anche aggiungere dei campi di testo per permettere l’inserimento di dati all’utente, oltre a diversi pulsanti (action).

L’utilizzo della classe è molto semplice in Swift: Continua a leggere Mostrare notifiche all’utente in iOS 8+ Swift 3

Dependency Inversion, Inversion of Control e Dependency Injection

Dependency Inversion, Inversion of Control e Dependency Injection

Nella programmazione a oggetti, si sente spesso parlare di Dependency Inversion e Inversion of Control (Principio di inversione delle Dipendenze,  Inversione del Controllo in italiano). Forse, i termini vi sono noti perché avete utilizzato Spring, ma sapete distinguerne le caratteristiche o comprenderne l’importanza?

In questo articolo cercherò di chiarire e introdurre i concetti che riguardano il Dependency Inversion, Inversion of Control e Dependency Injection. Continua a leggere Dependency Inversion, Inversion of Control e Dependency Injection

Asset Studio – app per Mac OS per generare asset di icone

Spesso mi capita di dover generare gli Asset di immagini per le icone di un app. Su Android Studio c’è un bellissimo tool integrato, ma su Mac OS non ho trovato nulla di utile o gratuito.

Allora ho deciso di crearlo da me 🙂

Il progetto è molto semplice ed è pubblicato su GitHub: https://github.com/2geek/AssetStudio

Screenshot di Asset Studio
App per la creazione di Asset di icone per Mac OS

Mi sono divertito e ho imparato qualcosa in più su Swift e Mac OS.

L’app permette di ridimensionare velocemente e con ottima qualità una immagini in immagini png. Le dimensioni degli asset sono modificabili nelle impostazioni.

Spero troviate utile questa semplice App. Per qualsiasi domanda potete contattarmi su GitHub o direttamente commentando l’articolo.

Test Driven Development – Primi passi

Eccoci al secondo articolo sul TDD. Spero di avervi incuriosito nell’introduzione precedente. É arrivata l’ora di passare agli aspetti pratici.

Premessa

La tecnica del TDD è applicabile con diversi linguaggi, tecnologie e Framework. In questa serie di articoli useremo principalmente il linguaggio di programmazione JAVA. Vedremo l’utilizzo del TDD con diversi Framework e paradigmi di programmazione (orientata agli oggetti, orientata agli aspetti).

Prerequisiti per la prima lezione

Conoscenza dei fondamenti di programmazione a oggetti.

Superficiale conoscenza del linguaggio di programmazione JAVA (versione 7).

Test Driven Development

Ciclo di sviluppo

Nel primo articolo, abbiamo indicato qual è il ciclo di sviluppo utilizzando la tecnica del TDD:

Ciclo sviluppo TDD
Ciclo sviluppo TDD

Continua a leggere Test Driven Development – Primi passi

Test Driven Development – Introduzione

 

Red Pill TDD

Questo articolo, sarà il primo di una lunga serie sul Test Driven Development (Sviluppo Guidato dai Test) o TDD.

Il processo di sviluppo TDD ha fatto il suo debutto circa 18 anni fa come parte integrante dell’Extreme Programming (XP) ed è ora adottato da tutti i team di sviluppo che fanno uso di metodi agili, e non solo. Io ne ho sentito parlare non più di 10 anni fa ed ero molto scettico al riguardo. All’inizio facevo delle prove per conto mio, mai in applicazioni che avrei dovuto sviluppare per lavoro. Prima il mio approccio era: analisi su carta, sviluppo, test completo, debug, correzione, test, analisi, debug, sbattimento di testa, debug, correzione, sviluppo, … e così via. Producendo software per soldi (ovvero per lavoro), non pensavo ci fosse tempo per scrivere degli Unit Test o, addirittura, partire dal test!

Adesso non rilascio una classe se prima non ci sono degli Unit Test che la coprono (torneremo in seguito sul Code Coverage) e, addirittura, non scrivo codice se prima non c’è un test che fallisce.

Ok per i test, ma non scrivere codice se non c’è un test che fallisce? Ma che significa?

Continua a leggere Test Driven Development – Introduzione