Monday, December 28, 2009

Configurarea obiectelor GUI in Runtime

Terminand mai tot ce mi-am propus pentru zilele astea, mi-a trecut ceva prin cap: ce-ar fi daca am lasa un utilizator final al unei aplicatii Concept sa-si seteze anumite lucruri prin aplicatie, cum ar fi culoarea butoanelor sau poate chiar sa ascunda din campuri. Acum, totul e customizabil, asadar nu va putea edita absolut tot ce vrea el, ci va edita doar ce vrem noi. Ar trebui sa fie comod sa poata edita GUI-ul unei aplicatii Gyro in run-time ... ca pe wikipedia. Pentru asta am adaugat un control nou (de fapt l-am finalizat fiind un proiect abandonat acum cativa ani) - RPropertiesBox ce ne permite sa editam proprietatile unui obiect. Mai mult, am facut obiectul sa-si prezinte singur proprietatile folosind CApplication astfel: CApplication::DescribeObject(button1) ... iar asta ne returneaza toate informatiile despre proprietatile suportate. Apoi, folosind CApplication::ModifyObject(button1, "label") putem sa modificam proprietatile in RUN-TIME! Bun la debugging, bun la customizare. Atasez screen-ul de test.

Saturday, December 26, 2009

Suport flash fara Adobe pentru Concept

Am reusit sa compilez Swfdec pe win32, cu toate ca inca mai am ceva probleme legate de sunet. Acum se poate include un swf foarte usor intr-o aplicatie Concept.


Si acelasi lucru pe Mac:


Am testat cateva jocuri, cateva filmulete. Nu merg chiar toate dar oricum, pentru cei ce doresc suport Flash complet, exista ActiveX-ul de la Adobe. Va functiona din pacate doar pe windows.

Inca o noapte de Craciun cu Concept !

Thursday, December 24, 2009

Uptime 99.999% cu Concept Cluster

Am pus in kit-ul Concept Server un Load Balancer(CLB=Concept Load Balancer). E fara dependinte, astfel incat sa poate fi pus pe orice masina (ce nu trebuie sa aiba si Concept instalat). Consuma 24k ram/user conectat. Nucleul foloseste un weighted round-robin, asigurand incarcare simetrica si proportionala cu capacitatea serverelor din cluster. Practic fiecare server poate avea alt sistem de operare: putem defini un cluster cu un server windows, unul bsd si unul linux fara probleme, fara ca userul sa observe vreo diferenta. Pe langa asta, CLB este capabil sa se lege la noi servere fara shut down si poate detecta serverele offline (putand de exemplu, peste noapte sa inchid o parte din servere). E frumos ca dupa screenshot-urile acelea frumoase de pe OS X sa trantesc si o consola.


Sa-ti explic scenariul:
Avem initial 4 servere, din care 1 nu functioneaza (cel cu FAIL). Deschidem 16 instante de Concept IDE (sau orice alta aplicatie Concept). Dupa ce deschidem cateva, anuntam ca vrem sa scoatem unul din servere (cel marcat cu REMOVED). Acesta nu va fi inchis automat ci nu va mai primi conexiuni. Va putea fi scos din sistem atunci cand nu mai are nicio conexiune activa, astfel incat sa nu deranjam niciun user. In momentul in care conexiunile ii ajung la 0, atunci va pleca din cluster. Mecanismul este foarte simplu, pentru ca fiabilitate este invers proportionala cu complexitatea.
Mai mult, load balancer-urile pot fi legate unul de altul, ca si cum ar fi servere (ele din exterior vazandu-se ca un server Concept).

Monday, December 21, 2009

Concept pe OS X Leopard

Dupa o saptamana in care m-am chinuit sa inteleg OS X-ul, am reusit sa fac distributia Concept Client 1.1 pentru Mac OS X 10.4 sau mai mare. Am facut-o intr-o masina virtuala 10.5.2 si au testat-o cativa prieteni pe 10.5.7. Mai jos de 10.5.2 nu pot garanta nimic, dar teoretic ar trebui sa mearga pe orice mai mare de 10.4. Serverul inca nu este disponibil pe OS X dar se compileaza foarte usor, pentru cine vrea neaparat. Trebuie doar instalat Xcode si darwinports si modificate flag-urile din makefile-uri din -shared in -dynamiclib. Probabil ca voi face un installer si pentru server, dar nu stiu exact cand se va intampla asta. Daca totusi cineva vrea neaparat, imi poate cere explicit asta si asa as fi mai motivat.

