ANN: DelphiMVCFramework 3.0 beta

In the last months some of the great 9 DelphiMVCFramework contributors from all over the world, have worked hard to release the version 3.0. Now it is ready to be tested!

dmvcframework

DelphiMVCFramework is one of the most popular RESTful framework for Delphi, so any change has been accurately considered and also its impact on the current 2.x projects has been take in consideration. There are a lot of new core features that will make even more easy to work on (and with) your beloved RESTful framework. Also, all these changes will make the framework even more flexible regarding the serializators even for custom types (yes, now you can register your custom serializer for your data types). Also, JSON is no more the only “built-in” supported format. Well, now JSON is the only format, but now is really easy to add to the serializers registry a brand new serializer which serialize in XML, YAML, BSON, CSV etc. The serializers are recicled between requests to get the maximum performances.

Considering that some often-used methods have been removed or refactored, we tracked all the breacking changes in a document, so that you can evaluate the impact that the new version may have on your projects.

Here the content of the document as it is today (the latest version is available here).

DelphiMVCFramework 3.0.0 breaking changes

  • RenderListAsProperty has been removed from TMVCController. You can set such kind of specialized serializations in your custom base controller.
  • RenderJSONArrayAsProperty has been removed from TMVCController. You can set such kind of specialized serializations in your custom base controller.
  • Render has been removed from TMVCController (was deprecated).
  • Render(TJSONValue) has been removed from TMVCController (use Render(TObject)).
  • Trying to deserialize a TJSONNull the target instance will not be freed anymore (consistency with serialize).
  • Context.Request.BodyAsJSONObject dosen’t exist any more. Use BodyAs or the following pattern to migrate.
JSON := TJSONObject.ParseJSONValue(Context.Request.Body) as TJSONObject;
try
  if not Assigned(JSON) then
    raise EMVCException.Create('Invalid JSON');
  // do something here
finally
  JSON.Free;
end;
  • TMVCConfigKey moved to unit MVCFramework.Commons.
  • TMVCMimeType was renamed to TMVCMediaType.
  • TMVCController.Render (no parameter method) do not exist anymore. If the return is a ResponseStream, use the RenderResponseStream.
  • TMVCController.PushJSONToView was renamed to PushToView and Removed SystemJSON dependency, use the ToJSON method if necessary.

As you can see, the breaking changes are very few and there are very low probabilities that will require you more than 10 minutes to fix them even in a big DelphiMVCFramework 2.x project. I did it for our biggest projects, and 10 minutes are largely over-estimated.

Beta Tests

For the next weeks/months the 3.0 beta version will be available for testing. If no major bugs will be found, the 3.0 will be merged in the main branch.

To test the 3.0 beta version you have to checkout the “pluggable_mapper” branch (clone the repo if you didn’t already, and then checkout the “pluggable_mapper” branch).

You can go back to the 2.1.6 (carbon) when you finished the test. There is no reason to be afraid about the changes. They are really in the deep layers and should not affect the “normal” services.

Happy testing!

Community

Considering all the help requests coming from the users (and the fact that facebook is not permitted in some companies) we at bit Time Professionals (the company which lead the development of DelphiMVCFramework and other open source Delphi projects) decided to create a specific community and leave the facebook group only for announces and polls.

Some of bit Time Professionals Open Source Projects
Some of bit Time Professionals Open Source Projects

So, if you need help about DelphiMVCFramework, LoggerPro, Delphi Redis Client, columbusegg4delphi, Delphi Event Bus, Delphi STOMP client, you can go to the bit Time Professionals Community and ask there. If you want to support the projects or you need fast responses, you can also subscribe to the “professional support” group (with a very low fee) and your requests will get priority upon the other by our engineers (which likely wrote 80% of the framework code). When possibile, the support team will send you a specific sample written specifically to show you how to solve your problem. The “professional” groups will be available soon. If you are interested about prices or other things related to the professional support, ask to professionals(at)bittime(dot)it.

Currently is just started, go to subscribe now!

 

DT

Delphi 10.2 Tokyo: REDIS Client is ready for Linux (VIDEO)

