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

mercoledì 22 aprile 2020

Defensive programming

Il 21 aprile ho tenuto un webinar sulla sicurezza. In particolare abbiamo parlato di SQLInjection, cross-site scripting e gestione delle password.

Per quanto riguarda quest’ultima parte ho fatto una distinzione a seconda dei casi d’uso della password in stessa. Se infatti la password è necessaria per implementare un nostro meccanismo di login, allora l’ideale è salvarla sotto forma di HASH, magari con l’aggiunta di un salt (Password Storage Cheat Sheet). Ma se è necessario poter decifrare la password per usarla ad esempio durante l’autenticazione ad un servizio terzo (un server database, di posta o un’API ReST) ovviamente questa soluzione non è praticabile.

In questo caso è necessario salvare la password cifrandola con un algoritmo reversibile come AES. Il problema è: dove metto la chiave usata per la cifratura? Questa è proprio la domanda che mi ha fatto uno dei partecipanti al seminario.

Il problema è che non c’è una risposta risposta che vada bene in ogni caso possibile. Questo infatti è un caso di defensive programming, cioè un tipo progettazione del codice dove si cerca di adottare strategie che facciano funzionare il programma in tutti i casi anche se non sappiamo esattamente il tipo di problema da cui ci stiamo difendendo.

In questo caso dobbiamo fare una serie di ragionamenti, per esempio se la password è salvata sul database la chiave crittografica dovrà stare da un’altra parte. Il ragionamento generale è che password è chiave crittografica devono stare in due posti diversi, in modo che se uno risulti compromesso possiamo sperare che l’altro non lo sia.

Un’altra soluzione potrebbe essere salvare la chiave direttamente nell’eseguibile, magari cercando di nasconderla in qualche modo, per esempio in esadecimale o come array di byte. Questo renderebbe il recupero della chiave un po’ più complicato, ma per un attaccante motivato non è certo un ostacolo insormontabile, in più lascerebbe la chiave visibile a chiunque abbia accesso ai sorgenti (di certo non è una buona idea nei progetti Open Source).

In alcuni casi è possibile usare delle apposite API del sistema operativo. Su Windows c’è DPAPI (Data Protection Application Programming Interface) che fondamentalmente usa la password dell’utente di Windows come master password. Il limite è che chi cifra la password deve avere le stesse credenziali di chi la decifra.

Se poi l’applicazione usa già servizi cloud, sia Microsoft che Amazon offrono servizi di storage sicuro (Amazon KMS o Azure Key Vault).
Insomma come già dicevo durante il Webinar non esiste una soluzione semplice ma è necessario valutare la migliore strategia che risolva il nostro problema.

Happy coding.

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/


lunedì 23 luglio 2018

Benvenuta Delphi Community Edition!


Embarcadero ha detto addio all'edizione Starter! A sostituirla la nuovissima Delphi (e C++ Builder) Community Edition!

La Community Edition è dedicata a tutti i programmatori giovani, agli studenti, alle startup e alle piccole società e organizzazioni che vogliano sperimentare ed imparare a sviluppare utilizzando uno strumento altamente professionale. E' installabile anche da programmatori Delphi e C++ Builder che lavorano per una società ma che a casa vogliono usarlo per progetti personali o per partecipare a progetti Open Source.

Come per la Starter, anche per la Community Edition ci sono alcune restrizioni relative all'uso per scopi commerciali: puoi sfruttare questa edizione ad uso personale o commerciale con un limite di 5.000$ di entrate annue, superata questa cifra o il numero di 5 programmatori, dovrai acquistare un'edizione completa come la Professional, l'Enterprise o l'Architect.


Ma non preoccuparti, quando i tuoi progetti spiccheranno il volo potrai continuare a lavorare con un'edizione a pagamento ma con la base di codice che ha già creato.

La Delphi Community Edition è un IDE completo che grazie a tutte le sue funzionalità permette di creare applicazioni iOS, Android, Windows e macOS da un'unica base di codice Delphi.


Con questa mossa Embarcadero ritorna a spingere per un'adozione massiccia di Delphi da parte di studenti, hobbisti ed in generale tutti quelli che vogliono provare a programmare con questo fantastico strumento di sviluppo. Se vuoi provare immediatamente la Community Edition di Delphi o C++ Builder, scaricala, guarda il video per l'installazione e... inizia a creare le app che hai in mente!





