Visualizzazione post con etichetta Delphi. Mostra tutti i post
Visualizzazione post con etichetta Delphi. Mostra tutti i post

giovedì 4 giugno 2020

Italian Delphi Day e 10.4 Sydney

Italian Delphi Day 2020

Dopo lo strepitoso successo dei webinar di Delphi & Dintorni, adesso è il turno del Delphi Day  2020 edizione digitale!


12 sessioni tecniche gratuite tutte su Delphi divise in 3 giornate per darti la possibilità (anche dal lavoro) di seguirle comodamente, ricordati solo che, diversamente dagli altri anni, ti devi iscrivere alle singole sessioni che vorrai seguire. La quarta giornata è invece un incontro virtuale ma, assolutamente libero, tra tutti gli speaker e i partecipanti alla conferenza!

Le sessioni saranno fruibili da un client di Zoom scaricabile gratuitamente per il tuo sistema operativo


Delphi 10.4 Sydney


Con la nuova versione di Delphi (C++ Builder, RAD Studio) appena uscita e ricca di novità (puoi già scaricarla ed installarla), puoi iscriverti alle sessioni di Marco Cantù al Delphi Day 2020 e ascoltare dalle parole del Product Manager di Delphi tuttè le novità della nuova versione in 2 sessioni completamente tecniche e no marketing!

Nella prima sessione scoprirete le novità della versione, dal nuovo Language Server Protocol ai Custom Managed Records, dalla VCL a FMX per Windows e Mobile, per finire con le novità di installazione, IDE e GetIt.

La seconda sessione sarà concentrata sulla VCL che continua ad essere la migliore libreria client per Windows 10, con un supporto ancora esteso per monitor High-DPI e ulteriori integrazioni con i componenti del sistema operativo come il motore di Edge. Dalle API a WInRT, dallo Store al formato APPX, da ImageCollection a VirtualImage sono tante le novita' recenti che potremo esplorare in dettaglio.



Che dire quindi, iscrivetevi subito e... buona visione!



Paolo Rossi
Wintech Italia Srl

martedì 11 dicembre 2018

Da HTML a PDF con WkHtmlToX

Delphi WkHtmlToX Library

In un progetto su cui sto lavorando da qualche tempo avevo bisogno di trasformare file HTML in PDF. Cercando un po’ in giro mi sono imbattuto in  WkHtmlToPdf. WkHtmlToPDF e WkHtmlToImage sono due tool open source (LGPLv3.0) che permettono, tramite il rendering engine WebKit, di trasformare delle pagine HTML in PDF o immagini.

Scaricando il software si trovano sia i due tool a linea di comando che una DLL. Dovendolo integrare in un progetto Delphi ho cominciato a tradurre l’API e di seguito a scriverci sopra un piccolo wrapper che ne semplificasse l’uso. Trovate il tutto su GitHub pubblicato con licenza apache (fondamentalmente potete farci quello che volete). Nella directory sample ci sono 4 demo:

  • ApiDemo: programma di test che usa direttamente le API di WkHtmlToX
  • WrapperDemo: stesso esempio ma che usa la classe IWkHtmlToPdf
  • ThreadedDemo: un esempio di implementazione thread-safe
  • StreamDemo: esempio che usa un HTML in memoria invece che su file

Configurazione


Il tool comprende una miriade di opzioni di configurazione:

  • Dimensione e orientamento della pagina
  • Impostazione dei dpi
  • Impostazione dei margini della pagina
  • Possibilità di personalizzare intestazione e piè pagina
  • Abilitare o meno JavaScript
  • Possibilità di usare un CSS personalizzato
  • Ignorare lo sfondo della pagina

Per l’elenco completo dei parametri di configurazione potete far riferimento a questa pagina:
https://wkhtmltopdf.org/libwkhtmltox/pagesettings.html

Problemi noti


Il tool funziona piuttosto bene, anche con pagine complesse, in effetti il motore di rendering è lo stesso di google chrome. Ci sono un paio di problemi. Uno è che la libreria non è thread-safe. Nell’esempio ThreadedDemo trovate un workaround che permette di usare WkHtmlToX  in più thread senza bisogno di lock. L’altro problema è che se invece di convertire un file gli passate l’HTML come stringa o in uno stream non viene rilevato correttamente l’encoding. Anche questo problema può essere aggirato aggiungendo un tag <meta> alla pagina. Trovate un esempio del demo StreamDemo.

Download


Pagina del progetto: https://github.com/lminuti/Delphi-WkHtmlToX
Pagina dove scaricare la DLL: https://wkhtmltopdf.org/


domenica 9 aprile 2017

Le novità di Delphi 10.2 Tokyo in dettaglio



Alla fine di marzo è stata rilasciata la versione 10.2 (Tokyo) di Delphi, vediamo nel dettaglio la serie di novità che ha portato.

Benvenuto Linux!


La principale feautore di Delphi 10.2 Tokyo è ovviamente il supporto di Linux 64 bit (server -side) tra i target di compilazione (per sfruttare questa caratteristica è però necessaria almeno la versione Enterprise di Delphi).


Con questa versione di Delphi è possibile creare applicativi (console, dll, package) nativi per Linux che possono girare in qualsiasi distibuzione Linux per architettura x86 a 64bit.

Non c'è (per ora) il supporto a FMX per Linux, non si possono cioè realizzare applicativi con interfaccia utente.. vedremo se questo verrà aggiunto nelle le prossime release.

Il supporto ufficiale delle distribuzioni è limitato a Ubuntu e Red Hat ma personalmente ho già provato i binari prodotti su un elevato numero di distribuzioni senza nessun problema.

Per lo sviluppo invece consiglio di installare le distribuzioni ufficialmente supportate se volete evitare qualsiasi intervento manuale di configurazione dell'ambiente.


Tecnicamente la compilazione e il deployment per Linux usano le stesse tecniche e strumenti delle altre piattaforme.



Nello specifico:
  1. Compilazione su Windows con il compilatorre Delphi (basato su LLVM)
  2. Pachettizazione usando le informazioni di deployment
  3. Spedizione alla macchina Linux target usando il PAServer (da installare sulla macchina Linux)
  4. Debug (eventuale) nell'IDE usando PAServer