Now that Delphi can compile for Linux, I’d like to show how to use Delphi REDIS client on Linux.
Redis is a very powerful key-value store server used by the biggest companies in the world. While it is very popular in web applications with thousands of concurrent users, also traditional desktop applications can benefits by REDIS.
If you need to speedup you application or if you want to optimize your data access layer, I suggest you to partecipate to one of our Delphi and REDIS training.
In this video I’ll use a sample project included with the Delphi REDIS client project to show how is possibile to use REDIS to integrate Delphi Windows application and Delphi Linux servers.

The Linux compatible version of Delphi REDIS Client will be available through GetIt ASAP.

Enjoy.

Delphi REDIS Client

https://github.com/danieleteti/delphiredisclient

RAD Studio Tokyo 10.2 Live Preview events in Rome and Milan

Yesterday and the day before, I was been the presenter for the RAD Studio 10.2 Tokyo Live Preview in Rome and Milan. There were a lot of interested people. As we all know, the Linux support was really awaited for the last 15 years or so (since the kylix time frame) all this interesting was awaited.

During the event I talk about some of the Windows 10 additions already present in the last versions and then I focused the biggest part of the “show” on the Linux support. I come with a couple of virtual machine; the first with Windows 10 and the last beta version of RAD Studio 10.2 Tokyo and the second with an Ubuntu 16.04.2 LTS. The audience has been really excited about all the possibilities. Now you can deploy your Delphi code as console applications or Apache modules into your Linux box. At the time I’m writing the officially supported distributions are Ubuntu 10.x LTS and RedHat Enterprise 7, but the binaries should works also in other “similar” distribution (for instance I plan to test ASAP a Debian server).

At the end of the events there’s been the prize draw for a total value of 20K euros more or less.

Here’s some photos of the Rome event.

WhatsApp Image 2017-03-16 at 08.49.27 (1)

 

And the winners of the prize draw i Rome are…
WhatsApp Image 2017-03-16 at 08.49.25 (1)

WhatsApp Image 2017-03-16 at 08.49.25

Here’s the photos of the Milan event

WhatsApp Image 2017-03-16 at 18.11.40 (1)

WhatsApp Image 2017-03-16 at 18.11.42

C7Dk_vwWcAUofE4

 

And the Milan winners are…

WhatsApp Image 2017-03-16 at 18.11.40

WhatsApp Image 2017-03-16 at 18.11.49

WhatsApp Image 2017-03-16 at 18.26.10

 

RAD Studio 10.2 Tokyo is a really promising release. Considering the current subscription model and all the new features that can be added in a relatively short amount of time, I think that we will see a lot of new development in the Linux and mobile area in not too much time.

See you soon.

 

DT

 

 

 

 

 

 

Delphi Redis Client available through GetIt Package Manager

Delphi Redis Client
Delphi Redis Client Logo

Since some days ago, Delphi Redis Client, the official redis client for Delphi, is available through GetIt.

You can get the library with just a click, now there aren’t reasons to be afraid by Redis utilization 🙂

More info and the (very simple) installation instruction at the dedicated page.

The official repository if on github https://github.com/danieleteti/delphiredisclient

ITDevCon Community Workshops: DelphiMVCFramework & Multithreading

As you probably know, monday and tuesday we held 2 ITDevCon Community Workshop.

On monday we had “Tutto su DelphiMVCFramework” (All about DelphiMVCFramework) a very intensive workshop which introduce al the major features about DelphiMVCFraemework:

  • DelphiMVCFramework architecture
  • Understanting Routing
  • Controllers
  • Routes and parameters
  • Renders
  • Action filters
  • Accessing data
  • Be amazed by the Mapper’s features
  • Sessions
  • JSON Web Token support (JWT)
  • Middleware
  • The built-in Authentication & Authorization framework
  • Serving static files
  • Server Side Views (a.k.a. SSV)
  • Using Push Notifications with DMVCFramework and RabbitMQ
  • The built in RESTClient
  • The amazing RESTAdapter (by Daniele Spinetti)

After a basic introduction about controllers, routing and renders, we give a look on all the advanced features. The people have been amazed by the framework flexibility and simplicity.

Here’s some photos.

img_20161128_095551

About to start…

start-dmcvframework

 

The class during the morning session

img_20161128_102706

 

Lunch time!

img_20161128_131933

 

