During this summer, warleyalex did meet some mORMots in the mountains of REST, Java, AJAX and JSON. (picture may differ from actual user:) ) He did some videos of his experiment with our little rodent. At this time, there are 11 videos available! Latest one is a Java client application, […]
2013-07-24
Tempering Garbage Collection
2013-07-24. Pascal Programming
I'm currently fighting against out of memory errors on an heavy-loaded Java server.

If only it had been implemented in Delphi and mORMot!
But at this time, the mORMot was still in its burrow.
Copy-On-Write and a good heap manager can do wonders of stability.
Here are some thoughts about Garbage Collector, and how to temper
their limitations.
They may apply to both the JVM and the .Net runtime, by the way.
2013-07-04
Let mORmot's applications be even more responsive
2013-07-04. Open Source › mORMot Framework
In mORmot applications, all the client communication is executed by
default in the current thread, i.e. the main thread for a typical GUI
application.
This may become an issue in some reported
environments.
![]()
Since all communication is performed in blocking mode, if the
remote request takes long to process (due to a bad/slow network, or a long
server-side action), the application may become unresponsive, from the end-user
experience.
Even Windows may be complaining about a "non responsive application",
and may propose to kill the process, which is far away from an expected
behavior.
In order to properly interacts with the user, a OnIdle property
has been defined in TSQLRestClientURI, and will change the way
communication is handled.
If a callback event is defined, all client communication will be processed in a
background thread, and the current thread (probably the main UI thread) will
wait for the request to be performed in the background, running the
OnIdle callback in loop in the while.
2013-06-21
SynPDF now generates (much) smaller PDF file size
2013-06-21. Open Source › Synopse PDF engine
We have reduced PDF generated file size for all version of the PDF format, by trimming any uneeded space in the generated content.

We introduced a new optional PDFGeneratePDF15File property for
even better compression, using advanced features (Object Streams and
Cross-Reference Streams) of the PDF 1.5 format.
This PDF 1.5 format needs Acrobot 6.0 and up to open them.
Which should be the case on your computer.
Can be up to 70% smaller for a pdf with a lot of pages with simple textual context.
I suspect our library is able to generate the smallest file size possible,
even in regard to other alternative libraries.
Open Source can be great, can't it?
2013-06-19
SynPDF now implements 40 bit and 128 bit security
2013-06-19. Open Source › Synopse PDF engine
The trunk version of our Open Source SynPdf library now features encryption using 40 bit or 128 bit key size.

This is a long awaiting feature, and sounds working just fine from my
tests.
Speed has been optimized (as usual with our libraries), as a consequence
encrypting the content will only be slightly slower.
2013-06-16
FireDAC / AnyDAC support for mORMot
2013-06-16. Open Source › mORMot Framework
Our SynDB classes feature now FireDAC / AnyDAC access, with full speed!

Up to now, only UniDAC, BDE or ZEOS components were available as source, but we just added FireDAC / AnyDAC.
FireDAC is an unique set of Universal Data Access Components for developing cross platform database applications on Delphi. This was in fact a third-party component set, bought by Embarcadero to DA-SOFT Technologies (formerly known as AnyDAC), and included with several editions of Delphi XE3 and up. This is the new official platform for high-speed database development in Delphi, in favor to the now deprecated DBExpress.
Our integration within SynDB.pas units and the mORMot
persistence layer has been tuned. For instance, you can have direct access to
high-speed FireDAC Array DML feature, via the ORM batch process, via
so-called array
binding.
2013-06-14
SQLite3 performance in Exclusive file locking mode
2013-06-14. Open Source › mORMot Framework
As stated in previous blog articles, the default SQlite3 write speed is quite slow, when running on a normal hard drive. By default, the engine will pause after issuing a OS-level write command. This guarantees that the data is written to the disk, and features the ACID properties of the database engine.

ACID is an acronym for "Atomicity Consistency Isolation
Durability" properties, which guarantee that database transactions are
processed reliably: for instance, in case of a power loss or hardware failure,
the data will be saved on disk in a consistent way, with no potential loss of
data.
In SQLite3, ACID is implemented by two means at file level:
- Synchronous writing: it means that the engine will wait for any
written content to be flushed to disk before processing the next request;
- File locking: it means that the database file is locked for
exclusive use during writing, allowing several processes to access the same
database file concurrently.
Changing these default settings can ensure much better writing performance.
We just added direct
File locking tuning.
It appears that defining exclusive access mode is able to increase the
performance a lot, in both reading and writing speed.
Here are some new benchmarks and data, extracted from the updated SAD documentation.
2013-06-07
Authentication and Authorization
2013-06-07. Open Source › mORMot Framework
Our mORMot framework tries to implement security via:
- Process safety;
- Authentication;
- Authorization.
Process safety is implemented at every n-Tier level:
- Atomicity of the SQLite3 database core;
- RESTful architecture to avoid most synchronization issues;
- ORM associated to the Object pascal strong type syntax;
- Extended test coverage of the framework core.
Authentication allows user identification:
- Build-in optional authentication mechanism, implementing both per-user
sessions and individual REST Query Authentication;
- Authentication groups are used for proper authorization;
- Several authentication schemes, from very secure SHA-256 based challenging to
weak but simple authentication;
- Class-based architecture, allowing custom extension.
Authorization of a given process is based on the group policy,
after proper authentication:
- Per-table access right functionalities built-in at lowest level of
the framework;
- Per-method execution policy for interface-based services;
- General high-level security attributes, for SQL or Service remote
execution.
We will now give general information about both authentication and authorization in the framework.
In particular, authentication is now implemented via a set of classes.
« previous entries - page 25 of 52 - next entries »