E comunque possibile prendere il binario generato, copiarlo e lanciarlo su una qualsiasi macchina Linux (attenzione ai permessi del file quando lo copiate)


Come accennato prima, il compilatore Linux è basato su LLVM come quello per i sistemi operativi mobile (iOS e Android) quindi dovete ricordarvi alcune cose quando scrivete il codice sorgente:

  • ARC (Automatic Reference Count) per gli oggetti (non dovete quindi distruggerli)
  • Le stringhe non sono sempre 1-based come nel compilatore tradizionale ma:
    • Sono 0-based nei compilatori iOS e Android
    • Sono 1-based nel compilatore Linux

Se a prima vista la scelta per le stringhe può sembrare un po'.. fuorviante, devo dire che mi trova daccordo: Nella costruzione di applicazioni mobile il porting di grosse porzioni di codice Win32 è piuttosto raro, nel caso di Linux invece, è proprio una delle caratteristiche più interessanti. In questo caso dover rifattorizzare completamente l'accesso alle stringhe sarebbe un lavoro lungo e pericoloso. Come consiglio usate comunque gli helper per i tipi base per usare le stringhe 0-based su tutte le piattaforme.

Il livello di compatibilità del codice sorgente è ottimo, ho già compilato su Linux la mia libreria JWT (https://github.com/paolo-rossi/delphi-jose-jwt) e il progetto WiRL (https://github.com/delphi-blocks/WiRL) senza particolari problemi.

Altre novità nella 10.2

Ci sono anche altre novità nonostante sia una release incentrata principalmente su Linux. Di seguito elenco solamente queste novità riservandomi di espanderle in altri articoli. In particolare il prossimo articolo verterà su RTL e linguaggio comparando i sorgenti rispetto alla versione 10.1 Berlin per evidenziare tutte le modifiche.

FireDAC


Il componente TFDMemTable guadagna un design time editor che consente di visualizzare e modificare i dati della memory table a design-time!


Altre feature in FireDAC:

  • Supporto per MariaDB (v5.5)
  • New GUID access for TField
  • Supporto per la versione 5.7 di MySQL
  • Support Firebird per Direct I/O
  • Grazie al BLOB streaming ridotta memoria sui client
  • Il componente VCL TDBImage supporta direttamente i formati JPEG e PNG

IDE


Il menu View dell'IDE è stato completamente riorganizzato per consentire una miglior categorizzazione delle numerose voci (nelle passate versioni rischiavano di uscire dallo schermo!)


Anche il supporto per le alte risoluzioni è stato migliorato, ormai i monitor High DPI sono arrivati a prezzi accessibili ed è sempre più facile che ci chiedano supporto nelle nostre applicazioni.

Altre funzionalità nell'IDE:
  • Migliorato supporto per Azure e AWS con nuove API
  • Il compilatore a riga di comando supporta ora large-memory-address
  • Supporto per il debugging e simulatore nei nuovi macOS e iOS

FireMonkey


  • Supporto Multi-Threading per le classi TBitmap, TCanvas e TContext3D
  • Maggior velocità dell'interfaccia utente (UI) Android grazie ad un miglior supporto multi-thread
  • Migliorata l'esperienza utente in TMultiView
  • Possibilità di modifica di SystemStatusBar.Color in iOS tramite nuove proprietà nella classe TForm
  • Nuovo stile FMX per macOS e Android

RTL


  • Nuova proprietà SynchronizeEvents per le classi TTetheringManager e TTetheringProfile per controllare la sincronizzazione con il thread principale
  • Supporto delle funzioni di hashing MD5 e SHA1 per file e stream

Installer/GetIt


L'installer basato su GetIt è ulteriormente migliorato come velocità ed esperienza utente. Consiglio a tutti l'installazione di Delphi con questo nuovo strumento che oltre ad una esperienza di installazione sicuramente migliore consente anche di aggiungere/rimuovere piattaforme e funzionalità in un quasiasi momento.

Anche GetIt sta guadagnando sempre più consenso in quanto l'installazione di componenti tramite questo tool è facile e immediata.

In questo momento sono già presenti una buona selezioni di componenti/expert già aggiornati a RAD Studio 10.2 Tokyo.



Considerazioni finali

Per me la 10.2 Tokyo è un'importantissima release grazie all'introduzione di Linux come target ma introduce anche una buona lista di feature in altre aree e una lista di bug fissati decisamente lunga.

Avendo usato 10.2 Tokyo per qualche settimana posso dire che la stabilità sembra buona, il mio consiglio finale è sicuramente di installarlo e usarlo per lo sviluppo dei vostri applicativi.

Link a risorse

DocWiki What's New
http://docwiki.embarcadero.com/RADStudio/Tokyo/en/What%27s_New

What's New in RAD Studio 10.2
https://www.embarcadero.com/products/rad-studio/whats-new-in-10-2-tokyo

New features and customer reported issues fixed in RAD Studio 10.2 Tokyo
https://edn.embarcadero.com/article/44747


Un saluto


lunedì 7 novembre 2016

Conferenza Delphi Porte Aperte 2016



Wintech-Italia s.r.l. organizza anche quest’anno l’evento Delphi Porte Aperte, un incontro, gratuito, di mezza giornata per un aggiornamento sullo stato attuale di Delphi.

L'evento in edizione 2016 raddoppia! Al pomeriggio il classico evento gratuito di mezza giornata dedicato a tutti i programmatori Delphi ansiosi di conoscere le novità dello strumento di sviluppo. Al mattino sono previsti due seminari a pagamento ad alto contenuto tecnico tenuti da Paolo Rossi e Luca Minuti.

Conferenza: Lo stato dell'arte di Delphi


L'incontro offre una panoramica sullo "stato dell'arte" di Delphi, a partire dagli aspetti più generali, per affrontare elementi architetturali (come linguaggio e librerie), per parlare anche delle novità più recenti con particolare attenzione all'apertura multipiattaforma di Delphi (MacOSX, iOS, Android, Linux). L'incontro si propone di essere fondamentalmente un momento di scambio e discussione tra i partecipanti.

Il biglietto di ingresso gratuito comprende l'ingresso alla conferenza del pomeriggio e il coffee break
Eventbrite - Delphi Porte Aperte 2016


Seminari: Applicazioni stabili e sicure


Nella Sala A si terrà il seminario dal titolo: Eccezioni e debug: avere il controllo delle applicazioni
Quante volte una vostra applicazione in deployment dal cliente ha dato errori oppure si è bloccata in modo anomalo senza alcuna indicazione? Quante volte avete perso ore nel tentativo di debuggare codice complesso senza venirne a capo?
Seguendo questa sessione imparerete tutti i trucchi per avere il controllo completo delle vostre applicazioni soprattutto quando queste diventano instabili, vedremo come tenere sotto controllo anche le applicazioni che girano sulle macchine dei clienti senza più avere errori "sconosciuti"


Nella Sala B si terrà il seminario dal titolo: Sviluppare applicazioni (più) sicure
La possibilità di accedere alle applicazioni fuori dalle mura aziendali ha portato una serie di problematiche sia nelle applicazioni web che in quelle tradizionali. In questo seminario parleremo dei problemi di sicurezza più rilevanti dal punto di vista dello sviluppatore. Verranno presentate le tecniche di hacking più comuni (come SQL Injection e XSS) e i metodi per prevenirle. Inoltre parleremo di sicurezza dei dati, delle password e qualche accenno sui protocolli di rete e sulla crittografia. In dettaglio, vedremo come sviluppare applicazioni più sicure

Il biglietto di ingresso per i seminari comprende l'ingresso ai seminari, alla conferenza, al pranzo e ai coffee break
Eventbrite - Delphi Porte Aperte 2016





Agenda conferenza
13:45Registrazione dei partecipanti
14:20Delphi: Presente e Futuro
Paolo Rossi - Wintech Italia
Il punto della situazione sulla salute di Delphi e dell'ecosistema. Le nuove piattaforme supportate, la roadmap di Delphi in dettaglio, tutto l'occorrente per predire il futuro del nostro strumento di sviluppo
15:00RTL: Cosa vi siete persi nelle ultime versioni di Delphi
Luca Minuti - Wintech Italia
Siamo abituati ad associare ogni nuova release di Delphi ad un numero limitato di caratteristiche rilevanti: il supporto ad una nuova piattaforma, un nuovo modello di sviluppo (web, mobile, ..) o l’integrazione con qualche nuovo DB. In realtà ogni nuova versione comprende tante piccole aggiunte e migliorie che sommate assieme possono cambiare il modo in cui scriviamo il codice. In questa sessione faremo una carrellata su alcune di quelle più rilevanti
15:50Coffee Break
16:10Delphi per Linux: Come preparare il proprio codice
Paolo Rossi - Wintech Italia
Delphi per Linux sta per arrivare, ma voi siete pronti a compilare il vostro codice per questa piattaforma? In questa sessione vedremo in dettaglio come cominciare già da subito a scrivere codice compatibile con la piattaforma Linux
17:10Application Server REST con WiRL
Paolo Rossi, Luca Minuti - Wintech Italia
Per lo sviluppo multipiattaforma (Mac OS, Android iOS e Linux) e per lo sviluppo web l'application server è diventato un elemento basilare delle architetture software. In questa sessione vedremo come utilizzare una delle più moderne librerie REST per Delphi (WiRL) per costruire facilmente un servizio REST
17:50Domande e discussione finale
Spazio per le vostre domande
18:15Conclusione



Agenda seminari
08:45Registrazione dei partecipanti
09:20Track 1: Eccezioni e debug: avere il controllo delle applicazioni
Paolo Rossi - Wintech Italia

Quante volte una vostra applicazione in deployment dal cliente ha dato errori oppure si è bloccata in modo anomalo senza alcuna indicazione? Quante volte avete perso ore nel tentativo di debuggare codice complesso senza venirne a capo?

Seguendo questa sessione imparerete tutti i trucchi per avere il controllo completo delle vostre applicazioni soprattutto quando queste diventano instabili, vedremo come tenere sotto controllo anche le applicazioni che girano sulle macchine dei clienti senza più avere errori "sconosciuti":
  • Le eccezioni queste.. sconosciute??
  • Salvataggio di file di log e di report sulle eccezioni
  • Il ruolo dello stack nella gestione delle eccezioni
  • L'uso di strumenti esterni di gestione delle eccezioni
  • Procedure di debug basilari ed avanzate
  • Debugging di applicazioni multithread
  • Debugging remoto con Delphi
09:20Track 2: Sviluppare applicazioni (più) sicure
Luca Minuti - Wintech Italia

La possibilità di accedere alle applicazioni fuori dalle mura aziendali ha portato una serie di problematiche sia nelle applicazioni web che in quelle tradizionali. In questo seminario parleremo dei problemi di sicurezza più rilevanti dal punto di vista dello sviluppatore. Verranno presentate le tecniche di hacking più comuni (come SQL Injection e XSS) e i metodi per prevenirle. Inoltre parleremo di sicurezza dei dati, delle password e qualche accenno sui protocolli di rete e sulla crittografia.

In dettaglio, vedremo come sviluppare applicazioni più sicure:
  • (SQL) Injection, XSS
  • Validazione dell'input
  • Social engineering
  • Sicurezza delle password
  • Sicurezza dei dati
  • Crittografia, Connessioni SSL
  • OTP, password, biometriche
  • Autenticazione e autorizzazione
11:00Coffee Break
12:30Conclusione e Pranzo


La conferenza ed i seminari si svolgeranno presso:
Hotel Sheraton Padova (Four Points)
Corso Argentina 5
35129 Padova

lunedì 20 giugno 2016

Usare OpenSSL da Delphi

Per chi ha fretta

Su bitbucket (principale) o github (copia) è possibile scaricare una libreria Delphi che consente di usare alcune funzioni crittografiche di OpenSSL.

Introduzione

Nei mesi scorsi mi è capitato di dover cifrare dei messaggi tramite un algoritmo a chiave pubblica, in particolare RSA. Inizialmente, vista anche l'esegua mole di dati, abbiamo scelto di lanciare da linea di comando OpenSSL. Ovviamente non eravamo particolarmente soddisfatti della soluzione e appena abbiamo trovato un po' di tempo abbiamo creato una piccola collezione di classi attorno a libeay32, la libreria che espone tutte le API di OpenSSL.


openssl1.png

Funzionalità

Le funzionalità al momento si riducono alla cifratura con RSA (quindi a chiave pubblica) e con AES (chiave simmetrica). Visto che il progetto era nato chiamando OpenSSL attraverso la linea di comando anche le classi sono state modellate seguendo le funzionalità offerte da OpenSSL.EXE. In particolare l'area OpenSSL RSA è implementata dalla classe TRSAUtil, mentre l'area OpenSSL ENC da TEncUtil.


Le idee per il futuro sono diverse, innanzitutto togliere le dipendenze dai componenti Indy, infatti al momento, uso le unit IdSSLOpenSSLHeaders e IdSSLOpenSSL che contengono alcune dichiarazioni necessarie (prototipi, record, costanti, ecc). Poi implementare le restanti funzioni di RSA, in particolare firma e verifica della firma. Inoltre aggiungere altri algoritmi di cifratura a chiave simmetrica.

Licenza di Delphi-OpenSSL

Delphi-OpenSSL è distribuita secondo i termini della Apache License che consente di usare il software senza restrizioni di sorta, di distribuirlo, modificarlo e di distribuire versioni modificate del software.


La Licenza Apache NON richiede che versioni modificate del software siano distribuite secondo i termini della stessa licenza o come software libero ma solo che si includa un'informativa del fatto che si è utilizzato software licenziato secondo i termini della Licenza Apache.

Licenza di OpenSSL

Dovete tenere anche conto che per usare Delphi-OpenSSL sicuramente dovrete installare anche OpenSSL stesso. La licenza è un po' particolare ma fondamentalmente potete farci quello che volete a patto che includiate da qualche parte questa dicitura: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit".


Leggetevi bene anche il README.txt compreso nella distribuzione di OpenSSL perché in alcuni paesi, per esempio gli Stati Uniti, ci sono delle restrizione sull'esportazione di tecnologie crittografiche.

Luca Minuti

martedì 19 aprile 2016

La nuova versione di Delphi: 10.1 Berlin

RAD Studio10.1 Berlin


Da poche ore è stata rilasciata la nuova versione di Delphi/C++/RAD Studio: 10.1 Berlin.

La prima sorpresa nel nome, dopo che sulla roadmap era stata segnalata con il code name "BigBen", ecco invece che il nome ufficiale vira sul teutonico Berlin :-)

