Friday, December 26, 2008

GyroGears devine BETA de Craciun

In timp ce oamenii normali* sarbatoreau Craciunul alaturi de cei dragi, eu am sarbatorit in felul meu: lucrand. Am lucrat foarte mult in ultimul timp la cateva elemente noi:
  1. Generatorul automat de help pentru aplicatiile Gyro
  2. Rapoartele avansate (ca un inceput de solutie de B.I.<<nu ca as fi pe deplin lamurit ce inseamna B.I. >>)
Acum, pe rand: Generatorul automat de help, face documentatia pentru toata aplicatia generata de GyroGears. Am mers pe o solutie foarte simpla, templatizata (astfel incat sa fie foarte usoara adaptarea pentru o alta limba decat cea default). Un exemplu poate fi vazut aici: http://www.radgs.com/help_sample/ . Veti observa probabil romengleza in care este scris. Acest lucru este cauzat (nu datorat !) de faptul ca aplicatia este descrisa in limba romana iar template-ul de help este in limba engleza (iar, a se ignora greselile gramaticale - voi reveni asupra template-urilor in perioada BETA). Toata aceasta documentatie a fost generata 100% automat fara pic de interventie din partea mea. De asemenea, este integrata in aplicatie, raspunzand la F1 - pentru prezentarea "capitolelor" sau Ctrl-F1 pentru help senzitiv, afisand help pentru contextul din care se invoca help-ul.

Acum, revenind la lucruri (si mai) serioase: Rapoartele avansate
Aici, cateva probleme au fost intalnite:
  1. rapoartele in Gyro se bazeaza foarte mult pe XSL:FO, standard ce mie personal imi place tare mult, dar recunosc ca nu sunt inca familiarizat cu tot ce stie/poate sa faca. Din pacate este destul de greoi, mai ales cand deployment-ul rapoartelor se face pe Apache FOP (ce nu are o implementare 100% compatibila). Solutia a fost implementarea a unui nivel nou, asemanator cu HTML-ul (chiar partial compatibil cu HTML-ul) pentru generarea rapoartelor. Cateva elemente au fost adaugate, precum pie, chart, datasource, parameter, call, etc.. A fost nevoie de aceste tag-uri pentru a interactiona elegant, modular si in siguranta cu baza de date. (vezi screenshot).
  2. Parcurgearea rezultatelor interogarilor (a dataset-urilor) poate genera ambiguitati atunci cand sunt folosite succesiv. De exemplu: pentru un dataset, poate avem nevoie de o parcurgere 2 pasi inainte, unul inapoi. Acum totul depinde de "client"-ul bazei de date si de setarile facute pentru accesta. Daca tot rezultatul va fi adus pe client, este permisa trecerea de la un rand(row) de index mai mare la unul cu index mai mic. Daca nu (daca rezultatul este adus succesiv in cate 1-2-5-N row-uri), nu va fi posibila o astfel de parcurgere. Solutia a fost relativ simpla, dar mancatoare de memorie: aducerea intregului rezultat intr-o matrice. In acest fel, datele pot fi parcurse, extrase sau prelucrate fara limitari si fara restrictii data de setarile clientului pentru baza de date. Daca ai obiectiuni, am un argument cat se poate de serios: daca extragi milioane de inregistrari (cat sa umpli intreaga memorie disponibila) ... unde le vei tipari ? ... pentru ca vorbim totusi de rapoarte "standard" si nu interogari ale bazei de date. In 99% din cauzuri este vorba de pie-chart-uri, grafice sau niste tabele "citibile" de oameni.
  3. Abstractizarea extragerii de date, astfel incat sa poata fi prelucrate date atat de la o simpla interogare SQL sau o succesiune te interogari SQL (ce pot fi grupate si astfel incat rezultatul uneia poate fi parametru de intrare la alta) cat si de la o functie scrisa manual (pentru cazuri speciale).
Dupa ce toate problemele au fost rezolvate si a fost gasita si o solutie de setare a parametrilor pentru rapoarte (tot XML-based) s-a ajuns la:






Am atasat si raportul in format XML.
Cateva screenshot-uri cu raportul in formatul final (asa cum a fost generat) si cu help-ul integrat in aplicatie:



Ok. Acum la 2:15, in noaptea de Craciun, ma pot culca linistit stiind ca GyroGears poate satisface orice solicitare in materie de baze de date si raportare, atata timp cat "orice" este egal cu 98%.

"Craciun fericit" celor crestini si "Sarbatori fericite" celorlalti.

*) oameni normali = presupunem conceptul de normalitate ca fiind definit de majoritate, pentru ca in final nimeni nu-mi pare mai normal decat mine si probabil ca nimeni nu-ti pare mai normal decat tine. In concluzie, cum imi spunea un prieten foarte bun candva: "normalitatea este relativa"

Saturday, November 22, 2008

GyroGears 1.0