Go Delphi forever!

lunedì 9 aprile 2018

Idera, Inc.: cosa ci aspetta nel 2018




Quali sono stati i trend di sviluppo del 2017 e cosa ci aspetta nel 2018?

Lo scopriamo con il "pronostico" di Atanas Popov, Embarcadero General Manager:


Il nostro scopo è quello di fornire i migliori strumenti per lo sviluppo, il database management e per i testing.
Monitoriamo con attenzione gli sviluppi del settore per assicurarci che i nostri prodotti si evolvano e garantiscano valore ai migliaia di utenti sparsi in tutto il mondo. 

La nostra attività ha avuto un notevole successo nel 2017 e Delphi continua a guadagnare terreno in maniera incredibile!
Inoltre, lo scorso agosto, abbiamo acquisito Sencha ExtJS combinando il nostro principale framework commerciale JS e gli strumenti per lo sviluppo web nel nostro portfolio.

Visto che il 2018 è appena iniziato, è il momento giusto per rivisitare i trend del 2017 del nostro settore e provare a fare alcune predizioni per il futuro. 
Perché si sa, gli sviluppatori domineranno il mondo!

La strategia da adottare è rendere le cose sempre più semplici per gli sviluppatori che premendo un solo pulsante potranno avere una serie di strumenti integrati. 

[...]

Quest'anno inizieremo anche a vedere un aumento nell'utilizzo di Progressive Web App  (PWA) con aggiornamenti nei browser mobile. Gli sviluppatori Web adotteranno velocemente le tecnologie PWA con servizio di assistenza, notifiche e sincronizzazione, e creeranno Web App PWA moderne, veloci ed affidabili come le app native.

Inoltre le aziende cercheranno un equilibrio tra uno sviluppo veloce su molte piattaforme rispetto all'esperienza nativa. I framework Web come Reactive Native (e ExtJs) continueranno a diventare sempre più popolari, ma lo saranno anche in altri framework nativi come Xamarina e FireMonkey (FMX).
Anche gli strumenti nativi per Android e iOS continueranno a migliorare.

Vedremo anche un ritorno all'IDE di programmazione orientata agli oggetti e gli IDE avranno più componenti di servizi cloud con una facile implementazione e opzioni di integrazione.

Di base possiamo dire che gli sviluppatori hanno a disposizione moltissime scelte e che questa tendenza non può che aumentare. Gli strumenti di sviluppo Idera, Inc.  offrono le migliori soluzioni al mondo per aiutare gli sviluppatori a creare delle cose straordinarie. Non vedo l'ora di vedere cosa ci sarà di nuovo nel corso del nuovo anno!

Fonte: https://community.embarcadero.com/article/16604-idera-inc-2018-predictions


martedì 20 febbraio 2018

UPGRADE: ultima occasione!


Attraverso la voce del General Manager Atanas Popov, Embarcadero ha annunciato un’importante novità: a partire dal 31 marzo 2018 verranno dismessi gli SKU relativi agli upgrade.

Dal 1° aprile 2018 (e no, non è uno scherzo!) resteranno disponibili solamente le nuove licenze e l’Update Subscription, un abbonamento annuale che consente di mantenere il proprio prodotto aggiornato alle ultime release.

Prima di ritirare l’upgrade, Embarcadero concede a tutti gli utenti che non l’avessero ancora fatto di aggiornare la propria licenza tramite un "Upgrade Amnesty". Un’ultima occasione per trasformare la propria datata versione precedente alla XE6 in una 10.2 Tokyo.


Dal post di Atanas Popov del 22/01/2018:

Cari clienti,


Alcuni anni fa abbiamo introdotto il nostro programma di Update Subscription. [...] La nostra roadmap e la strategia di realese dei prodotti sono allineate con questa filosofia, poiché ci impegniamo a rendere molto più semplici gli aggiornamenti alle nuove versioni.

[...]

Il nostro obiettivo è rendere più facile per tutti usufruire delle ultime funzionalità e correzioni che abbiamo sviluppato. Oggi, la maggior parte dei nostri clienti si è spostata su Update Subscription e lo SKU Upgrade non ha molto senso.