Fortunatamente non è l'unica novità da segnalare, anzi in quest'articolo mi soffermerò solo su quelle che ritengo più interessanti, per una lettura completa vi rimando quindi all'elenco delle novità di questa versione.

Nuovo installer

La novità più visibile (anche perchè è la prima che si incontra) è il nuovo installer, completamente rifatto e sensibilmente più veloce e snello.

Opzioni installer

Dopo una prima selezione di percorso di destinazione e alcune opzioni generali, viene installata in pochissimi minuti una prima versione di RAD Studio (funzionante, è possibile infatti usarla come generico editor), in seguito verrà presentata una finestra per selezionare le successive funzionalità che si desidera installare.

Feature Installer: platform selection
Come potete vedere adesso è possibile selezionare in modo chiaro le piattaforme da installare salvando quindi spazio su disco e tempo di installazione.
Con una successiva finestra è poi possibile scegliere di installare alcuni componenti aggiuntivi come l'help, gli esempi ed alcuni componenti tipicamenti distribuiti con Delphi.

Feature Installer: option selection
L'aspetto interessante è che, se in un secondo momento volessimo aggiungere ulteriori piattaforme basterebbe invocare ancora il "Feature Installer/Manager" per aggiungerla alla nostra installazione.
Ricordatevi, una volta terminata l'installazione, di lanciare GetIt per installare componenti opzionali che prima invece erano parte dell'installer (CodeSite, IoT, ecc...)


