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.