Aug 14 2008

HQL-ul mamii lui…

Category: Miscellaneous,TechnicalIuliana @ 19:16

De ceva vreme ma chinui cu un task de la servici. Spun ca ma chinui, pentru ca specificatiile se tot modifica si de fiecare data cand vreau sa implementez ceva gasesc buguri sau nelamuriri.

Hai sa dau niste detalii. Deci am o tabela cu niste inregistrari numite tranzactii. In fiecare tranzactie sunt implicate niste conturi, dar nu direct ci prin intermediul altor tabele. Intr-una din tabele astea o intregistrare are un camp numit value. Eu trebuia sa fac un query care sa sumeze valorile respective pentru tranzactiile in care apare un anumit cont ca destinatie. Toate in toate  tranzactiile sumate nu sunt implicate conturi care au “parinti” intr-o anumita lista. Tranzactiile sunt si ele grupate in documente si se vor lua in considerar numai cele care fac parte din documente care au fost introduse intre datele specificate de utilizator.

Cum ar arata query-ul… asa intuitiv:

select sum(a.value) from Entry a where a.account.id=:id_param and a.sourcedestinationFlag=’destination’
and a.transaction in (select tr from Entry e inner join e.transaction tr where e.account.parentAccount in (:list))
and a.transaction.document.date <![CDATA[>=]]>:start_date
and a.transaction.document.date <![CDATA[<=]]>:end_date;

Simplu nu? Ei bine nu merge, hibernate arunca o exceptie de tipul NullPointerException. Ca respectivul query sa mearga trebuie sa arate de fapt asa:

select sum(a.value) from Entry a where a.account.id=:id_param and a.sourcedestinationFlag=’destination’
and a.transaction in
(select t from transaction t where t in
(select p from transaction p where p not in
(select tr from Entry e inner join e.transaction tr where e.account.parentAccount in (:list)) )
and t.document.date <![CDATA[>=]]>:start_date
and t.document.date <![CDATA[<=]]>:end_date
and t.deleted=:not_deleted_filter_param )

Al doilea select (ala cu p) e necesar tot pentru a preveni NullPointerException. Cea mai faina faza este ca nu iti spune ca este de la query-ul respectiv problema. Spune doar:

Exception in thread “main” java.lang.NullPointerException
at org.hibernate.hql.ast.tree.FromClause.findIntendedAliasedFromElementBasedOnCrazyJPARequirements(FromClause.java:120)
at org.hibernate.hql.ast.tree.FromClause.getFromElement(FromClause.java:107)
at org.hibernate.hql.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:81)

(… bla bla bla)

Cool ha?


Jun 24 2008

Defend the City

Category: Miscellaneous,TechnicalRpx @ 13:53

Cand am auzit prima oara sloganul, m-am gandit ca era vorba de “yet another stupid online web-game” gen TornCity. Este vorba de Malware City. Nelamurirea mea era totusi prezenta sa pe grupul de discutii [news]… Asa ca am intrat.

Este un portal dedicat stirilor si luptei impotriva aplicatiilor malitioase, fie ele virusi, troieni sau spyware. Promotorul acestui portal este Softwin SRL (compania ce produce pachetul BitDefender Total Security).

Portalul este impartit in mai multe parti (news, blogs, dictionary) continand informatii relevante pentru utilizatori. De asemenea pe prima pagina este un applet ce permite scanarea unui calculator online, fara a fi necesara instalarea unui software in acest scop.

Have fun using it!

Tags:


Jun 06 2008

Fac ce vreau si stiu ce fac(!?)

Category: English posts,MiscellaneousIuliana @ 8:55