GetIt Package Manager - IoT components

Personalmente mi sembra un enorme passo in avanti rispetto all'attuale "esperienza di installazione".

Il nuovo installer funziona solamente "online" (per questa versione almeno), se qualcuno avesse bisogno di una installazione offline può usare il vecchio installer che sarà comunque possibile scaricare.

IDE


Floating Form Designer

Un gradito ritorno, adesso Delphi può essere usato anche in modalità "floating" (alla Delphi 7 per intenderci), per abilitare la modalità andate nel menu:
Tools -> Options > Form Designer e togliete il check sull'opzione Embedded Designer

FireUI Live Preview

FireUI Live Preview

Fa la comparsa in 10.1 Berlin un nuovo strumento, la FireUI Live Preview, che serve a vedere come si presenta l'applicazione sui diversi device, tutto ciò mentre si lavora nell'IDE, Un tool davvero molto potente che IMO amplia ulteriormente il divario di Delphi rispetto ad altri strumenti di sviluppo per app mobile per quanto riguarda la progettazione visuale delle viste.

Lo strumento si basa sull'architettura client/server dove l'IDE funge da server accettando connessioni dai client (i vari device) per spedire "live" la form in progettazione.

La tecnologia usata per realizzare questo tool la conosciamo già bene: App Tethering, framework di comunicazione introdotto in Delphi XE6.

High DPI Awareness

L' IDE è adesso completamente DPI-aware. Una feature richiesta a gran voce soprattutto con l'introduzione degli schermi ad altissima densità di pixel (maggiore di 96 PPI)

Bookmark Stack

Questa è un'interessante funzionalità per una navigazione nel codice più potente e allo stesso tempo semplice. E' possibile ora definire una serie di bookmark che verranno visualizzati in una pila (stack)  potendo navigare, con una logica LIFO, su questi bookmark.

Selection Expansion

Da fanatico della tastiera quale sono questa funzionalità mi fa molto piacere, premendo Ctrl-W  è possibile espandere la selezione dall'identificatore, alla riga selezionata, al blocco di statement, all'intera procedura, alla sezione implementation fino ad arrivare all'intera unit. Ho qualche perplessità solo sulla scelta del tasto rapido, visto che in altri sistemi operativi e (anche in molte applicazioni Windows) questo tasto rapido corrisponde alla chiusura della finestra attiva!

