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

Tuesday, November 9, 2010

SQLite now in GyroGears


Added SQLite on the list of supported servers in GyroGears. Now GyroGears is tested on MySQL, PostgreSQL, Firebird and SQLite. Oracle XE support will be available soon.

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.

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.

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.

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.

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.

Wednesday, September 29, 2010

How do you create ?

This morning I was in a hurry to get to my desktop. I had to get to the old keyboard, filled with kitten hair because I wanted a new feature: a class generator for command line-based scripts or programs. I've tested it with MSMTP (command line smtp client).

Every property was automatically generated from a file that contains parameters description

#Separator is =
--version
--help
--pretend
--debug
--serverinfo
--rmqs
--file=
--account=
--host=
--port=
--timeout=
--protocol=smtp|lmtp
--domain=
--from
...


Using DoWrap.con (the tool) you can easily generate a wrapper for every command-line based tool.

Also, I've translated Facebook.php from facebook php sdk to Facebook.con, having now the Facebook APIs available in Concept. I still don't use Facebook and I still won't. Nor twitter (Concept Twitter APIs are up-to-date).

Gyro has now a working plug-in system. All features from now on will be implemented as plug-ins.

Do you smile on your way to work?

Sunday, September 26, 2010

GyroGears 1.2 RC1 Released !

GyroGears is out of BETA. Sure, a lot o things can still go wrong, but I'm fairly optimistic that is at release-quality level. I've added a few things:

- Picture and multimedia data fields are now shown in PDF reports (picture bellow)


- A new skin based on the Blue Space II (a few color changes, different progress bar and a modified REditComboBox (the original had black text on black background)

- XML data import and export system now can work with pictures, multimedia or other files. Those are mime encoded into (or from) the XML file

- Update the Twitter library (didn't work anymore due to changes in Twitter log in API)

And again ... hours of testing ...

Saturday, September 25, 2010

New features and more testing

I've spent the last days optimizing GyroGeas for application with heavy data. I've tested MySQL, Firebird and PostgreSQL with databases of at least 500,000 random records. I was impressed by PostgreSQL (being surprisingly fast). On the worst case query, MySQL 5 executed a select (with indexes) in about 14 seconds, Firebird 2.5, in about 20 seconds and PostgreSQL 8.4 in less than 8 seconds. The average query took about 1 second. Firebird was very slow on executing SELECT COUNT()... GROUP BY statements. Except that, overall performance is relatively good for all of the three engines.

New features in Concept Client:
Windows notify using the tray balloon

Combo edit box with progress bar on background for pagination (progress bar shows current page/total pages fraction)

GyroGears now generates all the required indexes for the generated database. I've optimized all the queries and the speed was enhanced.