- faster execution time
- smaller memory footprint
- less CPU usage
- same zero crash-tolerance policy
- more security features
- Zero-downtime updating system that will allow the update of Concept Server with no downtime (or with at most a few seconds of downtime without affecting the users).
- CLB (Concept Load Balancer) out of BETA
- CIDE enhancements
- Do/Install deployment tool replacing CUDW
- Binary compatible with Concept 1.x (Concept will always be backward-compatible)
- An enhanced GyroGears (1.2) distribution
- Thread-safe variables and better multithread APIs
Monday, December 13, 2010
Preparing for Concept 2.0
Concept 1.x is now powerful and mature. It is stable and the relation between Concept Application Server and GyroGears is now truly symbiotic. GyroGears is also stable and prepared to evolve into a new generation of application generators. The 2.0 release of Concept will include:
Sunday, December 5, 2010
Faster compiler (6x), CSV library, client updates and Gyro
I've had some work done on the accel compiler - which was a little slow (12mb of source code compiled in about 8 minutes). Now, is about few seconds over a minute ... After some tests, the average optimization is about 6x (six times faster).
I've added a convenient csv library (standard.lib.csv and CSV.con) with both a complex and a simple interface.
For the simple interface you can do something like:
var matrix=CSV::Parse(ReadFile("data.txt"));
matrix being an array of arrays.
Also I've updated the Concept Client - some small memory leaks fixed and the webkit component. I dropped the microhttpd used to emulate a server for managing local request (request that are handled within the application itself). Now the request are intercepted directly from the webkit/libsoup requests.
In GyroGears I've added a new field (optional) in the User entity: Failed attempts
This logs the failed attempts for an user, and then locks the account after 3 failed attempts.
I have no pretty screen shots this time...
I've added a convenient csv library (standard.lib.csv and CSV.con) with both a complex and a simple interface.
For the simple interface you can do something like:
var matrix=CSV::Parse(ReadFile("data.txt"));
matrix being an array of arrays.
Also I've updated the Concept Client - some small memory leaks fixed and the webkit component. I dropped the microhttpd used to emulate a server for managing local request (request that are handled within the application itself). Now the request are intercepted directly from the webkit/libsoup requests.
In GyroGears I've added a new field (optional) in the User entity: Failed attempts
This logs the failed attempts for an user, and then locks the account after 3 failed attempts.
I have no pretty screen shots this time...
Tuesday, November 23, 2010
Sheet, GyroGears and Apache follow up
Concept Framework was missing a nice Grid control. After some searches I came over GtkSheet in gtk-extra-2.0. A very nice set of controls, but with some problems on windows. I've took some file from the CVS and is working fine now. I've made a test application for reading Excel files:
Works fine with excel 97-2003 files, bot doesn't support images (however the grid does, and you can insert virtually any control - buttons, charts, etc.).
Also I've made the grid available in GyroGears via the long string data type, with the "Sheet" option. Here is a sample screen shot from a Gyro application:

In the previous post I've talked about the caching on Apache HTTPD2. I've made some nice charts (in Concept) that illustrate the server response time for cached csp scripts, static html and cached csp.
I've ran the test several times and isolated the first run and the best run. As you can see, for Cached CSP the delivery time is slightly better from the static HTML. And some random key were generated to memcached to emulate a real-world situation.
I've activated the engine on www.booha.ro , and the optimization is now dramatic.
Works fine with excel 97-2003 files, bot doesn't support images (however the grid does, and you can insert virtually any control - buttons, charts, etc.).Also I've made the grid available in GyroGears via the long string data type, with the "Sheet" option. Here is a sample screen shot from a Gyro application:

In the previous post I've talked about the caching on Apache HTTPD2. I've made some nice charts (in Concept) that illustrate the server response time for cached csp scripts, static html and cached csp.
I've ran the test several times and isolated the first run and the best run. As you can see, for Cached CSP the delivery time is slightly better from the static HTML. And some random key were generated to memcached to emulate a real-world situation.I've activated the engine on www.booha.ro , and the optimization is now dramatic.
Friday, November 19, 2010
Its awesomeness, Apache HTTPD2
I've been working a lot in the last few days. I've added a GeoIP wrapper for Concept, documentation available at http://www.radgs.com/docs/help/GeoIP.html. Nice library by the way.
Now, for the cool stuff. I was thinking how much content is served to all the visitors ... and that content is cached by memcached to reduce workload ... but I think I can go further - direct caching from the web server. Let's see in the pretty colored schema bellow.

Let's say that an user (Client1) makes a request to Apache HTTPD. The server will call ConceptCGI to process the request, and the script will access a memcached server for caching data. But, if we cache the whole page, images, etc., why is a need for the CGI to run? Well, it isn't. For that I write an Apache module (mod_conceptcache) that allows the server to serve cached memcached data very fast, so fast that Client 2 will access cached data very fast without generating any significant CPU or memory usage on the server - and that's critical because the server can serve more users using the same resources. I've set some nice APIs for the back-end, the programmer being able to explicitly cache data for visitors, users or locations (as you can see in the figure, mod_concept_cache is linked to GeoIP). Documentation is available on http://www.radgs.com/docs/help/ApacheCacher.html.
GyroGears is already aware of this, and generates code for the http back-end using ApacheCacher.
PS: Fast = tens of times faster
Now, for the cool stuff. I was thinking how much content is served to all the visitors ... and that content is cached by memcached to reduce workload ... but I think I can go further - direct caching from the web server. Let's see in the pretty colored schema bellow.