Am tot vorbit de GyroGears, dar nimeni nu l-a vazut inca. Il veti vedea candva prin aprilie 2009 ... pana atunci, am pus un mic filmulet ca sa va faceti o idee.

Wednesday, November 19, 2008

Date conditionate


Am revenit, bineinteles cu features-uri noi prin GyroGears. Nu de alta, dar simteam nevoia de a ma lauda. Ideea este ca avem cateva elemente noi:
1) cautarea dupa parinti a entitatilor
Practic acum putem sa cautam folosind o sintaxa foarte simpla. Sa presupunem ca avem Client, Oferte si Produse. Vrem sa cautam toate produsele ce figureaza pe oferta unui client. Atunci, pur si simplu definim in interfata Gyro o cale de cautare:

Furnizori: Furnizor/Oferte primite/Produse

In aplicatia rezultata ni se va genera un camp de cautare de unde vom alege un Furnizor. Legatura este definita de calea de mai sus (exact ca o cale de directoare). Simplu, nu ?

2) Campuri conditionate
Folosind aceste definitii XML (ca in screenshot) se pot defini conditionari. Pentru exemplu de mai sus putem defini ca atunci cand unitatea de masura este 'g'(gram) sa nu se mai ceara numele produsului. Practic putem dezactiva sau ascunde categorii intregi, nu numai campuri. Stiu ca exemplul este unul ... oarecum inutil ... dar pe el am testat.

3) Campuri de definire a rapoartelor
De acum cateva versiuni exista posibilitatea de a defini elemente de adaugat in rapoarte, asa cum se vede in imaginea alaturata. Va las pe voi sa va dati seama ce si cum face.

Friday, October 31, 2008

Programare automata

Am adaugat noi elemente de cautare in GyroGears. GyroGears este un sistem automat de dezvoltare bazat pe modelare din specificatii (practic se descrie ce se doreste, iar Gyro va genera intreg codul sursa si framework-ul ... numai bun de integrat in Concept IDE). Noutatea consta in faptul ca acum se poate cauta si dupa entitati inrudite ("relatii").

In screenshot-uri este o aplicatie simpla de evidenta a ofertelor primite de unul din clientii nostri ce primeste pe mail oferte in format XLS si vrea sa aiba produsele intr-un sistem prin care sa caute dupa diverse criterii. Totul a fost foarte simplu, cu toate ca Excel este o tehnologie Microsoft iar Concept ruleaza pe tehnologii Linux (chiar daca ruleaza pe Windows).
Simplitatea a fost data de ODBC ... care a oferit acces imediat la fisierul Excel. Oricum, dincolo de asta, aplicatia a fost dezvoltata in aproximativ 30 de minute (generand inclusiv rapoarte). In curand vom avea o prezentare oficiala pentru GyroGears.

Monday, October 27, 2008

Bohemian_developer.Init()

Spatiul ... ultima frontiera ... cu 5 ani in urma am hotarat ca modelele actuale web si desktop nu sunt tocmai pe gustul meu. Pe atunci eram student ... am hotarat sa ma avant (cu capul inainte) in acest proiect ... proiect numit Concept Application Server ... practic este un limbaj de programare cu un framework si un model unic ce functioneaza peste internet. Mai multe informatii gasiti pe site-ul www.radgs.com. Aceasta ar fi compania pe care incerc (fara prea mult succes) sa o conduc.

Oricum, scopul blog-ului nu este acesta, ci ideea din spatele CAS (Concept Application Server). Este un proiect ce imi este foarte drag si e gratis! Este dezvoltat din pasiune si cu forte proprii. Am cautat cele mai bune solutii pentru tot ceea ce am facut: de la bibliotecile linux in licente LGPL pana la standardale Windows. Sper sa nu deschid iar o discutie "windows" vs. "linux". Ok. De aici "boemitatea" ... totul e facut din pura pasiune ... asa cum se intampla peste tot prin anii 80, cand formatiile rock cantau de placere, jucatorii jucau de placere iar banii si tot ceea ce este material parca nu insemna nimic. Din pacate, nu vreau sa fiu ipocrit si sa spun ca programam ... pe pietre colorate si scoici gaurite ... cu toate ca ar fi frumos ...

Prin anii 80, 2 gemeni, "The Oliver twins" au creat Dizzy ... poate unii din voi il mai stiu ... cei ce au apucat sa aiba un HC 91 sau un CIP. Era uimitor ce se putea face cu mai putin de 20 de cuvinte cheie si in mai putin de 48Ko de memorie. Oricum, sa revin ... cei doi gemeni au facut o gramada de lucruri extraordinare din pura pasiune si din pasiunea lor si-au luat Ferrari-uri ... este interesant, pentru ca scopul nu a fost "Ferrari" ... si a fost vorba de arta in adevaratul sens al cuvantului ... fara a alerga dupa profit.