N-am apucat sa va mai spun cum am redus consumul de memorie cu ... 70% pe server. Asta pentru carcotasii care tot vorbesc de concept:// vs http://. Acum, teoretic sistemul suporta cam acelasi numar de useri simultani. Exista acum un flag: UseSharedMemoryPool in concept.ini. By default, e setat la 1 (true), dar daca va crapa, il puteti pune la 0(false). Atunci cand are valoarea 1, toata zona de cod pentru o aplicatie se incarca intr-o zona de memorie partajata iar pentru fiecare user se vor incarca doar cateva informatii specifice acelei conexiuni (in loc de a incarca si codul pentru fiecare user in parte, cum se intampla cand flag-ul este 0). Asta + multe alte operatiuni au redus consumul de memorie drastic.

Atasez cateva screenshot-uri de pe OS X:





Monday, December 14, 2009

Concept 1.1 BETA

Munca multa in ultimul timp, in special pe partea de testare. S-au rezolvat toate bug-urile raportate pana acum (cu multe nopti nedormite). S-au implementat feature-uri noi precum suportul de Twitter (http://www.radgs.com/docs/help/Twitter.html).

Prin client, limita pentru filerequest a fost ridicata la ... infinit ... Din pacate inca exista limitar pe partea de primire de fisier, dar vor fi eliminate si acestea in curand.

Ma gandesc sa numesc cateva din persoanele ale caror idei se regasesc in GyroGears sau care au avut o cotributie majora in implementarea feature-urilor.
Dan Vasile - o gramada de bugfix-uri (nici nu mai stiu exact cate). Pe langa asta, a mai avut si multe idei
Doru Ilasi - editarea direct in view-uri. Nu a fost chiar ideea lui, dar m-a convins sa implementez asta in Gyro
Dan Craciun - semnaleaza si gaseste problemele cu UTF-8 pe Windows 7
Robert Shiplett - comentariile rautacioase, dar indreptatite despre o varianta "broken" de Concept strecurata in distributia oficiala. M-am invatat minte sa testez mai atent.
Emil Tereanu si Ruben Sainiuc - m-au scutit de zile intregi de a ma documenta despre ffmpeg si procesarea/conversia video
Vlad Nemes - cel care se uita ce se intampla prin lume si-mi zice si mie astfel incat sa ma ajute sa tin Gyro si Concept "in trend".

Am inceput sa paricip si pe la geekmeet-uri. Am avut feedback destul de interesant pana acum. Am fost in Cluj, Timisoara si Constanta. Trebuie sa recunosc ca cea mai "exotica" prezentare a fost cea de la Timisoara, unde cred ca voi merge de fiecare data cand voi avea ocazia. A fost poate prezentarea din care am invatat eu cel mai mult.

O sa tot amestec subiectele si voi vorbi si despre scrisoarea lui Monty. Circula pe internet un apel de a "salva MySQL"-ul venit chiar din partea creatorului acestuia. Cu riscul de a supara pe cineva voi spune:
- daca acest apel venea de la oricine altcineva, l-as fi sustinut. Atata timp cat vine de la cel care a vandut MySQL-ul, nu pot sa-l sustin. Este oarecum trist sa vinzi un produs iar apoi sa faci lobby pentru "salvarea lui". Nu as vrea sa folosesc cuvinte mai dure.
- din momentul vanzarii catre Sun, cred ca preluarea de catre Oracle putea fi anticipata. InnoDB a fost cumparat cu mult inaintea lui MySQL. Oare ce ar fi putut urma ?
- Oracle incearca sa creeze un monopol. Dar cred ca asta incearca orice companie ce se respecta, iar asta de cand lumea. Politica de monopol, vorbind "la rece", este cea mai sanatoasa pentru "practicant". Cand Monty isi incasa cecul, nu cauta acolo un raspuns afectiv ? Il respect foarte mult pentru ceea ce face si consider ca ar trebui sa se concentreze pe MariaDB lasand politica pentru politicieni. Sunt tare nerabdator sa incerc MariaDB.
Vezi BerkeleyDB, ce este acum tot in proprietatea Oracle... si a pornit tot ca open source.
- InnoDB+, un engine superior InnoDB e closed source! Iar asta este un lucru rau pentru ca ... ? Nu inteleg de ce trebuie sa fie totul open source. Sunt fan al open source-ului dar nu consider ca nu trebuie sa mai existe altceva in afara de open. Iar daca ne uitam cata politica e prin open source ... incep sa cred ca modelul closed e mai "liber".

Monday, November 9, 2009

Concept Application Server pe 64 de biti !

De cateva zile ma chinui cu portarea serverului Concept pe 64 de biti. Totul e aparent simplu, existant o singura problema (majora): sizeof(long) ... nu are rost sa intru in detalii, important e ca in final conversia a reusit, pastrand structura fisierelor executabile identica pe 32 si 64 de biti. Din pacate, pentru multi versiunea de 64 este disponibila doar pe Linux/BSD ... teoretic si pe Windows pentru cine are rabdare sa compileze dupa surse. Voi face eu asta in zilele urmatoare.
Am incercat sa fac totul din precompilare (astfel incat sa fie exact aceleasi surse si pe 32 si pe 64) si sper ca am reusit (am testat doar pe Ubuntu/64 biti pe un server pus la dispozitie de Doru de la Aplix). In rest, modulul de AES a fost modificat dupa descrierea lui Chris Lomont (care are o implementare foarte interesanta a algoritmului) iar cel de RSA al lui Hariyanto Lim, ce se pare ca nu-l mai intretine, a fost modificat de mine.

Clientul Concept inca nu este disponibil in versiune de 64 de biti, cea de 32 de biti functionand oricum fara probleme. Oricum, il voi porta si pe acesta in curand.

Monday, November 2, 2009

No marketing. Just software.

In ultimele zile am dormit doar cateva ore incercand (cu succes) sa convertesc clientul Concept de la GTKmm la GTK+. Asta inseamna un pachet simtitor mai mic. Toate componentele s-au rescris, iar in afara de ffmpeg, toate functioneaza perfect. O gramada de bug-uri s-au rezolvat - acum rularea este una curata, cursiva. Pe distributia de windows, s-a facut ugrade-ul la GTK 2.18 ce aduce nou "client-side windows" - o idee interesanta, ce bineinteles ca mi-a dat bataie de capt cu integrarea controalelor dependente de windows; practic se foloseste o singura fereastra nativa (a sistemului de operare) in care GTK-ul si GDK-ul isi deseneaza controalele (spre deosebire de versiunile anterioare, in care fiecare widget GTK avea propriul HWND/XID).

Zilele astea voi pune si noul site RadGs, orientat catre mai multa informatie.

Astea fiind spuse, voi trece la un alt subiect - lumea software-ului, acolo unde este ea astazi.

Am inceput printr-o discutie cu un fost coleg de facultate, unul din categoria putinilor programatori pasionati ramasi si, discutand de Android 2.0, si de bull****-ul de marketing din jurul lui imi spune:

"De ce .NET e la versiunea 3.5 si Java la 1.6 ?"

Si ... habar nu am ... totul a pornit de la faptul ca eu vreau sa schimb o versiune a Concept-ului (avand in vedere ca sunt peste 1000 de build-uri). In final, tot la marketing ajungem.

Pana si open source-ul a ajuns tot acolo ... marketing. Mai mult, open source-ul vad ca e din ce in ce mai mult asociat cu Linux-ul ... (nu cu Windows-ul, nu cu BSD-ul si nici cu cele N alte sisteme de operare open source). Cert e ca trebuie sa recunoastem: pentru end-user cel putin, cea mai comoda solutie ramane una proprietary. Ghiceste cineva care ?

Bun, sa revenim la open source. Eu propun urmatorul model:

open source = pasiune
pasiune <> bani

deci open source <> bani ceea ce rezulta intr-un model de business confuz.

Tot colegul meu, cel "anti-open source" imi zice ca exista open source facut de nebuni pasionati si open source facut ca o alternativa de monetizare a unui produs inferior... si bine zice.

Acum cateva zile explicam cuiva la LOAD, faptul ca sunt o gramada de afaceri gandite prost din start. Mintea mea de oligofren vede lucrurile asa: X ajuta comunitatea, iar aceasta isi manifesta recunostinta. Cum ? Plantindu-l. Un model simplu, ce a devenit complex, astfel in initierea unei afaceri (si da, includ ai si afacerile bazate pe open source) se are in vedere in primul rand profitul, astfel incat nu ne gandim "Cum ajutam comunitatea ?" ci "Cum maximizam profitul ?" ... oare, sunt asa de rupt de realitate ? Oare nu mai exista pasiune in ceea ce facem ci doar o foame nejustificata de bani ?
Din pacate open source-ul, asa cum il vad eu acum, in directia asta merge. Am vazut proiectele frumoase facute de studenti si nu vreau sa-i includ si pe ei in aceasta categorie. Cred ca ei sunt singurii ce mai au entuziasmul necesar.
In final, open source-ul tinde sa nu aduca mare lucru in plus fata de proprietary ... faptul ca un "client" are sursele nu inseamna mare lucru. Cei ce sunteti programatori, stiti bine asta. Ideea ca preia "open source-ul" si plateste consultanta, iar daca nu e multumit, poate merge la X eu zic ca-i cel putin ipocrita. O sa le spun de fapt solutii "open source proprietary". Cred ca asa ar fi corect.
Imi pare rau sa spun asta, dar in cele mai multe cazuri, open source-ul ajunge sa fie mai scump decat o solutie proprietara, daca clientul nu este atent. Mai mult, facem un pariu ? Sunt convins ca multi "cumparatori" de servicii peste open source, habar nu au ce-i ala open source... in final, open source cred ca ramane doar o strategie de marketing.

Mai e si tanti de la LOAD...
In sala, era o tanti, probabil lucreaza la o banca... era asa de suprinsa de modelul de business propus de open source ... si intreaba la un moment dat cum se plateste open source-ul si as fi vrut sa-i raspund "se plateste, chiar daca-i free software ... ba chiar se plateste ori de cate ori este nevoie".

Comentati. Dau 10 lei sau 2 beri primelor 10 comentarii ... in final, se poate si "free as in free beer". Berea sau banii se ridica de la mine, din Constanta. Asa ca va trebui sa suportati drumul pana-n Constanta. De asemenea, berea o voi da intr-un local cu intrare ce costa cel putin 30 de lei ... asta este implementarea gresita de open source. Acum, berile tot le dau.

Make software, not money

Friday, October 16, 2009

Concept - ce mai e nou ?

Sunt foarte multe lucruri noi prin Concept si de aici as enumera: suportul webdav, LDAP (prin OpenLDAP) si MAPI(doar pe Win32, in curand si pe non-windows prin OpenMAPI). Intreg framework-ul sau 99% din API-uri au fost publicate, din pacate nu toate functiile sunt documentate (sunt peste 4000 de functii si proprietati, din care sunt explicate in jur de 1000). Cu toate astea majoritatea sunt destul de intuitive iar la restul exista documentatie pe site-ul dezvoltatorilor, pentru ca API-urile au fost pastrate. Paginile de help sunt disponibile aici:

http://www.radgs.com/docs/help/

Pe de alta parte, suportul pentru controlul webkit a fost imbunatatit - a fost creat evenimentul OnRequest2, eveniment ce nu este disponibil nativ, prin interceptarea request-ului din libsoup. Asta inseamna ca putem emula form-uri, iar informatia din aceastea poate fi interceptata usor. In Gyro s-a facut o gramada de debuging
  • a fost gasit un bug de tranzactie ce-mi dadea dureri de cap de ceva timp
  • suportul pentru WYSIWYG in form-uri a fost finalizat (prin implementarea completa din webkit si cateva artificii javascript folosind nicEdit)
  • multe alte bug-uri minore prin GyroWeb
In rest, lucrez intens la prezentari si documentatii.
O discutie de ieri cu un prieten, mi-a dat o idee de slogan pentru Gyro:

Esti programator. Stai afara. Folosete GyroGears.
sau
You're a developer. Stay outside. Use GyroGears.

Zilele acestea as vrea sa-i fac un face lift lui Gyro, pentru ca s-au adunat relativ multe controale si optiuni, ce la ora asta nu mai sunt organizate tocmai optim.

Thursday, July 16, 2009

Tot mai aproape de 1.0

Ne apropiem usor de Concept 1.0 ... am adaugat un feature nou, din pacate disponibil doar pe Windows NT/XP/Vista ... un serviciu de auto-update, astfel incat daca instalezi acum Concept, ar trebui sa fie ultima data cand o faci manual. Nu-ti va cere niciodata sa inchizi aplicatia pentru update ... sta acolo in background, pana poate face update-ul (pana nu ai nicio aplicatie Concept deschisa, iar atunci il face repede), fara ca userul sa isi dea seama ce se intampla. Am avut o discutie pe tema acestor update-uri cu un coleg programator deranjat de faptul ca exista un update la 1-2 zile ... Dar tocmai asta inseamna atentie fata de useri: nu sunt numai bug fix-uri ci sunt si noi feature-uri ...
Un feature nou este suportul de cookies exact ca in browser. Putem acum stoca informatii pe client (relative la host) si le putem accesa in baza unei chei (ex: username) doar de pe host-ul "proprietar".
Acum se compileaza mult mai usor si pe Ubuntu (pentru cei interesati).

Despre Gyro sunt si mai multe de spus... pe langa mult debugging, sunt si cateva feature-uri noi, de exemplu "show entity as icon", rezultand liste ca in imaginea de mai jos:Thumb-urile pot fi poze sau filme.

De asemenea, exista flag-uri pentru click/dublu click (de exemplu, daca lucram cu touch screen, vrem sa dam un singur click).

Un alt element nou este relatia unei entitati cu ea insasi - foarte util in multe situatii.

Ma bantuie o fantoma ... atunci cand se foloseste "mysql embedded" in loc de ODBC, uneori, uita savepoint-ul ... nu-mi pot explica ... o sa actualizez mysql-ul din distributie, poate este un bug. Este posibil sa fie oare un bug in InnoDB ? Eroarea apare absolut spontan, si 3 clienti de-ai nostri au raportat-o, dar a aparut o data, dupa care a disparut. Toti cu aplicatii mysql embedded. Cei cu ODBC nu au intampinat-o.

Nu am spus nimic de eLiberatica. A fost frumos, o experienta intr-adevar unica cu bune si rele. In cautarea mea a pasiunii pentru ceea ce inseamna cod, am dat peste open source si tocmai pentru ca am avut asteptari, cred ca am fost dezamagit. eLiberatica mi-a placut ... a fost frumos si cu siguranta voi participa si anul urmator. Am cam fost prins la stand si am ascultat prezentarile in fuga. Recunosc ca am cunoscut 3 programatori foarte interesanti, cu care am schimbat idei, iar cateva deja se regasesc in Concept. Ce nu mi-a placut, este ca open source-ul in continuare este gasit in titluri precum "Cum poti face bani din Open Source". Un prieten, pornit pe open source, spunea asa "cei ce nu pot vinde, fac open source" - are dreptate - dar eu as completa cu "cei ce nu vor sa vanda, fac open source". Un pasaj interesant, gasit de curand spunea:

Under communism, there is no need for money, because all goods needed to support life are free, which by "free" we mean the BEEP take all your loot. The problem with this is that everybody loves money. (ar fi o explicatie pentru noi romanii, atat de dornici de a face bani)

E interesant, pentru ca open source-ul asa cum l-am vazut eu, e ... pe-acolo. Tind totusi sa cred ca open source-ul este pasiune.
O alta problema cu multe comunitati open source este ca "vorbesc" in loc sa "faca". Vorbim, dezbatem ... dar nu facem. Cred ca sunt prea multe orgolii la mijloc ... sa nu uit ... am incercat sa contactez o comunitate open source din Romania ... dar am esuat.

TRECETI LA TASTE OPENSOURCISTILOR SI PROGRAMATI!

Tuesday, May 19, 2009

Avem logo pentru Concept Application Server

Dupa gandit si razgandit, avem un logo pentru Concept Application Server, logo si mascota. E vorba de o albinuta pe care o cheama "Nuchilar" Bee. E simpaticuta. Legatura cu CAS ?

Simplu ... albinele comunica la distanta, lucreaza in echipa (cam cum lucreaza aplicatiile Concept) si fac miere !

E desenata de Olimpia Lazar, fara photoshop ...

Friday, April 24, 2009

Concept Web Browser

Am reusit sa fac ceva ce-mi doream de mult: un browser (bazat pe WebKit, nu-ti imagina ca am facut eu un engine de randare). Totul vine ca plug-in pentru Concept Client, si interfata e identica pe majoritatea sistemelor de operare. Concept WKB (WebKit Browser) va fi integrat in CIDE, astfel incat testele pentru aplicatiile web sa se faca strict din IDE. De asemenea, wrapper-ul este foarte util pentru embeduirea WebKit in aplicatii concept:// (cam cum face Microsoft)
.

Monday, April 20, 2009

Cautare indexată

Salut. Ce fac oare de Paste ? ... lucrez ... am adaugat Xapian (engine de căutare). Am construit atât wrapper-ul pentru Concept cât și interfața pentru GyroGears. Acum prin simpla bifare a unui flag se poate activa cautarea indexata pentru un proiect, cautare ce vine in 2 variante:
  1. căutare + indexare asincronă (se generează o coadă de indexare, iar indexarea se face de un proces separat, dupa ce a fost adaugată/modificată sau stearsă de un utilizator)
  2. căutare + indexare sincronă (indexarea se face imediat ce informația a fost adaugată)
In curand voi posta un link cu primul proiect web 2.0 generat cap coada din GyroGears.

De ce Xapian ? Ca sa intrebe PHP-istii "de ce nu Lucene ?". Voi implementa si Lucy (varianta C a lui Lucene imediat ce va exista un release pentru aceasta). Un alt motiv pentru Xapian este faptul ca foloseste BM25 (ce pe Lucene am inteles ca este disponibil doar ca plug-in separat).

Cautare indexat

Friday, April 3, 2009

GyroGears + Video Sharing = LOVE

Am amintit in ultimul post ca exista elemente noi prin Gyro. Unul din ele este tipul de date "multimedia" ce poate tine continut video/audio. Se foloseste ffmpeg pentru a genera imaginile de preview; tot prin ffmpeg se face "normalizare" (conversia la un format standard la un bitrate/samplerate standard, de exemplu flash video). Pentru asta se genereaza si un Concept Service - o coada de conversie ce ruleaza permanent si asteapta sa se primeasca un video pentru a-l procesa; stabileste ordinea de procesare pe modelul FIFO (primul venit, primul servit). Am atasat 2 capturi - prima cu interfata de definire din Gyro si una cu rezultatul (aplicatie Concept). Pot fi generate si aplicatii web traditionale (astfel, putand face un sistem gen YouTube in maxim cateva ore).

Figura 1 - Tipul de date "multimedia"


Figura 2 - Aplicatie cu tipul "multimedia"

Wednesday, April 1, 2009

Make software not money !

O să mă abat de la subiectul uzual (GyroGears). Am participat în ultimul timp la tot felul de întâlniri in care s-a discutat despre soft și trebuie să recunosc că am rămas destul de dezamăgit. Observ că există o problemă cât se poate de serioasă cu gândirea 'corporate'. Sper ca doar pe meleagurile noastre.

Acum, aș vrea să-ți amintești, că programatorul nu este mercenar; poate ca nu este nici artist ... dar cu siguranță este undeva între. "Programarea" (îi voi spune de acum așa, nu "software development") trebuie făcută cu drag, cu pasiune, nu de dragul salariului. Am auzit niște povești "marketiste" atât de frumoase, cu cuvinte așa de mari, încat sunt convins ca dincolo de client ce ajunge să fie derutat ... chiar consultantul nu mai știe ce vinde (dar învață la training-uri !). Un prieten mi-a spus "am vandut clienților soluții fără să știe exact ce cumpară"... fiind mândru de asta. Oare e motiv de mândrie asta ?
Nu sunt în extrema lui Stallman (cu toate că sunt de acord cu el în multe privințe), eu considerând că trebuie să avem și licențe comerciale, dar totuși, obiectivul principal nu trebuie să fie "vânzarea". Gândește-te la principiul: "calatoria este jumatăte din distracție".

Am văzut un video foarte interesant, un interviu cu Bill Gates și Steve Jobs. La un moment dat se discută de faptul că Bill, în tinerețe a fost la Apple să-i ajute cu o implementare. Prima întrebare a fost "cu cât ai fost platit" (30.000$), dar Bill a raspuns incepând cu "It was actually fun". Acum, venim noi, "corporatiștii de Balcan", și credem ca o sa existăm și peste 20 de ani ... probabil că nu ... Știi poate că era acea perioadă, în care oricine avea 2 apartamente comuniste scoase la vânzare în București sau Cluj, se credea Donald Trump ...
Că veni vorba ... oare e in regula să avem ca model capitalist pe Donald Trump ?
Avem "Earth hour" ... ce-ar fi dacă am avea și o "no marketing bull**** hour" ?
Oare "go green" nu ar fi "ipocrizia suprema" in materie de marketing ?

Vroiam să-ți scriu despre GyroGears astăzi, sunt multe elemente noi, dar le vei vedea dacă downloadezi sau in post-urile următoare.

Friday, March 27, 2009

Prezentare GyroGears !

Salut. Am facut un draft al primului tutorial GyroGears. E un pic cam lung (41 de minute), deoarece am inceput prin a prezenta si Concept Application Server (primele 10 minute).

Vizionare placuta (daca exista rabdarea necesara) !

Tuesday, March 17, 2009

"Enhancing the User Experience" sau poze colorate

Revin cu elemente noi prin GyroGears (distributia de pe www.radgs.com a fost deja actualizata, pachetul Concept Application Server, ce contine GyroGears BETA). In afara de foarte multa depanare, am mai adaugat thumbnails-uri pentru campurile de tip 'picture'. Cred ca se poate oferi astfel o aplicatie vie, ce poate reuseste sa prezinte view-uri mai ... "non-foxpro" (fara suparare fata de programatorii fox). Practic sunt puse cap la cap toate elementele pentru a genera un catalog virtual sau un magazin virtual in cateva minute. Sa nu uit ! Screenshot-ul este dintr-o aplicatie "A basic organizer" definita folosind GyroGears in 21 de minute. Exista si screencast-ul pt asta, doar ca, inca nu am avut timp sa fac comentariile pentru prezentare.

Thursday, March 5, 2009

GyroGears si touch screen

Am finalizat suportul de touchscreen pentru GyroGears. Totul se rezuma la cateva operatii foarte simple, astfel: un flag(bifa) cu "Optimize for touch screen" si filtre de touch screen. Un filtru de touchscreen imi va genera niste butoane foarte mari, pe care utilizatorul va face click "sectionand" view-urile. Astfel, daca ne gandim la un sistem horeca, putem defini filtre pentru "sucuri", "bauturi alcoolice", "cafele", etc.. Cand utilizatorul va alege "sucuri", i se vor afisa numai entitatile din "Produse" ce fac parte din categoria "suc". Am atasat si 2 screenshot-uri: primul din GyroGears, din zona de definire a filtrelor de touch screen si un al doilea screenshot cu interfata rezultata, cu "Handpad"-ul vizibil.

.
Fig 1 - Definirea filtrelor de touchscreen


Fig 2 - Interfata touchscreen

Monday, March 2, 2009

Intre o cana de ceai si IT Academy

Ce fac programatorii Concept in week-end:

- Am fost sambata sa le vorbesc celor din AISEC despre Concept. Trebuie sa recunosc ca a fost destul de interesant, reusind sa stabilesc contact cu destul de multe persoane interesate.

- Intre Gyro si Concept, m-am pus la o cana de ceai de menta, in umbra bradului meu de Craciun. Dupa care, am realizat ca doar ce a trecut 1 Martie si inca mai am bradul ... dar e frumos, si inca nu naparleste ... oare va rezista pana in decembrie ? ... sau va trebui, ca in anii precedenti, sa-l scot tiptil-tiptil noaptea, ca sa nu ma vada vecinii, probabil candva prin luna mai ?

Friday, February 27, 2009

GyroGears BETA pentru toata lumea

Am revenit. Din pacate luna aceasta am fost foarte ocupat, atat cu CAS si mai ales cu GyroGears. Multe lucruri noi, printre care: combo-uri conditionate, astfel:
Daca avem o relatie (many to *) atunci putem sa definim un filtru. La ce este util ? La foarte multe, cum ar fi, entitatile de tip Judet ce sunt in relatie cu Orase. Atunci, intr-un form, cand aleg judetul, e mult mai interesant daca pentru oras, nu ma lasa sa aleg decat din orasele judetului.

Multe briz-briz-uri adaugate precum suportul de touchscreen (butoane mai mari si buton "context-helper" pentru emularea click-dreapta) ... si nu in ultimul rand ... mult debugging !

O alta veste buna este ca: GyroGears 0.91 BETA este inclus in pachetul Concept Application Server !
... fiind free, dar din pacate, deocamdata nu open-source.
Pachetul poate fi downloadat de pe www.radgs.com.

Wednesday, January 14, 2009

Optimizari!

In ultimul timp am fost preocupat de optimizari pentru Concept Application Server si GyroGears. Astfel, dupa o gramada de bataie de cap, am reusit reducerea cu 48% a necesarului de memorie, un server putand rula acum un numar dublu de aplicatii CAS/Gyro. Optimizarile au fost facute doar in framework (44%) si in core(4%). Totusi, ma gandesc la mai mult: avand in vedere ca cea mai mare cantitate de memorie intr-o aplicatie GyroGears este folosita de UI, m-am gandit sa fac un "MinimalControl". Este practic o clasa ce are numarul minim de membri, se opereaza mai low-level cu ea (ex: proprietatile se scriu minimalControl.SetProperty(P_CAPTION, "Text") ). Aceste clase nu vor interactiona cu programatorul (codul fiind generat automat de GyroGears si de CIDE). Ma astept ca in acest mod sa reduc inca o data la jumatate necesarul de memorie. Inca ma gandesc cum voi face transofrmarea de la un "MinimalControl" la controlul echivalent, de exemplu RButton.
Pentru aplicatia de test (HRCompanion) am redus practic consumul de memorie de la 178MB la 93MB. Acum, daca as reusi sa ajung sub 50MB ar fi excelent (avand in vedere ca este o aplicatie foarte complexa).

Pana atunci, intram iar in BETA cu framework-ul ... dar probabil ca-l voi propune ca versiunea 1.1.

Sunday, January 4, 2009

Pregatiri Concept(uale)

Lucrez intens la partea de Web pentru GyroGears. Nu e un secret faptul ca atunci cand se doreau aplicatii web traditionale (pagini web de server) se rula in general prin Apache + Concept CGI.
Dezavantajele folosirii interpretorului CGI erau evidente: de la securitate, pana la timpul de raspuns crescut (dar de cele mai multe ori insesizabil). Dincolo de asta, erau cazuri cand nu se interceptau erorile (din diferite motive, cum ar fi netrimiterea header-urilor s.a.m.d.).

Solutia a fost sa fac un modul de Apache 2.x. Bataie mare de cap de un week-end ... in principal din cauza documentatiei sau mai bine spus a lipsei "dansei". In final, cu chiu cu vai, uitandu-ma peste ce au facut altii si facand zeci de artificii, numite de mine "ciorba" am legat ceva ... ii voi spune deocamdata versiunea 0.8 beta. De ce 0.8 ? Pentru ca asigura 80% din functionalitate. Concept pentru aplicatiile web, foloseste qDecoder. O biblioteca bine gandidata pe fiecare versiune in parte ... dar prost gandita in materie de versiuni, astfel, codul scris pe versiunea 6 nu va fi compatibil pe versiunea 9 ... Dincolo de asta, a trebuit sa iau versiunea 6 si sa o modific astfel incat sa functioneze si cu Apache. Practic, qDecoder presupunea rularea ca CGI si citea totul din variabilele de mediu (environment variables). A trebuit sa modific inclusiv in CORE-ul Concept astfel incat sa am un parametru "userdata" (care poate fi practic orice) care sa circule intre Apache si qDecoder, traversand Concept CORE... mare bataie de cap, dar a iesit bine.
Acum, problema este cu memoria: Daca in materie de CORE lucrurile stau relativ bine(bine e imposibil, pentru ca vorbim de software => bug-uri), in multe biblioteci 3rd party exista memory leak-uri, facand sa creasca memoria necesara procesului Apache HTTPD. Creste, dar pana cand ? ... pana se restarteaza Apache. Suna un pic alarmant, dar leak-urile tin de bibliotecile altora ... O poza intitulata "not my job" imi explica punctul de vedere(nu o copiez aici pentru a evita problemele de drepturi de autor). Acum, nu spun ca nu exista memory leak-uri in CORE-ul Concept sau in Concept Framework ... Probabil ca exista, si cum le voi descoperi sau imi vor fi raportate, le voi repara.
Pe pagina http://www.radgs.com/43-apache-2-module.html exista instructiuni pentru configurarea lui Apache HTTPD 2.x atat pentru ferestre cat si pentru pinguini sau draci.
Pana atunci, testam interfetele pe cativa din clientii nostri, care au trecut azi de pe CGI pe mod_concept si deocamdata n-au aparut probleme.

PS: Am rezolvat un bug minor din Concept Client care facea consola sa ramana uneori deschisa atunci cand aparea o eroare. Acum se inchide. Era un bug minor, deoarece nu afecta functionarea aplicatiilor. Oricum, am pus update-ul pe site.