Method Toxicity Metrics


Metrica Method Texicity

Altra cosa molto interessante che dovrebbe essere usata a tappeto su tutti i metodi delle nostre applicazioni. E' una metrica che ci suggerisce quando un metodo avrebbe bisogno di refactoring, ovvero di una bella.. rivisitata. La metrica si basa su parametri quali: la lunghezza (numero di righe), il numero di parametri, il numero di livelli di if, dando come risultato un numero che ci dice appunto quanto il metodo sia.. "tossico" :-)

Come tutte le metriche ricordate che cercano solo di aiutarci a migliorare la struttura del nostro codice cercando di farci abbandonare quelle "brutte abitudini" e farci adottare uno stile di scrittura del codice più... sano, quindi, usatele!

Altre modifiche migliorie nell'IDE includono:

  • Structure View Improvements for C++
  • Android Service Improvements
  • Support for Running iOS Ad hoc Applications
  • Customizable info.plist File
  • Design-Time Improvements for Android Smart Watches
  • GetIt Dependencies
  • New Options Page for File Associations
  • New Option to Show Information Messages from the Delphi Compiler


Utilities


The Java2OP.exe tool now works with JDK 8.
New SdkTransform.exe tool. It can be used to convert Objective-C or C++ headers to Delphi headers.

Per tutti quelli che abitualmente si devono interfacciare con codice scritto in altri linguaggi questi due tool sono fondamentali soprattutto (per quanto mi riguarda) il nuovo strumento SdkTransform che (promette) di convertire automaticamente gli header C++ in Pascal. Sono curioso di testarlo, staremo a vedere.

FireMonkey


Supporto Android 6.0

Supporto ufficiale per Android 6 (API Level 23)

Componente TAddressBook


Address Book
 Per le piattaforme mobile è disponibile un nuovo componente (TAddressBook) che permette alle app di accedere alla rubrica :


  • Sending a request to access a device Address Book and getting the access status.
  • Accessing all sources defined in the device Address Book.
  • Fetching all or individual contacts from specified source.
  • Fetching all contacts from specified group(s).
  • Editing or removing existing contacts and groups.
  • Creation of new contacts, creation of new groups.



Improved Style Designer


Style Designer

Altra cosa attesa da tutti gli sviluppatori FireMonkey: un deciso miglioramento allo Style Designer con una finestra di preview, il supporto allo zoom e il supporto alla multi selezione nella vista struttura.

New ListView Item Designer

ListView Item Designer

Sempre su FireMonkey, il controllo ListView ha un nuovo tipo di ItemAppearance: DynamicAppearance che si può usare per personalizzare il contenuto di ogni singolo item. In aggiunta se si clicca con il pulsante destro la ListView nel Form Designer e si seleziona la voce Toggle DesignMode, è possibile visualizzare un editor che consente di editare visualmente i controlli piazzati sugli item.

Altre migliorie/novità sulla piattaforma FireMonkey:

  • Extended Clipboard Support Service
  • Improvement on the Image List Editor
  • TGrid Improvements
  • High DPI Support on Windows
  • Improved Support for Accelerator Keys
  • Support for Extended Font Styles
  • Hint Property Changes
  • Simplified Dialog API


RTL


Miglioramenti su TStrings e TStringList

C'è poco da dire, TStringList è forse la classe più utilizzata di tutta la RTL. E' sempre stata una classe versatilissima adatta a diversi "task" e, anche se ultimamente è stata affiancata dalle altrettanto utili classi: liste di oggetti, dictionary, stack e queue, la string list è indubbiamente quella più usata.

Dalla versione 10.1 Berlin la classe TStrings guadagna queste funzionalità:

  • Metodo AddPair, per aggiungere coppie key-value alla lista potendo anceh usare lo stile "fluent": LList.AddPair('Nome', 'Paolo').AddPair('Cognome': 'Rossi');
  • Proprietà KeyNames, per ottenere una lista di key da una lista di stringhe in formato key-value
  • Proprietà Options, per controllare le opzioni associate alla stringlist
  • Metodo SetStrings, per copiare stringhe da un altro oggetto TStrings. E' simile al metodo Assign ma SetStrings copia solo le stringhe senza toccare le altre proprietà (che invece Assign copia)
  • Proprietà TrailingLineBreak, determina se la proprietà deve contenere un line break alla fine oppure no.
  • Proprietà di sola lettura Updating, indica se la lista è impegnata in una operazione di update
  • Proprietà UseLocale, determina quali funzioni sono usate per il confronto delle stringhe, se True vengono usate AnsiCompareStr/AnsiCompareText, se False vengono invece usate CompareStr/CompareText
  • La classe TStringList ha nuovi costruttori (overloaded) che consentono maggior libertà in fase di inizializzazione

Miglioramenti sulla classe TMemIniFile

Per chi usa la classe TMemIniFile queste sono interessanti aggiunte, vediamole:
  • E' possibile adesso specificare la proprietà CaseSensitive nel costruttore
  • La nuova proprietà Modified indica se il file INI è stato modificato dal suo caricamento da disco.
  • La nuova proprietà AutoSave determina se l'istanza di TMemIniFile deve automaticamente salvare su disco i cambiamenti al momento della sua distruzione.

Supporto buffering per la classe TFileStream

Un grazie a FireDAC che "regala" alla RTL una sua classe, la classe TFDFileStream è stata infatti spostata nella unit System.Classes ed è stata rinominata in TBufferedFileStream.
La classe TBufferedFileStream è un TFileStream discendente che ottimizza sensibilmente brevi letture o scritture consecutive, ovvero, aggiunge il supporto al buffering ai file stream.

Support Bluetooth LE e Beacon su Windows 10


