JsLint in Eclipse

JsLint (http://www.jslint.com) este un validator de sintaxa si “bune practici”, evident pentru Javascript. Utilitate relativ indoielnica, dar devine util de exemplu cand ai probleme de cross browser.

In acest context, am incercat sa creez un “external tool” in eclipse cu jslint ca sa-l pot rula usor pe orice fisier. Problema e ca jslint e scris in … javascript – deci aveam nevoie de un interpretor de javascript care merge pe windows in linia de comanda.
Un scurt search pe g, ar fi cateva optiuni:

– rhino (http://www.mozilla.org/rhino/) Rhino e teoretic un motor care ar putea face asa ceva, dar e scris in java deci trebuie sa chem interpetorul java care sa cheme rhino care sa intepreteze jslint … prea complicat. In plus, sincer, nu am reusit sa fac sa mearga combinatia, deci pula.

– jslib (http://code.google.com/p/jslibs/) Jslib e o librarie destul de misto … aparent. Dar nu ruleaza jslint, da erori .. deci pula si asta.

Usor enervat, mai gasisem ceva in care era utilizat motorul jscript din windows dar era outdated, eram gata sa renunt cand am descoperit. Javascript Lint : http://www.JavaScriptLint.com , care e practic o versiune compilata, cu interfata in linie de comanda pentru jslint-ul original.
Are si un fisier de configuratie care e destul de flexibil … deci merge.
Pentru a utiliza asta in eclipse, am creat un nou external tool, care arata cam asa:

external tool
external tool

Cu chestia asta am rezolvat problema, rezultatul evaluarii apare in consola.

Analiza Parazitii – Curios – Scandalos

Melodie de pe albumul “Nici o problema” aparaut in 1999, piesa
“Curios-Scandalos” este un documentar psihologic ce zugraveste in primul
rand ciocnirea a doua lumi ce coexista. Primul vers “Venim dintre blocuri
d-alea din beton” proiecteaza dosarul unei existente simple – existenta
autentica, atat personala cat si colectiva, vazuta dintre blocuri de catre
vorbitorul contopit cu viata cartierului.

Autorul este onest, si nu poate fi onest decat la persoana I. Realitatea
autorului se izbeste de conceptia adresantului legata de monotonia vietii
din cartier. Autorul nu scapa prilejul chiar din prima strofa sa isi exprime
fronda fata de superficialitatea adresantului, pe care il dispretuieste (“Ai
avea un shoc daca-i sti ce gandesc despre tine”), dispret dezvoltat in
refren. Explicatia se refera la imposibilitatea adresantului de a intelege
realitatea asa cum autorul o percepe. Adresantul nu este nici macar tangent
la realitatea autorului, nu cunoaste nimic pentru ca nu rasfrange in el
insusi nici “viata in viteza “, nici faptele pe care le vezi “de cand intri
pana iesi din cartier”, toate acestea nu se reflecta in continutul sau
sufletesc. La randul sau autorul face abstractie de existenta lumii
exterioare cartierului, inchipuindu-si ca nu exista altceva decat fluxul
minimal al propriei sale constiinte: “Tot ce vrem e sa sara-n aer boxele”.
Avem de-a face cu conflictul a doua mentalitati simpliste fiecare in felul
ei. Spre deosebire de adresant, autorul este salvat insa de autenticiate.

Venim dintre blocuri d-alea din beton
Si iubim tot ce tzie tzi se pare monoton
Am 20 de ani imi spui ca gandesc bine
Ai avea un shoc daca-i shti ce gandesc despre tine

Refren:
Curios , critici fara sa traieshti
E scandalos , felu-n care ne priveshti
E Curios , critici fara sa traieshti
E scandalos , E curios

Prima strofa propriu zisa pune in primul plan persoana intaia si a treia,
exponentii vietii si mentalitatii inchise in granitele cartierului.
Ceilalti, neinitiatii sunt vag pomeniti: “concurenta”, cel “ascuns in
ceata”. Daca in urmatoarea strofa exponentii sunt in primul rand “baietii”,
gasca ce sustine, motiveaza si inspira demersul artistic, precunm si insusi
sensul de a fi al autorului, prima strofa propriu-zisa ne releva un univers
personal. Tenie, Ombladon, care vin din inima strazii pentru o terapie care
te vizeaza, pentru a face sa sara in aer boxele, cei care au vocatia si o
dau la shto, care darama concurenta si traiesc viata in viteza. Totul se
termina cu promisiunea de a ramane la fel si peste 50 de ani, locul “unde a
plouat cu bani” findu-i nefamiliar.

Ne-am intors ca numaru` unu Parazitzii
Pentru totzi bagabontzii
Direct din inima strazii in direct
Tennie Ombladon in efect
Hip-Hop pentru terapie
Tot ce vrem e sa sara-n aer boxele
Ca-n prima zi la shto dau
Ai senzatzia am vocatzia
Concurentza cade azi peste lung gravitatzia
Pentru totzi care-i iubim
Vorbele pleaca din inima direct pe ritm
Ador viatza in viteza drumu` il am in fatza
Nu feresc pe nimeni daca e ascuns in ceatza
Omu` din gresheli invatza
O sa fiu la fel peste 50 de ani
Frate am venit din locu` unde nu a plouat cu bani

Refren:
Curios , critici fara sa traieshti
E scandalos , felu-n care ne priveshti
E Curios , critici fara sa traieshti
E scandalos , E curios

In a doua strofa fresca sociala sporeste in complexitate. Regasim o
condensare de caracteristici ale personajelor extrem de sugestiva. Antiteza
sociala este dezvoltata: primul plan, cel al baietilor de cartier, este
raportat la persoana intai si a treia (“ai mei isi fac de cap”, “stam acolo
zi si noapte”), pe cand planul social al celor care critica fata sa traiasca
vizeaza persoana a doua. Toata piesa de fapt este structurata sub forma unui
dialog. In ciuda naturii aparent rudimentare a persoanejelor (“stam acolo zi
si noapte, numai glume frate”), eroii parazitiaci sunt doar scosi din sfera
ipocriziei sociale, pe cand in cadrul realitatii immediate, chiar si
irationale (“se conduce beat, toti baietii sa consume”), ei infatiseaza
experiente complete. In scrierea de fata regasim doau timpuri: trecutul si
prezentul. “O sa fiu la fel peste 50 de ani” sugereaza un fals viitor, un
viitor care nu este nimic altceva decat mostenirea unui trecut din “locu`
unde n-a plouat cu bani”. Viitorul este un timp fals in piesa, asa cum si
monologul este un fals monolog, mascand un dialog vadit intre personaje
precis conturate, cei care raportati la viata de cartier “o traiesc si o
simt”, si cei care critica fara sa traiasca vreo experienta autentica.

De cand intri pana ieshi din cartier
Cu alcool femei mashini ai mei i-shi fac de cap
Dintre vorbe de-ale lor nu intzelegi nimic
Fiecare a vorbit in jargon de mic
De azi in cartier inc-o lege se impune
Se conduce beat , totzi baietzii sa consume
Aaa Da da Colentina 3 3 blocuri mai incolo sunt baietzii mei

Baietii care isi fac de cap “cu alcol, femei, masini”, au un teritoriu clar
definit: “de cand intri pana iesi din cartier”. Dar o comunitate nu se poate
defini doar geografic, ci in primul rand din punct de vedere al limbajului.
In cartier “fiecare a vorbit in jargon de mic”. Aceasta este de fapt semnul
recunoasterii reciproce, a marginalitatii si subversiunii fata de cultura si
limba oficiala a ta, ca si exponent al altei lumi, tu cel care “dintre vorbe
de-ale lor nu-ntelegi mimic”, si care “critici fara sa traiesti”. Cartierul
nu este o notiune abstracta, vag definita, cel putin nu in universul liric
al Parazitilor, ci din contra, nucleul decadent al acestuia este precis
definit: “Culentina 3, trei blocuri mai incolo sunt baietii mei”.

Stam acolo zi shi noapte numai glume frate
In multe cartiere vezi aceleashi fapte
E Curios , critici fara sa traieshti
E scandalos , felu-n care ne priveshti
Cum e viatza de cartier multzi nu shtiu
Sunt shi cei ce o traiesc shi o simt
Baietzii mei o comit seara de seara
Asta au invatzat cat au lipsit din shcoala

Influentat probabil de Camil Petrescu, pentru care merita a fi scris doar
“ceea ce văd, ceea ce aud, ceea ce înregistrează simţurile mele, ceea ce
gândesc eu…”, autorul parazitiac indeamna in intreaga piesa la o reflectie
concreta a esentei vietii “dintre blocuri, d-alea din beton”, univers in
care momentele din trecut si din prezent par a avea o realitate egală, “
baietzii mei o comit seara de seara/asta au invatzat cat au lipsit din
shcoala”, sau ” dintre vorbe de-ale lor nu intzelegi nimic/fiecare a vorbit
in jargon de mic” sau “o sa fiu la fel peste 50 de ani/frate, vin din locu`
unde n-a plouat cu bani”.

Autorul ramane in constiinta ascultatorilor de gen drept un excelent creator
de imagini, iar piesa trece dupa parerea mea drept una dintre cele mai
puternice din intreg repertoriul parazitiac.

matei (24 nov 2008)

Analiza Parazitii – Barbut

Pentru episodul de astazi, m-am gandit sa aleg o bijuterie a genului, si foarte sus in topul personal al melodiilor Parazitii, “Barbut”, aparuta pe albumul “Suta” in 1997.

Pentru referinta, adaug aici un montaj de pe youtube, cu melodia:

“Barbut” e o melodie veche, destul de cunoscuta as zice, dar initial am intalnit o problema destul de spinoasa –  nu am gasit in nici un fel versurile pe net, deci am fost nevoit sa le transcriu eu ascultand melodia. Acest obstacol m-a ajutat de fapt, pentru ca am fost nevoit sa fiu atent la topica frazelor, structura melodiei, mult mai mult decat in cazul in care o abordam de la inceput ca un text.

In cadrul transcrierii, am folosit niste conventii pe care le mentionez aici:

1. [] intre paranteze am pus partile de “background” social, folosite pentru plasarea mai exacta a melodiei.

2. … indescifrabil

3. “” dialoguri ce nu fac parte efectiv din piesa

4. – – am folosit aceasta notatie pentru a sublinia partile de dialog incluse in melodie.

5. Problemele de topica, de exemplu, in sectiunea

“Jocul se incinge, fiecare se impinge,

E cu ochiu’n zar.

Daca pierde sau invinge,

nu conteaza fiecare sta pe ace,

mai rau se enerveaza.”, initial, datorita ritmului despartirea frazelor nu este foarte evidenta (vezi melodia), dar la o privire mai atenta se observa despartirea propusa de mine.

Ok, in primul rand versurile:

[” … Nu mai intinde mana la zar … las-o asa … “]

Barbut, e un cuvant urat,
Insa banul care ti-l aduce-ti face viata dulce.

Hai sa dam o gheara,

pune banu’ jos, cheama norocul,

dac’ai mana ai jucat – te-ai scos.

Te-ai scos – bine, nu te-ai scos – bine.
Pr
ima mana’i la mai mare, a doua dao’n coada,
marca banul, da-i cu zarul.
Inca’o data, hai pe duble,

Pui inelu’n joc, la pace?
Iarta-ma ca-ti zic,
bai da si un ciuc te face,

uite, te cheama si nevasta … o pui in joc si p’asta?

– Nooo – Atuncea pleaca acasa, o dai prea in rusini,
si poate-ti iau casa, fraiere … lasa-te …

REFREN: 4X:

Da-te batut, da-te da-te batut,

Da-te batut daca nu sti barbut.

Din nou in cartier … e seara,
si toti baietii am sarit din cas’afara,

La o bere, doua bere, trei bere, patru bere,

gatul tot mai cere insa nu-i nici o placere – un mic ceva lipseste.

Sase personaje ne-am bagat intr-o parcare,

sticla’n mana, banu’ afara.
Cu toti suntem chititi sa dam o gheara.
Primul leu il face eu, insa Bip e cu noroc,

ce-ai facut, ce-ai facut?

Jocul se incinge, fiecare se impinge,

e cu ochiu’n zar.

Daca pierde sau invinge,

nu conteaza fiecare sta pe ace,

mai rau se enerveaza.

Sanu’ … Braila … juma – juma.
In parcare apare Mechenici cu vreo trei amenzi – beat turta,
“hai sa moara tata – dam o mana scurta!”
[“… hai ma, … dai … hai sa vedem ce … hai ca dau eu … .. nu mai intinde mana la zar!”]

Refren 2X

Daca nu sti barbut …
Daca nu sti barbut …
Daca nu sti barbut.

[… sticle care se ciocnesc, zgomot de cauciucuri …
… hai noroc, bai …
… Ba, iesi afara, date’n pula mea! …
… Trage apa, ca pute, baaa! Trage apa, ca pute! …
… presa, presa, presa, baa … sssshhh …]

Pornesc analiza mea cu observatia ca, spre deosebire de alte opere Parazitii cu un pronuntat caracter liric, acesta are o dinamica mult mai usor interpretabila.
Melodia trateaza un subiect social, si in acelasi timp personal, sugerand o imagine a jocului mintii si al vointei, cum il numea un clasic in viata, adica barbutul.
Fluxul narativ este construit in jurul dialogului dintre 2 personaje, in duelul zarurilor. Unul este evident dominant, conducand jocul din punct de vedere psihologic.
As sublinia aici si tehnica de incadrarea in mediul barbutului – cartierul – folosind secvente “live”, vorbite ce introduc/extrag ascultatorul din spatiu semiotic construit de trupa.

[” … Nu mai intinde mana la zar … las-o asa … “]

sau

[“… Trage apa, ca pute, baaa! Trage apa, ca pute! …“]

Autorii folosesc un joc obisnuit de barbut (o “gheara”), pentru a trasa “semnele” esentiale si a defini manifestul social al barbutului. Acesta este “un cuvant urat”(incadrare revoltata in anti-social), care insa iti face “viata dulce” prin castigurile financiare. Norocul isi are rolul lui, dar psihologia jucatorului si pozitia lui in cartier este cel putin la fel de importanta. Jocul isi intareste natura rituala o data cu cresterea mizei: de la “inel”, la casa sau chiar nevasta. Nu este loc de greseli – cedarea duce la o retragere rusinoasa si compromiterea pozitiei in comunitate – “Atuncea pleaca acasa, o dai prea in rusini”.

Treptat, se contureaza elemente cheie ale ethos-ului jocului : dublele, la mai mare, Braila, juma-juma, cunoasterea limbajului specific fiind un filtru necrutator ce elimina neavenitii.

Refrenul intareste prin repetare aspectul dur al vietii de cartier: “da-te batut, da-te da-te batut, da-te batut daca nu sti barbut” – nu exista nici o mila pentru invinsi. Pierderea – adica necunoasterea profunda a jocului – este un eveniment ce cimenteaza relatiile in grup, si defineste natura lor.

Berea si micii sunt accesorii esentiale ale jocului, desfasurat “intr-o parcare”. Norocul este schimbator, trece de la un jucator la altul – “Primul leu il face eu, insa Bip e cu noroc“. Treptat, miza isi pierde din importanta, participantii sunt din ce in ce mai absorbiti in joc -“Daca pierde sau invinge,/nu conteaza fiecare sta pe ace”. Tensiunea cresteJocul se incinge, fiecare se impinge”, si atentia trebuie mentinuta pe “zar”.
Un joc odata inceput reprezinta un pol de atractie in comunitate, alti doritori apar si intra in joc – “in parcare apare Mechenici “.
Refrenul repetitiv se pierde in fondul vietii de cartier, ce absoarbe si accepta starea de fapt, viata adevarata.
Melodia se termina cu o secventa similara celei de inceput, sugerand ideea de continuitate; viata este un etern barbut in care pierzi sau castigi, dar trebuie sa joci.

Despre MySQL si soundex

Deci MySQL … Sincer sa fiu, in disputele religioase MySQL vs PostgreSQL, sunt de obicei de partea Postgres, dar fortat de imprejurari in general trebuie sa utilizez MySQL (impotriva bunului meu simt, of course). Anyway, pana acum nu am avut motive chiar asa serioasa sa ma irite MySQL. Pana acum.

De curand intr-un proiect care-l “repar”, aveam o pagina care lista niste aeroporturi in functie de inputul utilizatorului. De exemplu daca introduceai “paris”, respectiva pagina iti lista cele cateva aeroporturi din paris si inca vreo 7 – 8 din lume care erau “asemanatoare” ca nume.

Problema e ca rezultatele erau foarte aiurea in unele cazuri, si nu intelegeam de ce. O scurta privire in codul primitiv si prostesc care domneste in acest proiect mi-a dezvaluit modul destul de simplu in care se facea operatiunea:

in baza de date o tabela stoca o lista de aeroporturi care avea in nume si orasul (utilizatorul urma sa caute dupa oras), si folosind functia SOUNDEX, lista toate inregistrarile alea carui SOUNDEX era identic cu cel al stringului cautat. Destul de normal .. aparent.

SELECT ID,Code,City, Airport, Country FROM airports WHERE Soundex(City) = SOUNDEX(\”$deptArpt\”)

Problema e ca “baietii de la mysql” au hotarat ca nu are sens sa urmeze algoritmul de soundex din manual, ei sunt mai destepti si algoritmul lor nu se opreste dupa 3 numere identificate, ci merge pana la sfarsit. Ideea pare ok, pana iti dai seama ca in felul asta “new york airport” si “new york” au scoruri diferite, which really sux. De aici veneau problemele – soundex este destul de inutil in forma lui initiala.
O posibila rezolvare ar fi sa pastrez doar primele 3 numere si sa le ignor pe restul, ceea ce am si facut. Insa inainte am calculat toate soundex-urile intr-un camp suplimentar  (soundscore) pentru a usura load-ul in timpul functionarii.
O alta problema a fost “similitudinea”. Un SGBD inteligent ca Postgres are o functie care se cheama similarity si care iti returneaza un scor care il poti folosi pentru a regla cate rezultate primesti. MySQL … normal ca nu are asa ceva. Eu aveam nevoie si de acest comportament, asa ca am scos prima litera din rezultatul soundex (care arata ceva de genul P345, unde P e prima litera a stringului), si am facut o comparatie a diferentei intre scorul initial si scorul stringului cautat.
Adica ceva cam asa:

select ID,Code,City, Airport, Country from airports where ABS(CAST(substring(soundex(\”$deptArpt\”), 2) as SIGNED) – soundscore) < 5 AND substring(soundex(\”$deptArpt\”), 1, 1) = soundletter

Ultima comparatie este necesara pentru ca prima litera este esentiala in acest tip de cautare.
Bun asta cam imi rezolva problema, pot stoca rezultatele in soundscore pentru ca lista de aeroporturi este statica. Oricum … MySQL … pula mea …varza.