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)

Thursday, July 8, 2010

UTF8 string functions and MetaObjects for Gyro

UTF8 functions like UTF8Length are now available in standard.lib.str.

Also, Gyro generates now Meta Object interface for each entity. This enables the developer to "populate" only the needed properties for an object instead of reading the whole object. This is useful in http:// applications, minimizing the database traffic.

I'm currently working on the new RadGs website, hope to have it online soon !

Wednesday, June 2, 2010

Marker functions for Gyro Apps

GyroGears applications have now markers. A marked object will stand out in lists or views, by having different background color, a marker image or text, or a progress bar (indicating for example the progress status for a given task).

Here are some screen captures:




You just have to write a marker function that will return the marker value.

Monday, May 31, 2010

Concept Application Server 1.2 is now available!

Several security features added:
- MaxInitialIDLE setting in concept.ini that sets the maximum allowed idle time for a client connection BEFORE initializing an application
- Keep Alive packets to check if client is on-line
- New Concept Update Service

New properties for GUI objects, updated with GTK 2.20.
New client dialogs, like this one: