• Acasă
  • Despre noi
  • Autori
  • Mărturii
  • Arhivă
  • Trimite Articol
  • Contact

WORLDIT

Lumea în 1 și 0.

  • Știri
    • Tehnologie
    • Tehnologie mobilă
    • Securitate
    • Developers
    • Știință
    • Benzi desenate
    • Jocuri
    • Intern
  • Tehnic
    • Browser
    • C#
    • C/C++
    • Challenge
    • HTML/CSS
    • Javascript, Ajax, jQuery
    • Open Source
    • PHP
    • Python
    • Securitate IT
    • Socializare
    • WordPress
    • Altele
  • Recenzii
  • Interviuri
  • Evenimente

TameJs – o extensie Javascript pentru lucrul cu evenimente

0
  • Publicat de Andrei Avădănei
  • în Javascript, Ajax, jQuery · Open Source
  • — 19 iul., 2011 at 1:50 pm

Tame (sau „TameJs”) este o extensie pentru Javascript, scrisă tot în Javascript, ce promite simplificarea programării evenimentelor – practic Tame ne ajută să scriem, citim şi să modificăm evenimentele în Javascript mult mai uşor. Este foarte simplu de folosit cu Node.JS sau alte proiecte ce au la bază engine-ul V8. Mai mult decât atât, poate fi inclus în proiecte oriunde dorim, fără a fi necesară rescrierea codului.

Tame poate fi găsit pe GitHub, alături de câteva notiţe lăsate de dezvoltatorii lui, cei de la OkCupid care au învăţat de-a lungul anilor foarte multe lucruri prin proiectele ambiţioasele ce le-au dezvoltat.

Eu i-am văzut o utilitate foarte mare în dezvoltarea aplicaţiilor asincrone şi în procesarea de informaţii în paralel. Pentru a vă demonstra logica din spatele TameJS, mă voi folosi chiar de exemplele oferite de ei.

Problema

Când Angel o vede pe Buffy

• Află scorul potrivirii celor doi
• Cere următoarea partidă pentru Angel
• Înregistrează vizita lui Angel şi află când s-a întâmplat acest lucru ultima dată
• Trimite-i un e-mail lui Buffy că Angel s-a uitat la ea, doar dacă :
– se potrivitesc destul de bine şi
– nu s-au uitat unul la celălalt recent

Varianta pre-asincronă

Nu este foarte complicat de înţeles codul de mai jos, defapt este chiar foarte clar că rezolvă problema propusă.

handleVisit : function(angel, buffy) {
	var match_score = getScore(angel, buffy);
	var next_match  = getNextMatch(angel);
	var visit_info  = recordVisitAndGetInfo(angel, buffy);
	if (match_score > 0.9 && ! visit_info.last_visit) {
		sendVisitorEmail(angel, buffy);
	}
	doSomeFinalThings(match_score, next_match, visit_info);
}

O variantă asincronă obişnuită

Pentru un dezvoltator de nivel mediu-ridicat, codul de mai jos nu pare foarte dificil, dar trebuie privit în perspectivă pentru a realiza că pentru o problemă destul de simplă, asincronia ne-a forţat să facem compromisuri asupra lizibilităţii codului. Ar putea apărea probleme în cadrul revizuirilor codului sau atunci când trebuie implementat ceva nou, probleme ce ar duce la deficite la optimizarea resurselor umane.

handleVisit : function(angel, buffy) {
  getScore(angel, buffy, function(match_score) {
    getNextMatch(angel, function(next_match) {
      recordVisitAndGetInfo(angel, buffy, function(visit_info) {
        if (match_score > 0.9 && ! visit_info.last_visit) {
          sendVisitorEmail(angel, buffy);
        }
        doSomeFinalThings(match_score, next_match, visit_info);
      });
    });
  });
}

Varianta asincronă, folosind TameJS