Finalmente la possibilità di usare Bluetooth LE e Beacon anche in Windows 10, per me molto utile soprattutto per testare un'applicazione BluetoothLE/Beacon in Windows senza continuamente passare per il deploy sul device. Il supporto in Windows 10 include:
  • Improved Bluetooth LE Discovery Performance
  • Bluetooth LE Includes New Events to Handle Subscriptions to Characteristics
  • Eddystone Beacon Format Support
  • Improved Beacon Scan Performance
  • TBeaconDevice Component Supports Eddystone Beacon Format

Ottimizzazione delle Regular Expressions

Buonissimo risultato di ottimizzazione delle RegEx (che uso sempre di più nella gestione di stringhe). L'ottimizzazione è sia sul tempo di esecuzione sia sull'uso di memoria!
Se guardate la wiki mostra una prova in cui il tempo di esecuzione di una serie di match passa da 5900ms a 29ms, un guadagno di oltre 300 volte!

Ottimizzazione sulla funzione StringReplace 

Le performance della funzione StringReplace sono state particolarmente ottimizzate, può sembrare un miglioramento insignificante ma in tutti i programmi che ho visto StringReplace è pesantemente utilizzata e quindi... benvenuta a questa miglioria.

Migliorie App Tethering

App Tethering è una interessante tecnologia che, introdotta in Delphi XE6, ha conosciuto release dopo release significanti aggiunte, migliorie e ottimizzazioni. Vediamo quelle in questa release:
  • Due nuovi network adapters che forniscono il supporto multicast per IPv4 e IPv6.
  • E' possibile specificare un range di indirizzi IPv4 come target del remote manager per l'auto discovery.
  • Supporto per il Log filtering. E' adesso possibile dis/abilitare il log per uno specifico item dell'architettura app tethering.
  • I profili possono permettere o meno connessioni da profili remoti.

Comunicazione HTTP, web programming

Le prossime funzionalità sono particolarmente interessanti a tutti quelli che si occupano di programmazione web oppure di framework di comunicazione (come la libreria REST MARS). Nel dettaglio:
  • Supporto per le operazioni asincrone HTTP
  • Supporto per i file ZIP criptati
  • Supporto per i client HTTP per la decompressione automatica di un contenuto "gzippato" spedito dal server
  • Migliorie sulla connessione HTTP
  • Funzioni di URLEncode/URLDecode
  • Le stringhe UTF8String and RawByteString sono adesso supportate anche sulle piattaforme mobile (iOS, Android)


Compilatore


Anche queste aggiunte e migliorie sono "nascoste" ma comunque importantissime, vediamole nel dettaglio.

Miglioramenti delle performance nella compilazione dei generics

I compilatori Delphi hanno visto numerosi cambiamenti che riguardano la gestione dei generici risultanti in diversi miglioramenti:
  • Il parsing dei generici è adesso fino a 3 volte più veloce
  • Le performance dei compilatori DCC32, DCC64 e DCCOSX quando linkano progetti che usano estensivamente i generici estensivamente sono decisamente aumentate.

Attributi supportati da tutti i compilatori

Adesso tutti i compilatori Delphi supportano i seguenti attributi:
  • unsafe: permette di annotare il risultato di una funzione per non farla gestire al sistema ARC
  • volatile: utile per annotare un campo di classe che possono essere cambiati dall'interno di differenti thread (il codice quindi per questi campi non viene ottimizzato dal compilatore copiando il contenuto nei registri CPU)
  • weak: Utile per annotare un campo come una "weak reference" ovvero che non incrementa il reference count del'oggetto a cui punta

Modifica su class e record helper

Attenzione! Questa modifica potrebbe avere un impatto sul codice già scritto se avete usato (o usato da librerie impiegate da voi) i class e record helper. Dalla versione 10.1 Berlin infatti gli helper non hanno più visibilità siu membri privati. A mio avviso una chiusura di una falla logica (non sicuramente un bug vero e proprio) che rischiava di far nascere codice "sporco".

Altre migliorie sui compilatori Delphi

  • The memory allocated to conditional symbols has been extended from 256 bytes to 4096 bytes.
  • The size of Extended is now 16 bytes to be compatible with BCCOSX

EMS (Enterprise Mobility Services)

EMS System Diagram

EMS sta conoscendo un'evoluzione costante da quando è stato introdotto e, pur avendo una policy di deployment che non è graditissima alla stragrande maggioranza dei programmatori Delphi, dobbiamo dire che tecnologicamente si appresta a diventare un framework davvero interessante. Le aggiunte e migliorie in questa release;
  • Apache Server Support
  • Cross-Domain API Calls to the EMS Server
  • EMS EdgeModules
  • EMS EdgeModules Resource
  • ThingPoints Overview
  • EMS API Resource
  • Custom API Documentation

(Mie) Opinioni sulla release 10.1 Berlin


Ovviamente adesso posso giudicare solo sulla carta tutte queste novità e funzionalità, è chiaro che il responso definitivo verrà espresso dopo un adeguato uso di questa versione.
Ma... vedendo la lista di novità e l'impegno effettivo nel bug fixing e in una generale revisione anche di dettagli (ma sempre importanti) si denota un'attenzione reale verso il prodotto e non solo focalizzata sulle "selling features". Date uno sguardo anche all'impressionante lista di bug fissati in questa release!

Concludo la recensione della release 10.1 Berlin puntandovi al documento della feature matrix per avere un dettaglio (anche troppo) su tutte le funzionalità divise a seconda della edition (Starter, Professional, Enterprise) in vostro possesso.

Embarcadero focalizzata sugli sviluppatori

L'ultimo paragrafo è relativo ad un recente annuncio.