Questo trimestre (che termina il 31 marzo) sarà l'ultimo ad offrire aggiornamenti. In linea con la nostra pratica di avvisi anticipati, vogliamo lasciare un margine di tempo ai clienti che per qualsiasi ragione volessero effettuare l’upgrade per aggiornare il proprio prodotto.
Abbiamo eseguito diverse Amnesty (vale a dire la possibilità di eseguire l'aggiornamento da versioni datate) negli ultimi due anni e ne eseguiremo un'altra mentre ritiriamo questo SKU. 

[...]

Insieme, abbiamo fatto grandi passi avanti nella divulgazione di RAD Studio per lo sviluppo di Delphi e C ++. Monitoriamo attentamente le offerte competitive e siamo fermamente convinti che il valore che i clienti ricevono con i nostri prodotti sia di gran lunga superiore al costo. Spero che tu ti senta allo stesso modo.

Sono davvero entusiasta di alcune delle prossime versioni. Sia il 10.2.3, questo trimestre, sia le numerose release future, offriranno funzionalità e miglioramenti di qualità eccezionale. Il 2018 sarà un altro anno che vedrà Delphi e C ++ Builder prendere il volo! 

Go RAD Studio !!!

FONTE: https://community.embarcadero.com/article/articles-support/16598-upgrade-sku-to-be-discontinued-in-q4

Se hai una licenza precedente alla XE6, adesso è davvero il momento (l'ultimo momento) per aggiornarla tramite un upgrade!

martedì 7 novembre 2017

Delphi Day 2017 (Padova Edition)



Wintech-Italia s.r.l. organizza l’evento Delphi Day 2017 (Padova Edition): un incontro, gratuito, di mezza giornata per un aggiornamento sullo stato attuale di Delphi.

L'evento in edizione 2017 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.

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 (Linux, MacOSX, iOS, Android). 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

Conferenza: Delphi + Ext JS: la soluzione definitiva per il Web?



Con l'acquisizione di sencha da parte di IDERA, entra come strumento di sviluppo una delle migliori libreria JavaScript esistenti sul mercato. In Wintech abbiamo usato questa libreria da diversi anni per lo sviluppo Web e siamo convinti che per uno sviluppatore Delphi questa libreria rappresenti la scelta migliore per la costruzione di applicativi web performanti, con un'interfaccia utente gradevole e moderna, con pesante accesso a database e con buone performance!

Il biglietto di ingresso gratuito comprende l'ingresso alla conferenza del pomeriggio e il coffee break


Conferenza: High Performance 3D con Delphi


Se avete bisogno di creare e gestire modelli e scene 3D (applicazioni industriali, automazione, ecc...) realmente performanti i linguaggi ad alto livello (Delphi, Java, C#) non riescono a competere con le librerie 3D scritte in C++. In questa sessione vedremo come unire il meglio dei due mondi: la potenza e le prestazioni di calcolo di C++ e la facilità d'uso di Delphi:

Il biglietto di ingresso gratuito comprende l'ingresso alla conferenza del pomeriggio e il coffee break


Conferenza: Deployment su Linux: quali vantaggi


Lo sviluppo su piattaforma Linux amplia notevolmente le possibilità di deployment degli applicativi (server) costruiti in Delphi. Oggigiorno è importantissimo sfruttare appieno le possibilità offerte dai servizi "cloud" di Amazon AWS, Microsoft Azure, Google Cloud, ecc.. per avere piattaforme di distibuzione a basso costo, performanti e comode da gestire.

Il biglietto di ingresso gratuito comprende l'ingresso alla conferenza del pomeriggio e il coffee break


Seminari pre-conferenza


Sala A: Applicazioni MVVM cross-framework (VCL-FMX-WEB)

Riusabilità, manutenibilità e testabilità sono concetti importantissimi per chi sviluppa software al giorno d'oggi. Riutilizzare la maggior parte del codice anche tra progetti cross-platform e, perché no, anche cross-framework (VCL-FMX-WEB), sarebbe bello vero? Obiettivo di questo corso è dimostrare come, con l'utilizzo di strumenti adatti (iORM-MVVM), sia possibile applicare questo pattern anche in Delphi senza dover necessariamente rinunciare alle caratteristiche RAD che lo hanno reso il nostro ambiente di sviluppo preferito... anzi!


Sala B: Architettura a microservizi in Delphi

Un'architettura monolitica per la costruzione degli application server può risultare comoda all'inizio ma rappresenta un limite alla crescita e alla complessità dell'architettura stessa. L'architettura microservices consente di espandere a piacimento la propria architettura senza incorrere in limiti predefiniti. In questo workshop vedremo nel dettaglio la teoria dell'architettura microservices, i vantaggi e gli svantaggi e come costruirli con Delphi.

Il biglietto di ingresso per i seminari comprende l'ingresso ai seminari, alla conferenza, al pranzo e ai coffee break







Agenda conferenza
13:45

Registrazione dei partecipanti

14:20 Lo stato e il futuro di Delphi

Paolo Rossi - Wintech Italia

Un altro anno importante per Delphi: una nuova piattaforma supportata, ottimi risultati di vendita e un generale "ritorno" di Delphi tra la comunità internazionale degli sviluppatori. In questa sessione scopriremo cosa ci riserva il futuro del nostro strumento di sviluppo.

15:00

Sviluppo Linux in Delphi: Quali vantaggi?

Paolo Rossi, Luca Minuti - Wintech Italia

Lo sviluppo su piattaforma Linux amplia notevolmente le possibilità di deployment degli applicativi (server) costruiti in Delphi. Oggigiorno è importantissimo sfruttare appieno le possibilità offerte dai servizi "cloud" di Amazon AWS, Microsoft Azure, Google Cloud, ecc.. per avere piattaforme di distribuzione a basso costo, performanti e comode da gestire.

15:50

Coffee Break

16:10

High performance 3D in Delphi

Paolo Rossi - Wintech Italia


Se avete bisogno di creare e gestire modelli e scene 3D (applicazioni industriali, automazione, ecc...) realmente performanti, i linguaggi ad alto livello (Delphi, Java, C#) non riescono a competere con le librerie 3D scritte in C++.
In questa sessione vedremo come unire il meglio dei due mondi: la potenza e le prestazioni di calcolo di C++ e la facilità d'uso di Delphi:

17:00

T.B.D.

17:40
Delphi REST + Sencha Ext JS = Web
Paolo Rossi, Luca Minuti - Wintech Italia

Con l'acquisizione di sencha da parte di IDERA, entra come strumento di sviluppo una delle migliori libreria JavaScript esistenti sul mercato. In Wintech abbiamo usato questa libreria da diversi anni per lo sviluppo Web e siamo convinti che per uno sviluppatore Delphi questa libreria rappresenti la scelta migliore per la costruzione di applicativi web performanti, con un'interfaccia utente gradevole e moderna, con pesante accesso a database e con buone performance!

18:15

Conclusione




Agenda seminari

08:45

Registrazione dei partecipanti

09:20

Track 1: Applicazioni MVVM cross-framework (VCL-FMX-WEB)

Maurizio Del Magno - Levante Software

Riusabilità, manutenibilità e testabilità sono concetti importantissimi per chi sviluppa software al giorno d'oggi. Riutilizzare la maggior parte del codice anche tra progetti cross-platform e, perché no, anche cross-framework (VCL-FMX-WEB), sarebbe bello vero? Obiettivo di questo corso è dimostrare come, con l'utilizzo di strumenti adatti (iORM-MVVM), sia possibile applicare questo pattern anche in Delphi senza dover necessariamente rinunciare alle caratteristiche RAD che lo hanno reso il nostro ambiente di sviluppo preferito... anzi!
  • Logica di visualizzazione
  • Logica di presentazione
  • Command binding
  • Data binding
  • Contesto di visualizzazione
09:20 Track 2: Architettura a microservizi in Delphi

Luca Minuti - Wintech Italia

Un'architettura monolitica per la costruzione degli application server può risultare comoda all'inizio ma rappresenta un limite alla crescita e alla complessità dell'architettura stessa. L'architettura microservices consente di espandere a piacimento la propria architettura senza incorrere in limiti predefiniti. In questo workshop vedremo nel dettaglio la teoria dell'architettura microservices, i vantaggi e gli svantaggi e come costruirli con Delphi.
  • I vari tipi di architettura
  • SOA & REST
  • Programmazione stateless
  • I principi di scalabilità, disponibilità, consistenza
  • Costruire microservices con Delphi
11:00

Coffee Break

12:30 Conclusione e Pranzo

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