And the end of the monday session, my friend Maurizio Del Magno brings a lot of piadinas (https://en.wikipedia.org/wiki/Piadina) and offered to cook them. So, we bring some Porchetta di Ariccia  (https://en.wikipedia.org/wiki/Porchetta) and organized the first ITDevCon Community Dinner 🙂

 

Here’s Maurizio while is cooking the piadinas.

img_20161128_181600

 

And this is the porchetta!img_20161128_181640

 

This is the link for the complete photo album

 

The day after, we had the workshop: “Tecniche per il multhreading” (multithreading tecniques). Have been introduced and explained all the major problems related to multithreading programming and then we show the fundamental tecniques to cope with them, including Parallel Programming Library. There were the topics.

 

  • What’s a thread?
  • TThread Basics
  • Synchronize background threads with the main thread: the easy way
    • Synchronize
    • TThread.Synchronize
    • Thread.Queue
  • How to correctly destroy a thread
  • When a piece of code is thread safe?
  • Fundamental synchronization tools
    • Critical section – TCriticalSection
    • Interlocked function – TInterlocked
    • Monitor – TMonitor
    • Mutex – TMutex
    • Events – TEvent
  • The producer-consumer pattern
  • Beware to the deadlock!
  • The RTL thread safe classes
    • TThreadedQueue<T>
    • TThreadList<T>
  • Practical applications of multithreading in database programming
    • Background queries
    • Parallels queries
  • Background HTTP requests
  • The parallel programming library: TTask, TFuture and TParallel.&For

Here’s some photos of the second day of workhop

img_0209

img_20161129_115604

The “multithreading” class

img_20161129_100147

This is the link for the multithreading workshop album.

 

These 2 days have been very intensive, however have been a really success: lot of people, lot of good-old Delphi programmers but also a good number of younger (50%/50% more or less).
I’m planning to organize other ITDevCon Community WorkShop in the beginning of 2017.

See you soon guys, and keep in touch!

 

 

Delphi 10.1 Berlin Update 2 – startup problems and fixes

Just a quick note to leave documentation for other Delphi and C++Builder developers around here.

After installing the RAD Studio 10.1 Berlin Update 2 my RAD Studio installation was broken.

The installation reach the end but when I start RAD Studio I get a lot of messages of “Package raise exception XXX do you want to load the next time?”. All the dbx related packages raises that exception. Disabling all the dbx packages I get my RAD Studio running but it is half-working… here and there there are AV, and if I try to reinstall the dbx related packages I get the following error.

pasted-image-at-2016_11_17-17_33

Moreover, I cannot use any of the deploy facilities built into the product. The PAClient executable return always “Error 217” even if launched from the command line.

After some struggling with this problem, my friend Stefan Glienke point me to the right direction with the following message: “I think I had some issue with the DBX package in a previous reinstall and IIRC it was because of a misconfigured/corrupt dbx settings file somewhere.”.

That point me to the right direction. I renamed the dbxconnections.ini and the dbxdrivers.ini so that the bpl cannot find them. Restarting RAD Studio I can reenable the dbx related package and the PAClient start to works as well.

So, I closed RAD Studio and opened the inifiles to check where could be the problems. Seems that in some installation/reinstallation/update some keys and section of the ini have been duplicated. So I just fixed the ini removing the duplicated sections and keys, renamed the files with the correct names and restarted RAD Studio.

Now it works.

ITDevCon: -15 days

In about 2 weeks ITDevCon 2016 will start!

The agenda is final since one week already, with most of the speeches already defined months ago.

You can check the agenda here: http://www.itdevcon.it/en/agenda

Get Your Ticket

We have 15 speakers from all over the world, from Brazil to Slovenia, from Germany to Italy; lot of contents, lot of topics. Almost all the speakers are Embarcadero MVP.

In every field you as Delphi developer usually works, will find something really interesting at ITDevCon.

Are you exploring how to create web client applications?

We’ll talk about interfacing between Delphi and web technologies with 2 speech specialized about Angular2 from Google and React from Facebook.

Do you want to stay current with your Delphi knowledges?

At ITDevCon we have the most updated list of news in the Delphi world! The market go on you cannot miss the technology that can give you a competitive advantage!

Do you need to know a clear path to apply unit tests in your Delphi code?

There will be a speech which talk about everything you need to know to start to use unit tests!

Are you using Firebird and you plan to migrate to version 3.0?

At ITDevCon we’ll talk beeply about the new Firebird 3.0, how to migrate to it from the previous version and how to optimize Firebird databases.

Do you need an application server and you have to choose among what the market offers?

At the conference there will be 2 speeches about DelphiMVCFramework, one of the most popular framework for REST services in Delphi, and MARS Curiosity, another framework to evaluate.

Do you need to speedup your applications?

There are specific talks about Redis and MongoDB which will make your application faster than ever.

Are you working in a particular complex environment to debug?

ITDevCon will offer a couple of talks about the advanced utilization of Delphi debugger and memory manager.

Are you interested in Dependency Injection and ORM?

The lead developer of Spring4d framework will talk to us about the latest version of the framework which address these particular needs (among other).

Are you interested in IoT, Arduino or Mobile?

There 2 speech about this topics showing how to integrate Delphi mobile app and an Arduino board.

Are you wondering about the new possibilities provided by the Windows Anniversary Update?

At ITDevCon there will be a session focused on using WinRT APIs from Delphi and building applications for the UWP Desktop Bridge (aka Centennial Bridge) in Windows 10 Anniversary Edition!

 

You can also get the ticket for only one of the two days of the conference.

More over our beloved sponsors give us a set of complete licenses and books for the conference attendants that will be available at the Prize Draw at the end of the second day. There are also chances that the value of what you may win is more than the price of the ticket you payed to be there!

Really, don’t miss this edition and Get your ticket!

See you in Rome!

We have the number, “Delphi Cookbook 2nd Edition” is a bestseller!

Delphi Cookbook 2nd Edition was published by PacktPub at the end of June 2016. I’m very happy to see that in just 30 days, it has become a bestseller in its category.

So far, the book has sold 13 copies each day, which is a good figure for a tech book (it should increase in the following months because the book will be available in more stores).
Currently the book is available on all the big online stores.

PacktPub Store

https://www.packtpub.com/application-development/delphi-cookbook-second-edition

Amazon 

https://www.amazon.com/Delphi-Cookbook-Second-Daniele-Teti-ebook/dp/B01A14X6IC/ref=sr_1_1?s=digital-text&ie=UTF8&qid=1470390240&sr=1-1#nav-subnav

Apple iTunes

https://itunes.apple.com/us/author/daniele-teti/id923580889?mt=11

O’REILLY

http://shop.oreilly.com/product/9781785287428.do

 

Some notes about ITDevCon 2016

PacktPub will be a sponsor of the upcoming ITDevCon in Rome (ITDevCon is the biggest Delphi Conference in Europe – www.itdevcon.it)  and they have organized a nice offer for all the ITDevCon attendants!

If you are a Delphi developer (or you want to know why Delphi is so interesting now) you cannot miss ITDevCon 2016.

Get your ticket here http://www.itdevcon.it/registration#ticket

Moreover, since the 1st edition of ITDevCon we saw that a lot of programmers wants to be at ITDevCon because is a great conference full of practical contents (and with good italian food 🙂 ) but leaving the office for 2 days often can be a problem. So, starting by this year, you can buy also a single day of conference! So, if you cannot be with us for 2 days, check the timetable, and book the day most interesting for you!

 

 

 

 

 

Delphi Cookbook – 2nd Edition

Delphi Cookbook 2nd Edition

Starting from today my Delphi Cookbook 2nd edition is available to buy. The first edition got a lot of interest and appreciation comments. Delphi Cookbook is a best sellers for PacktPub (my editor) in its category, the editor decided to ask me a 2nd edition. So here it is!

What’s new

The problem with each “2nd” edition is: “What I can expect if I already bought the 1st one?”. This edition contains all the recipes from the 1st edition updated to the new Delphi 10.1 Berlin, plus a lot (ca 150 pages) of brand new contents. There is also a brand new chapter about less-known RTL classes. Also some “old” recipes has been completely rewritten because some techniques has been superseded by the newer Delphi versions. So, if you liked the 1st edition, you should find something interesting also in the 2nd one. The 2nd edition contains 470 pages compared to the 328 of the 1st edition.

Topics of the book

  • Understand the basics of professionals Delphi programming
  • Become a Delphi language Ninja
  • Knowing the new RTL classes to work with HTTP/S, Net encodings, event bus, compression etc.
  • Develop visually stunning applications using FireMonkey
  • Deploy LiveBinding effectively with the right OOP approach
  • The thousand faces of multithreading: syncronization tecniques in the real world
  • The Parallel Programming Library: Tasks, Futures parallel For
  • Create server-side programs to serve RESTful web services and provide data to your mobile apps
  • Use well-defined GUI design patterns to build mobile applications that provide a great user experience
  • Build mobile apps that read data from a remote server efficiently
  • Using sensors and network in mobile apps
  • Call the platform native API on Android and iOS even for an unpublished API
  • Manage software customization for your customer by making better use of an extended RTTI
  • Implement the most popular design pattern without wasting too much time on debugging and bug fixing

Some considerations

Delphi Cookbook 2nd edition, just like to 1st one, it is not an introductory book, you will not find any “Introduction to the Object Pascal language”, however the majority of the chapters are not too complex and can be grasped also by the new Delphi programmers.

Where to buy

The book is available for sale on the editor website and on Amazon.

PacktPub (Official book page)

https://www.packtpub.com/application-development/delphi-cookbook-second-edition

Amazon

Delphi Cookbook 2nd Edition on Amazon

 

Table of contents

Chapter 1: DELPHI BASICS

  • Change your application look&feel with VCL styles and no code
  • Changing the style of your application at run time
  • Customizing TDBGrid
  • Using owner draw combos and listboxes
  • How to make an owner draw control aware of the VCL styles
  • Creating a stack of embedded forms
  • Manipulating JSON
  • Manipulating and transform XML documents
  • I/O in the 21th century: knowing the streams
  • Creating a Windows service
  • Associating a file extension with your application on Windows
  • Be coerent with the Windows look&feel using TTaskDialog

Chapter 2: BECOME A DELPHI LANGUAGE NINJA

  • Fun with anonimous methods – using higher-Order functions
  • Writing enumerable types
  • RTTI to the rescue – configuring your class at runtime
  • Duck typing using RTTI
  • Creating helpers for your classes

Chapter 3: KNOWING YOUR FRIENDS: THE DELPHI RTL

  • Check strings with regular expressions
  • Consuming RESTful services using native HTTP(S) client libraries
  • Cope with the encoded Internet world using System.NetEncodings
  • Save space using System.Zip
  • Decouple your code using a cross platform publish/subscribe mechanism

Chapter 4: GOING CROSS PLATFORM WITH FIREMONKEY

  • Giving a new appearance to the standard FireMonkey controls using styles
  • Creating a styled TListBox
  • Impressing your clients with animations
  • Using master/details with LiveBindings
  • Showing complex vector shapes using Paths
  • Using Firemonkey in a VCL application
  • Reinvent your GUI a.k.a Mastering Firemonkey controls, shapes and effects

Chapter 5: THE THOUSAND FACES OF MULTITHREADING

  • Synchronizing shared resources with TMonitor
  • Talking with main thread using a thread safe queue
  • Synchronizing multiple threads using TEvent
  • Displaying a measure on 2D graph like an oscilloscope
  • Using the Parallel Programming Library in the real world: Tasks
  • Using the Parallel Programming Library in the real world: Futures
  • Using the Parallel Programming Library in the real world: Parallel For/Join

Chapter 6: PUT DELPHI ON THE SERVER

  • Developing web client JavaScript applications with WebBroker on the server
  • Converting a console service application to Windows service
  • Serializing a dataset to JSON and back
  • Serializing objects to JSON and back using RTTI
  • Sending a POST HTTP request encoding parameters
  • Implementing a RESTful interface using WebBroker
  • Controlling remote application using UDP
  • Using AppTethering to create companion app
  • Creating DataSnap Apache modules
  • Creating WebBroker Apache modules
  • Using native HTTP(S) client libraries

Chapter 7: RIDE THE MOBILE REVOLUTION WITH FIREMONKEY

  • Taking a photo, applying effects, and sharing it
  • Using ListView to show and search local data
  • Using SQLite databases to handle a to-do list
  • Do not block the main thread!
  • Using a styled TListView to handle long list of data
  • Customizing the TListView
  • Taking a photo and location and sending it to a server continuously
  • Talking with the backend
  • Making a phone call from your app!
  • Tracking the application’s lifecycle

Chapter 8: USING SPECIFIC PLATFORM FEATURES

  • Using Android SDK Java classes
  • Using iOS SDK classes
  • Displaying PDF files in your app
  • Sending Android intents
  • Letting your phone talk: using the Android TextToSpeech engine
  • Using Java classes in Android apps with Java2OP
  • Do it in background, the right way: Android services

Events

In the next months there will be some events regarding the book.

  1. A one day workshop, held in Rome and Milan, about selected recipes of the books with additional contents and other “live” considerations.
  2. Some blog post about contents that not fitted (by time and other contraints) in the book. Most of them will be about the server side development and will involve Redis and other open source projects.
  3. Oct 6,7 2016 PacktPub will be one of the sponsor of ITDevCon 2016. During that event there will be some surprises for the attendants offered by the Delphi Cookbook “series” (yes, 2 is a series 🙂 ) editor.

 

Conclusions

As usual, writing a tech book is an hard task. 470 pages are more than I was thinking at the day 0. However, I’m quite (not completely, as usual) satisfied about the work. I really hope that you will enjoy the content at least as much I enjoy the writing.

ITDevCon 2016 – Call4Paper

ITDevCon2016 logo
UPDATE:

ITDevCon2016 will be held next Oct 6th, 7th in Rome (Italy).

The post has been updated as well.

Dear potential ITDevCon speaker,

As every year (but 2015), I’m building the agenda for next ITDevCon that will be held next October 6th, 7th in Rome (Italy), in a new location, the bit Time group headquarter!

This will be the 7th conference edition and will be organized by bit Time Professionals, part of the bit Time Group.

The call for papers are officially open right now, so if you want to propose some speeches, I’ll be glad to see them.

Send your Call4Paper to d.teti@bittime.it.

As usual, for the Call4Paper I need:

  • Title (for every talk)
  • Abstract (for every talk)
  • Difficulty level (for every talk. Difficulty level is a scale from 1 to 3 with the following mean: introduction, intermediate, advanced)
  • Speaker’s photo
  • Speaker’s profile

I’m looking forward to your proposal. The call4papers ends at Jul 31st, 2016 but if you have *VERY* interesting topic to propose, propose it… I’ll try to arrange the schedule and fit it in the agenda.

Proposals will be evaluated and the speakers will be contacted ASAP.

This year topics will be the following:

TOPICS

  • What’s new in the latest Delphi versions
  • IoT (Internet of Things) solutions
  • FireMonkey platform
  • MacOSX development
  • Android development
  • iOS development
  • Windows development
  • Mobile development (Android and/or iOS)
  • Develop UIs for different devices (smartphones, tablets, TV, watch etc)
  • LiveBindings ®
  • Delphi best practices
  • Design Patterns
  • Open Source Delphi Frameworks (Spring4d, DelphiMVCFramework etc)
  • Arduino, Raspberry Pi or others similar system
  • Web Application with Delphi
  • Integration with external systems
  • TDD and Unit Tests
  • Agile methodologies
  • ORM and other data access patterns
  • Using NoSQL databases (even to speed up your VCL software)
  • FireDAC
  • UI, UX, optimization for mobile and desktop
  • OOD/OOP
  • Real use cases for extended RTTI, Generics and Anonymous Methods
  • RESTful interfaces design and development
  • Architectures
  • Cool (dev) things that you are doing or that you did in the recent past

Target audience

  • Software architects
  • Software developers
  • Project managers
  • IT managers
  • Trainers

The conference web site is http://www.itdevcon.it

Up to May 31st you can get the ticket at the discounted early bird or 249.00 Euro. After that day the normal ticket price will be 349.00 Euro. Get it!

The ticket includes:

  • 2 conference days
  • Lunches
  • Coffee Breaks
  • Gadgets

Do you want to see a particular topic or have a suggestion for ITDevCon2016? Let me know

As usual one of the most important part of ITDevCon will be the networking between attendees. I know about great collaboration born during ITDevCon. Be there and don’t miss this social opportunity!

Thank you and…  see you at ITDevCon 2016.