Embarcadero, da poco acquisita da IDERA (leggi qui l'articolo), dopo aver svelato la roadmap per i prossimi mesi annuncia di focalizzarsi esclusivamente sugli strumenti di sviluppo (Delphi, C++ Builder, RAD Studio, Interbase) mentre gli strumenti database entreranno a far parte del portafoglio prodotti di IDERA.

Per prevenire eventuali dubbi, faccio notare che per prodotti database non si intendono FireDAC o altri componenti DB per Delphi/C++ Builder ma solo i prodotti originali di Embarcadero: E/R Studio, DB Change Manager, ecc...

Speriamo che questa svolta consenta ad Embarcadero di concentrarsi su Delphi e C++ rilasciando versioni sempre più stabili e ricche di funzionalità.


Un saluto.





mercoledì 24 febbraio 2016

Delphi nei primi 10 nell'indice TIOBE

Con questo articolo mi lascio andare ad un po' di gossip... da programmatore :-)


Qualcuno di voi avrà sentito parlare dell'indice TIOBE che, analizzando i dati delle ricerche effettuate sui principali search engine, compila una statistica dei linguaggi più usati (o per meglio dire più ricercati) al mondo.

Indice TIOBE febbraio 2016

Per la prima volta, dopo tanti anni, Delphi ritorna nella top-ten dei linguaggi più usati e non solo, se guardate i trend è anche in crescita!

Quale importanza riveste questa notizia per noi programmatori Delphi? beh praticamente nessuna :-)

Serve però forse ad inquadrare meglio l'impatto e l'importanza reale di Delphi all'interno della community "globale" dello sviluppo, ovvero non è per nulla quel linguaggio dimenticato ed "antico" che a volte ho sentito definire da alcuni in giro per conferenze...  la prossima volta che quindi vi capita di incontrarne qualcuno di questi tizi, fategli mandatelo a questo link! :-)




lunedì 22 febbraio 2016

Hotfix per RAD Studio XE8 e XE7



Nei giorni scorsi Embarcadero ha reso disponibili due hotfix per RAD Studio XE7 ed XE8. Una piacevole novità che risponde finalmente con i fatti alla promessa di allargare il periodo di supporto sulle precedenti versioni di Delphi.

Potete trovare a queste pagine i due update:
Gli update in questione saranno disponibili a tutti quelli che hanno attiva assieme alla licenza Delphi una "Update Subscription", se già non l'avete contattate il vostro rivenditore e chiedete una quotazione, il mio consiglio è quello di muovervi verso questa forma di "abbonamento" che vi assicura, oltre ad avere automaticamente tutte le versioni di Delphi che escono, anche tutti gli update anche per le versioni precedenti.



Roadmap e novità di Delphi e C++ per il 2016

Negli ultimi giorni ci sono state interessanti novità su Delphi, è stata infatti pubblicata dal Product Manager Marco Cantù la roadmap relativa al 2016 per Delphi e C++Builder (RAD Studio)

Alcune news già ce le aspettavamo ma ci sono anche piacevoli sorprese... vediamole nel dettaglio.

Embarcadero + IDERA


Embarcadero + IDERA
Innanzitutto per chi si fosse perso l'annuncio di qualche mese fa ricordiamo che Embarcadero Technologies è stata acquisita da IDERA Inc. un'azienda americana con sede ad Austin, Texas specializzata in prodotti database che, con un importante investimento, ha acquisito totalmente Embarcadero. Acquisizione centrata ovviamente sul ventaglio degli ottimi prodotti database di Embarcadero ma con un grande interesse da parte di IDERA verso il settore, per loro nuovo, degli strumenti di sviluppo di cui fanno parte Delphi e C++ Builder.

Che dire sull'acquisizione... il risultato lo potremo vedere solo tra diversi mesi, per ora possiamo notare che c'è grande interesse nella community per questa operazione che, speriamo, possa portare nuova linfa e nuove idee per portare avanti il nostro strumento di sviluppo preferito. Come in tutti i cambiamenti societari, c'è stato e ci sarà movimento di personale, qualcuno se ne andrà e qualcun altro arriverà. Proprio di questi ultimissimi giorni è l’annuncio di Allen Bauer (storica figura dai tempi di Borland Delphi 1) che inizierà una nuova esperienza lavorativa con Alphabet (Google). Oltre a fare un grande augurio ad Allen per il nuovo lavoro chiediamo ad IDERA un impegno ad investire in modo deciso sul team di sviluppo Delphi e C++.