Codului nu numai că este mai uşor de înţeles, dar este şi mult mai rapid pentru că toate apelurile au loc în paralel iar abia după ce toate trei sunt executate, firul execuţiei este înaintat.

handleVisit : function(angel, buffy) {

	// executam toate 3 in paralel 
	twait {
		getScore (angel, buffy, mkevent(var score));
		getNextMatch (angel, buffy, mkevent(var next));
		recordVisitAndGetInfo (angel, buffy, mkevent(var vinfo));
	} 
	// acum avem datele necesare
	
	if (score > 0.9 && ! vinfo.last_visit) {
		sendVisitorEmail(angel, buffy);
	}
	doSomeFinalThings(score, next, vinfo);
}

Mai multe informaţii despre această librărie puteţi găsi chiar pe site-ul oficial.

Etichete: ce este tamejscum sa faci evenimente usor in javascriptdespre tamejsevenimente in javascriptnode.jstamejsTehnictutorial javascript

— Andrei Avădănei a scris 1246 articole

Andrei scrie pe worldit.info din vara lui 2011. Este fondatorul Asociatiei Centrul de Cercetare in Securitate Informatica din Romania - CCSIR si coordoneaza DefCamp, cea mai importanta conferinta de securitate informatica & hacking din Europa Centrala si de Est. Andrei ofera in cadrul Bit Sentinel servicii de securitate informatica, penetration testing, security management, recuperarea de pe urma unui atac cibernetic, training-uri si workshop-uri.

  • Articolul anterior Google Prediction API – transformă aplicaţiile inteligente în aplicaţii şi mai inteligente
  • Articolul următor Telex – un nou sistem de proxy pentru evitarea cenzurii

  • Facebook

    WorldIT.info
  • Ultimele Atacuri Cibernetice din Romania – RO Hacked

    [wp_rss_retriever url="https://rohacked.bit-sentinel.com/feed/" excerpt="none" items="5" read_more="false" new_window="true" thumbnail="false" cache="0"] RO Hacked este registrul atacurilor cibernetice din România.
  • Caută

  • Articole Recomandate

    • Recent Posts
    • Tags
    • Număr record de participanți la DefCamp 2015, cel mai important eveniment dedicat securității cibernetice din Europe Centrala si de Estdecembrie 2, 2015
    • La DefCamp 2015 vei afla prin ce tehnici pot fi evitate măsurile de securitate ale sistemelor informatice criticeoctombrie 16, 2015
    • Ultima sansa sa rezervi bilete de tip Early Bird la DefCamp 2015septembrie 1, 2015
    • 15 sfaturi despre cum poti deveni un programator bun venite de la specialisti romaniaugust 4, 2015
    • algoritmica Android antivirus Apple Avadanei Andrei benzi desenate BitDefender blog browser C++ Chrome concurs eveniment Facebook Firefox Google google chrome hacking html5 infografic informatica internet Internet Explorer IT javascript linux Microsoft Mozilla Firefox online PHP programare retea sociala review Romania securitate Tehnologie Twitter web Windows Windows 7 Wordpress WorldIT worldit.info Yahoo! YouTube
  • martie 2023
    L Ma Mi J V S D
     12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
    « dec.    
  • Link-uri Sponsorizate

    • laptop second hand

    • Calculatoare Second Hand

    • cod voucher pc garage

  • Home
  • Tehnic
  • Javascript, Ajax, jQuery
  • TameJs – o extensie Javascript pentru lucrul cu evenimente
  • Important

    • Bit Sentinel
    • Centrul de Cercetare în Securitate Informatică din România
    • DefCamp
  • Prieteni

    • BetiT.ro
    • bijuterii handmade
    • Computerica | Resurse gratuite PC
    • Descopera.org
    • Gadgeturi si IT – Giz.ro
  • Prieteni

    • PC – Config
    • RO Hacked
    • Stiri IT

Copyright © 2009-2014 WORLDIT. Toate drepturile Rezervate.
Termeni și condiții | Contact | Licența Creative Commons