Cica suntem o tara democrata. La fel si cei de la care ne-am inspirat, Us, Uk, Spania, Italia, etc. Si atunci daca suntem asa de democrati de ce pana mea ne doare capul ce fac altii si de ce atatea campanii impotriva consumului de tutun, alcool, avorturi, violenta domestica si restul? Chiar sunt organizatorii acelor campanii increzatori, ca doar privind o imagine sau privindu-i pe ei marsaluind se va schimba ceva? Se va lasa vreun fumator de fumat? O tipa care stie ca nu are cum sa isi ingrijeasca copilul nenascut nu va avorta? Un om al carui viata e praf si pulbere va renunta la cinzeaca de otrava care il ajuta pentru cateva momente sa vada totul in roz?Nu!Nici unul din cei enumerati mai sus nu va fi impresionat de campaniile respective. Pentru ca poate face o poza cat o mie de cuvinte, dar oamenii nu sunt impresionati de poze in asa hal incat sa-si shimbe viata. Nu sunt impresionati nici de documentare. Pentru ca daca ar fi asa si documentare ca Zitgeist, The Decline and Fall of America, The Awful Truth si-ar fi atins telul, deja am trai intr-o lume mai buna. Dar nimic nu s-a schimbat, mai mult totul merge inspre mai rau sau poate nu a fost niciodata mai bine, doar am fost eu destul de norocoasa sa traiesc intr-o micuta societate care m-a protejat ani buni de toate relele astea.
Omul este cel mai prost animal si exact ca si animalele nu se invata minte nici atunci cand sufera de pe urma prostiei lui. Oricat am fi de sus urcati pe scara sociala, oricat de educati si oricat de religiosi am fi, inevitabil suntem toti la fel. Si nu, nu ma exclud din categoria oameni, doar constientizez o trasatura umana pe care inteligenta mea nu o poate invinge, pentru ca la urma urmei sunt doar un om.

[English: I do what I want and I know what I do(!?)]

We say we are a democratic country. So are the countries that inspired us, US, UK, Spain, Italy, etc. So if we are so fucking democratic, why the hell do we care about what others do and why do we have so many campaigns against smoking, abortion, domestic violence and others? Do the guys that organize those campaigns really think that by watching an image or watching them marching will make a difference? Will a smoker quit smoking? Will a girl that knows the she can’t offer her unborn child a good life stop thinking about abortion?Will a man which life’s a mess give up alcohol, the only thing in the world that helps him see his life a little more pink?No!Neither of the ones mentioned will not be impressed by those campaigns. Because a picture might worth a thousand words, but people are not impressed by pictures that much as to change their lives. The are nor even impressed by documentaries. Because it it were so, and if documentaries like Zitgeist,The Decline and Fall of America, The Awful Truth wold have made a difference, we would already be living in a better world. But nothing is changed, everything seems to be going worse, even , or maybe it was never better and I just was one of the lucky ones that lived in a small society that protected me against some evils of this world.

Man is the worst animal, and exactly as animals, he never learns his lesson, not even when he ends up suffering from his own stupidity. No mater how rich we are, no mater how educated we are, or how religious we are, we are all the same. And no, I’m not excluding myself from the human race, I’m just stating a fact, no mater how intelligent I think I am, this cannot change the fact that in the end, I’m only human.


May 16 2008

De pe ici pe colo

Category: Miscellaneous,TechnicalRpx @ 12:43

De pe ici pe colo am dat pe google peste blogul unui big lazy sysadmin (sau cel putin asa se autocaracterizeaza). Nu mai conteaza ca eu dadusem search pentru termenul “openvpn”, insa ce-am gasit pe acel blog m-a lasat cu o impresie placuta. La fel de agitat si acid ca si mine in domeniu, insa cu mult mai mult timp liber se pare :)

Anyway, la ce vroiam de fapt sa ajung, ceea ce a povestit el acolo m-a facut sa-mi aduc aminte de vremurile vechi (eh, poate nu chiar asa vechi, acum circa 10 ani) cand ministerul de interne folosea inca calculatoare 386/486 marca Packard-Bell, un  Novell Netware antic drept sistem de operare si modem-uri de 4800 bps pentru comunicare marca Hayes. Daca vi se pare ca aceste echipamente erau obsolete chiar si pentru acea perioada, nu va inselati deloc. Dar chestia si mai deranjanta era ca pe toata frontiera modovei (adica de la galati pana la suceava) era un singur sysadmin (dumnezeu sa-l odihneasca). Pe vremea aia, eu copchil mic si prost fiind, eram uluit de cate chestii stia si cat de vasta era “baza lui de date” cu cunostinte, insa remarc acum ca de fapt si de drept chiar si pentru acele echipamente si sisteme de operare, configurarile facute erau o varza totala (recunosc ca ma amuzam tare cand mama vlahoslovea 3 zile dupa ce venea sysadminul sa-si faca sesiunea de “mentenanta”). Se naste si intrebarea… de ce?…  si inevitabil, fara prea mult efort de gandire, aflu si raspunsul: Banii! Imi aduc foarte bine aminte cum omuletul isi plangea de mila cum ca primeste mai putini bani decat dactilografa de la centrul de comunicatii, insa n-avea ce face pentru ca nu vroia sa riste plecarea la un alt loc de munca.