Let's say that an user (Client1) makes a request to Apache HTTPD. The server will call ConceptCGI to process the request, and the script will access a memcached server for caching data. But, if we cache the whole page, images, etc., why is a need for the CGI to run? Well, it isn't. For that I write an Apache module (mod_conceptcache) that allows the server to serve cached memcached data very fast, so fast that Client 2 will access cached data very fast without generating any significant CPU or memory usage on the server - and that's critical because the server can serve more users using the same resources. I've set some nice APIs for the back-end, the programmer being able to explicitly cache data for visitors, users or locations (as you can see in the figure, mod_concept_cache is linked to GeoIP). Documentation is available on http://www.radgs.com/docs/help/ApacheCacher.html.
GyroGears is already aware of this, and generates code for the http back-end using ApacheCacher.
PS: Fast = tens of times faster
Tuesday, November 9, 2010
SQLite now in GyroGears
Wednesday, November 3, 2010
HTTP as a transport layer
I've implemented two modules - one for Concept Client and another for Apache HTTPD 2 that allows concept:// packages to be transported over http://. It uses GET for receiving data from the Concept Application Server and POST to send the concept:// binary package. This is the first step towards the Concept://JavaScript Client that will use the concept:// protocol over http://.
The main benefit of using http:// as a transport layer is that connection can now be stateless, although is a little bit slower than the concept:// standard protocol. Another major advantage is on firewalled networks that allow only HTTP traffic.
The main benefit of using http:// as a transport layer is that connection can now be stateless, although is a little bit slower than the concept:// standard protocol. Another major advantage is on firewalled networks that allow only HTTP traffic.
Thursday, October 28, 2010
Full touch screen support
A new class available in Concept Framework: RTouchKeyboard. Is a fully customizable keyboard layout (the constructor takes an array for the rendered keys).

The keyboard is already integrated in GyroGears.
A few changes in the Concept Client (windows version): added native Save File and Load File dialogs replacing the GTK dialogs that use to crash when listing files with diacritics.

The keyboard is already integrated in GyroGears.
A few changes in the Concept Client (windows version): added native Save File and Load File dialogs replacing the GTK dialogs that use to crash when listing files with diacritics.
Wednesday, October 20, 2010
Excel support in Concept
New library added (no. 55): standard.lib.xls
I've came across libxls accidentally. I was surprise to see that is a really nice library with simple APIs - not very mature yet but it promises a lot. I just had to write a wrapper, and I did.
Nice and simple APIs, as usual. Of course, you have low level cell accessing APIs but xls_matrix is convenient (at least for me) - it returns a sheet as a matrix.
I'm having problems with a bug in webkit - when is in editable mode, and I move the cursor from right to left over a link it freezes. I've submitted a bug report and now I wait. Until it will be fixed, I hacked the client module in order to ignore the left keyboard key. Is not nice, but is working (the cursor can be moved with the mouse with no problems).
I've integrated MemCached client into GyroGears. Now, when generating http:// applications, you can set in DataBase.ini or MyDataBase.ini MemCachedServer = "localhost" for example, and the application will use the server running on localhost. If no host is set, no caching will be available.
Tomorrow will open the new radgs.com website.
I've came across libxls accidentally. I was surprise to see that is a really nice library with simple APIs - not very mature yet but it promises a lot. I just had to write a wrapper, and I did.
Nice and simple APIs, as usual. Of course, you have low level cell accessing APIs but xls_matrix is convenient (at least for me) - it returns a sheet as a matrix.I'm having problems with a bug in webkit - when is in editable mode, and I move the cursor from right to left over a link it freezes. I've submitted a bug report and now I wait. Until it will be fixed, I hacked the client module in order to ignore the left keyboard key. Is not nice, but is working (the cursor can be moved with the mouse with no problems).
I've integrated MemCached client into GyroGears. Now, when generating http:// applications, you can set in DataBase.ini or MyDataBase.ini MemCachedServer = "localhost" for example, and the application will use the server running on localhost. If no host is set, no caching will be available.
Tomorrow will open the new radgs.com website.
Tuesday, October 12, 2010
Concept native WYSIWYG control
I've created a WYSIWYG widget based on Webkit. Tomorrow I'll dump nicedit from GyroGears in favor of the native RWebEditor control.
The interface is pretty simple: RWebEditor extends RWebView and ads just one property: Text
The code should look like this:
Editor=new RWebEditor(owner);
Editor.Text="my html code";
Editor.Show();
Simple enough ?

On windows webkit-gtk is pretty unstable. I hope to get a fix soon.
The interface is pretty simple: RWebEditor extends RWebView and ads just one property: Text
The code should look like this:
Editor=new RWebEditor(owner);
Editor.Text="my html code";
Editor.Show();
Simple enough ?

On windows webkit-gtk is pretty unstable. I hope to get a fix soon.
Monday, October 11, 2010
Captcha in Concept Framework 1.2
Added a new import library: standard.lib.captcha
This is a captcha generator based on libcaptcha .
The APIs are simple, as usual:
var text=Captcha(var gif);
WriteFile(gif, "captcha.gif");
Resulting in

text will contain the actual generated letters.
This is a captcha generator based on libcaptcha .
The APIs are simple, as usual:
var text=Captcha(var gif);
WriteFile(gif, "captcha.gif");
Resulting in
text will contain the actual generated letters.
Subscribe to:
Posts (Atom)
