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.

Tuesday, September 21, 2010

"Paste from clipboard" option for picture data type in GyroGears

I've added a new feature for "picture" data type: paste from clipboard.

Now you can "open", "paste" or "capture from webcam".

Simple but useful.

Memcached client now available in Concept

A few weeks ago I was talking with a friend of mine about memcached. I was very curious about what it can do, and it didn't disappoint me (more about memcached).

I've written a wrapper for libmemcached client library and now it's available for Concept. Here you have a code snippet illustrating a simple "hello world" memcached-based application.

It's really simple and you can ease off the database server. As a cool feature, it supports multiple servers, allowing the developer to dynamically add caching servers.

Tuesday, September 7, 2010

An elephant, a bird, a fish (yes, I know, dolphin != fish) friends of The Bee

Concept Bee (the black one, because blogspot doesn't know about transparency) is now friend with PostgreSQL, Firebird and MySQL.



Now you can generate data-driven applications from scratch for these servers using GyroGears and a set of rules.


Oracle XE is still to be tested. I've made some cosmetic changes to the Gyro generated applications (some custom background and cooler tool bars).

New visual markers (icons) based on row rules:


Also some minor bugs are now fixed thanks to extensive testing with FirebirdSQL. I've posted a bug on the Firebird ODBC bug list regardin SQLNumParams when using "INSERT ... RETURNING id" in a prepared query (it returns the number of parameters + 1).

And now I'm almost there ...

Thursday, September 2, 2010

GyroGears is now DBMS independent

I've just regenerated and tested some of my commercial GyroGears applications on PostgreSQL. I've added rules and definitions both for InnoDB and for PostgreSQL in Gyro. Firebird and Oracle should now work (I'll test it these days with Oracle XE). I'm systematically dropping MySQL/InnoDB in favor of PostgreSQL, which seems more suited to GyroGears applications - nicer API, mature transactional model, nicer support, friendlier tools and no Oracle nor Larry Ellison to sue me.

Thursday, August 19, 2010

PostgreSQL cool driver

I've wrapped these days a driver for PostgreSQL database. I must say that I'm more that impressed by the APIs that are at least clean and straight forward. I will gradually port all my applications from MySQL/InnoDB to PostgreSQL. I'm sure that PostgreSQL will have a really nice future. I was impressed by the way that Postgre handles blobs - you work with them as if they were files.

For Concept Application Server some minor bug fixes, same for GyroGears.

Also, source distribution is now (again) up to date.

Tuesday, July 20, 2010

6 years of Concept

I'm getting closer to an official release after 6 years of Concept. With countless nights of coding, countless days of testing and debugging and many friends to suggest new features, Concept has now commercial quality, although is under an open source license.
Without having a dead-line, I'm trying to create a safe, fast and powerful platform that integrates the best technologies, without focusing on a specific platform.

Concept is ready to bring back the fun in coding.

6 years and 2 days ago, in an afternoon I've started this project.

Sunday, July 11, 2010

OCR in Concept Framework

I've included tesseract in Concept Framework. It's a really nice OCR library and I'm impressed by the quality of the character recognition. I've tried to keep the APIs really simple: just 2 functions, one for debugging and one for the actual OCR.

Prototype looks like this:

number OCR(szImage_filename, refOutText, szLanguage="eng", szDataPath="", szConfigFile="");

It returns OCR_E_CANT_OPEN or OCR_E_CANT_READ if error, or 0 otherwise.

A basic example:

import standard.lib.ocr

class Main {
function Main() {
// if debug file is not set, nul or /dev/null is assumed
//OCRDebugFile("");
if (!OCR("cap.bmp", var data))
echo data;
}
}

I hope is as straight forward as it can be.

This morning I've realized that although the framework has many PDF writing APIs (like libharu and PDFLib), it has no PDF reading APIs. So, I've integrated poppler (already used by de Concept Client). Now you can convert PDFs to images or extract text.

The APIs are pretty basic:

import standard.lib.poppler
import standard.C.io

class Main {
function Main() {
var pdf=PDFLoadBuffer(ReadFile("test.pdf"), "", var err);
if (pdf) {
var pages=PDFPageCount(pdf);
echo "Document has $pages pages\n";
for (var i=0;i<pages;i++) {
echo "Page ${i+1}:\n";
echo "==============";
// extract the text
echo PDFPageText(pdf, i);
// extract page as an image
echo PDFPageImage(pdf, i, "page_$i.png");
echo "==============";
}
// Don't forget to close !
PDFClose(pdf);
}
}
}

(sorry for the indentation, blogspot didn't handle it very well)