Recent auzisem de la mama ca au angajat la MAI o suita de noi absolventi ca administratori de sisteme. Chiar sunt curios sa vad cat de bine sunt platiti in ziua de azi, desi probabil nu li se aloca nici in ziua de azi cine-ste buget. Trist, avand in vedere ca acesti oameni ar trebui sa fie o resursa vitala, mai ales in Ministerul Administratiei si Internelor…


May 07 2008

Cu si despre pointeri…

Category: Miscellaneous,TechnicalRpx @ 22:47

Lucrez de o vreme la un proiect de dimensiuni relativ mari (pentru o singura persoana) si ma tot lovesc de diferite probleme si problemute. In general, nu dureaza prea mult pana la gasirea unei solutii, insa sunt niste detalii care uneori iti fac viata amara. Pointerii sunt unul dintre aceste detalii.

Cu totii stim de transmiterea parametrilor in C. Prin valoare, prin referinta… in functie de ce ne trebuie. Asta e clar… insa imaginati-va urmatorul scenariu:

Am un pointer (sa zicem la int). Am o metoda in care vreau sa modific adresa respectivului pointer. O solutie (aparent evidenta) ar fi:

void f(int* p){
p=10;
}
int main(){
int *p;
p=5;
printf("%d\n",p);
f(p);
printf("%d\n",p);
return 0;
}

Output:
5
5

Solutia corecta?

void f(int** p){
*p=10;
}
int main(){
int *p;
p=5;
printf("%d\n",p);
f(&p);
printf("%d\n",p);
return 0;
}

Output:
5
10

Deci teoretic (cat si practic) pentru a modifica adresa pointata de catre pointer, trebuie sa declar parametrul ca pointer-la-pointer si sa trimit la apel adresa variabilei pointer… Nu stiu cat de evidenta e varianta a doua pentru majoritatea coderilor in C, insa mie mi-a luat putin sa ma prind de ce pointerii mei nu-si modificau adresele retinute…


Apr 14 2008

Starcraft goes “No-CD”

Category: Miscellaneous,TechnicalRpx @ 14:56

Vesti bune pentru fanii jocului Starcraft.

Blizzard a decis sa nu mai ceara jucatorilor verificarea CD-ului Starcraft.

——————————————————————————–
– patch 1.15.2
——————————————————————————–

Feature Changes

– StarCraft and StarCraft: BroodWar no longer require the CD while playing the
game.  To play without the CD, please follow the following instructions:

– Windows Users:
– Make sure you have “Hide extensions for known types” unchecked under
Explorer Folder Options.
– If you own only StarCraft, copy “INSTALL.EXE” from the StarCraft CD to
your StarCraft folder and rename it to “StarCraft.mpq”.
– If you own StarCraft: Brood War, copy “INSTALL.EXE” from the StarCraft:
Brood War CD to your StarCraft folder and rename it to “BroodWar.mpq”.

extras din Patch notes

Pe langa elimitarea necesitatii CD-ului din unitate (sau a unei imagini pe hard), acest lucru va elimina necesitatea loader-elor virtuale sau a crack-urilor NO-CD si va permite in acelasi timp update-ul jocului fara a fi necesara si cautarea unor noi versiuni de crack/loader pentru cei ce nu s-au gandit sa cumpere jocul.

Acesta nu e primul exemplu de acest fel. In patch-ul 1.66, acum un an, Bioware a eliminat verificarea CD-ului in jocul Neverwinter Nights.


Apr 12 2008

Welcome back Demonoid!

Category: Miscellaneous,TechnicalRpx @ 11:58

Dupa cum bine stiti, acum 6 luni de zile, trackerul Demonoid a fost fortat de catre autoritatile canadiene sa isi inceteze activitatea.

Se pare ca intr-un final, dracusorul verde si-a regasit drumul spre utilizatorii sai pe 11 Aprilie, adica ieri :)

Inregistrarile de useri noi sunt inchise pentru moment, insa se pare ca userii vechi inca se pot loga.

Long live Demonoid!!