Volendo tracciare un bilancio (chi vi scrive ha vissuto l'epoca Borland, Inprise e CodeGear) possiamo dire che Embarcadero ha rappresentato il rilancio di Delphi, lo ha preso in consegna da una situazione non propriamente brillante e a suon di investimenti (sia acquisendo ditte e framework esterni, sia come forza lavoro interna) ha trasformato il miglior strumento di sviluppo per Win32 nel miglior strumento di sviluppo multi-piattaforma, ha introdotto decine di migliaia di sviluppatori Delphi al mondo mobile, ha trasformato il l'Object Pascal rendendolo un linguaggio moderno, con potenti funzionalità senza farci perdere la produttività tipica di Delphi che ha permesso a tanti di sfornare prodotti eccezionali in una frazione del tempo richiesta con altri strumenti.

Certamente rimane ancora molto da fare e quindi nel chiudere il precedente capitolo non ci resta che augurare ad IDERA un buon lavoro nel portare Delphi e C++Builder ancora più in alto!

Delphi e C++ Roadmap 2016

Delphi e C++ roadmap per il 2016
Delphi e C++ roadmap per il 2016


Il documento contiene davvero numerosi spunti interessanti riguardo il (probabile) futuro di Delphi. Dico probabile perchè vale la pena menzionare che le informazioni presentate nella roadmap, pur rappresentando più che un suggerimento, sono da considerarsi non definitive o vincolanti.

Cominciamo col dire che la versione corrente (10 Seattle) già rappresenta un prodotto completo e pieno di funzionalità con il pieno supporto a Windows 10, iOS 64bit, supporto IoT, il nuovo package manager GetIt, integrazione con i principali version control e tante altre novità.

La prima cosa che ci dice la roadmap è che nel 2016 ci saranno ancora 2 versioni, la prima (con il numero di versione 10.1) chiamata in codice BigBen uscirà in primavera e la seconda (10.2) Godzilla, in autunno.. provate ad indovinare voi il nome delle città che probabilmente avranno i prodotti finali.
Sulla questione del doppio rilascio annuale qualcosa si sta muovendo viste le numerose richieste di “rallentare” la corsa di Delphi con meno rilasci di versioni e magari update incrementali e l’aggiunta di nuove funzionalità. Quindi per il futuro staremo a vedere, per il 2016 prepariamoci però ancora a fare spazio per due major release.

A questo proposito volevo menzionare una aspetto importante per tutti gli utenti Delphi e C++ Builder per quanto riguarda le licenze... ormai già da qualche tempo Embarcadero spinge verso l’adozione di un modello a “subscription” da abbinare alla classica licenza, infatti con l’introduzione di tutte le nuove piattaforme, Embarcadero è stata obbligata (tecnicamente) ad effettuare rilasci semestrali per coprire le varie versioni dei sistemi operativi mobile (iOS e Android in primis).
Da un punto di vista economico quindi l'acquisto delle singole release comincia ad avere poco senso e se a questo aggiungiamo gli importanti bonus associati alla subscription (potete far riferimento a questa pagina), possiamo concludere che ad ogni acquisto di una licenza Delphi o C++ andrebbe sempre associata l’opzione “Update Subscription”.

Delphi 10.1 (Big Ben)


Vediamo gli aspetti tecnici della roadmap: parlando di Big Ben, il team di sviluppo si è concentrato sull’esperienza dell’utente nell’installazione e in generale sulla qualità del prodotto. La prima novità sarà apprezzata da numerosi utenti, infatti un processo di installazione più snello e moderno risulta più in linea con un prodotto che ormai ha raggiunto notevoli dimensioni e complessità.

Le altre novità dovrebbero essere:
  • Form designer floating sia per progetti VCL che FMX, per molti un piacevole ritorno al passato! sento già i numerosi "io l'avevo detto" :-)
  • Operazioni di refactoring in C++ 
  • FireUI App Preview, ovvero la possibilità di vedere un’anteprima delle form su qualsiasi target (desktop oppure mobile) mentre si sta lavorando nell’IDE 
  • Migliorie FireMonkey per progetti Windows, Mac, mobile 
    • Nuovo componente Address Book /Contatti 
    • Un nuovo / migliorato Style Designer e ListView Items Designer 
    • Animazioni touch per la ListView, miglioramenti sulle griglie, supporto ai tasti rapidi Windows , miglior gestione font 
  • Miglioramenti sul Multi-Device Designer 
    • Stili per Android e nuove viste FireUI 
  • Supporto per IoT (Internet of Things) 
    • Supporto per Bluetooth LE migliorato 
    • Framework per la connettività IoT 
    • ThingPoint - Enterprise access points per i dispositivi IoT (estende le funzionalità EMS) 
  • Window/VCL 
    • Supporto Bluetooth LE per Windows 10 
    • Miglioramenti al bridge per WinRT 
    • Supporto DirectX 12 
  • Delphi Compiler & Language 
    • Supporto per le stringhe Utf8String su tutte le piattaforme 
    • Supporto per per [weak] e [unsafe] per i reference ad interfacce per i compilatori non-ARC 
  • C++ CLANG 3.3 su tutte le piattaforme 
  • Aggiornamenti driver FireDAC (Oracle, DB2, Interbase, SQLite e Advantage) 
Due parole su questa lunga ed interessante lista di novità:

Interessante il supporto nativo (del compilatore) per le stringhe UTF8, una feature che semplificherà la vita agli sviluppatori web/rest.
Non vedo l’ora di provare il nuovo form designer floating (un po’ alla Delphi 7) anche secondo me (come so tanti di voi) il float designer delle prime versione di Delphi era strutturalmente migliore per la progettazione di form di una certa dimensione.
Buono il supporto Bluetooth LE per Windows 10 ed in generale l’ondata di novità relative al mondo (sempre più in espansione) degli IoT. In altre parole: Delphi 10.1 sarà davvero una buona release !

Delphi 10.2 (Godzilla)


Passando a Godzilla possiamo dire senza dubbi che la novità davvero eclatante è l'introduzione di una nuova piattaforma: Linux Intel 64bit
Supporto Linux 64bit!

Noi (Wintech Italia) aspettiamo il supporto per Linux fin dai tempi di Kylix! (che internamente usiamo ancora).
Il supporto a Linux sarà solo per gli applicativi server, non per la parte visuale. Ad onor del vero dobbiamo dire che la prima difficoltà nell’introdurre la programmazione GUI in Linux è che di GUI non ne esiste solo una, ma tante (KDE, Gnome, Xfce, ecc…) e quindi Embarcadero si troverebbe a dover moltiplicare gli sforzi per raggiungere una fetta consistente di utenti, quindi per adesso basta e avanza la parte server!

Il supporto Linux Server dovrebbe essere rivolto a queste tecnologie:
  • Moduli Apache in WebBroker
  • Progetti DataSnap e EMS 
  • Accesso ai database su Linux con FireDAC 
  • Applicativi console con supporto IoT
Le prime due distribuzioni supportate saranno Ubuntu Server & RedHat Enterprise (ma gliapplicativi console sviluppati dovrebbero girare su tutte le versioni di Linux 64 intel). Lo sviluppo come sempre sarà sotto Windows con il cross-compiler, deploy e debug via PAServer. I compilatori Linux saranno quindi per macchine Intel 64-bit, basati sulla tecnologia LLVM e con la gestione di memoria basata su ARC. 
Embarcadero ha anche promesso che ci farà provare in anteprima una preview tecnica del compilatore Linux prima dell’uscita del prodotto, quindi non ci resta che... aspettare (speriamo poco :-)

Le altre novità di Delphi 10.2 dovrebbero essere
  • Migliorie sull’IDE e sulla parte degli stili 
  • Aggiornamento di tutte le versioni dei compilatori C++ compilers alle nuove versioni di Clang 
  • Continuo lavoro sul componente ormai chiave per l’IDE, l’installazione e per la gestione dei pacchetti: GetIt 
  • Nuovi controlli VCL per Windows 10 
  • Nuovi controlli FireMonkey nativi per le piattaforme supportate 
  • Supporto a Windows 10 Centennial (ovviamente dipende se Microsoft porterà avanti questi progetto) 
  • Supporto per le nuove versioni (già in fase di sviluppo da Apple e google) di iOS e Android 

Conclusione


Che dire, Embarcadero ci ha riversato addosso una carico di novità notevole, novità che si realizzeranno nel corso del 2016 con due release importanti e sicuramente da non mancare!